summaryrefslogtreecommitdiff
path: root/chimere/views.py
diff options
context:
space:
mode:
Diffstat (limited to 'chimere/views.py')
-rw-r--r--chimere/views.py39
1 files changed, 21 insertions, 18 deletions
diff --git a/chimere/views.py b/chimere/views.py
index c1e2076..9fa4433 100644
--- a/chimere/views.py
+++ b/chimere/views.py
@@ -270,7 +270,9 @@ def get_edit_page(redirect_url, item_cls, item_form,
else:
listed_subcats = None
# if an item_id is provided: modification
+ response_dct['item_id'] = item_id
init_item, ref_item = None, None
+ has_multimediafile_formset = True
if item_id:
try:
init_item = item_cls.objects.get(pk=item_id)
@@ -284,9 +286,9 @@ def get_edit_page(redirect_url, item_cls, item_form,
if modified_item.count():
init_item = modified_item.all()[0]
response_dct['is_modification'] = True
+ # no new submission on modification
+ has_multimediafile_formset = False
- init_multi = init_item.get_init_multi() if init_item else None
- init_picture = init_item.get_init_picture() if init_item else None
if init_item and not request.user.is_superuser and \
not init_item.submiter_session_key == \
request.session.session_key:
@@ -294,6 +296,7 @@ def get_edit_page(redirect_url, item_cls, item_form,
for k in ('submiter_name', 'submiter_email', 'submiter_comment'):
setattr(init_item, k, '')
response_dct['is_superuser'] = request.user.is_superuser
+ formset_multi, formset_picture = None, None
# If the form has been submited
if request.method == 'POST':
inst = None
@@ -306,15 +309,15 @@ def get_edit_page(redirect_url, item_cls, item_form,
form = item_form(request.POST, request.FILES, instance=inst,
subcategories=listed_subcats,
area_name=area_name)
- formset_multi = multimediafile_formset(
- request.POST, request.FILES, initial=init_multi,
- prefix='multimedia')
- formset_picture = picturefile_formset(
- request.POST, request.FILES, initial=init_picture,
- prefix='picture')
+ if has_multimediafile_formset:
+ formset_multi = multimediafile_formset(
+ request.POST, request.FILES, prefix='multimedia')
+ formset_picture = picturefile_formset(
+ request.POST, request.FILES, prefix='picture')
# All validation rules pass
- if form.is_valid() and formset_multi.is_valid() and \
- formset_picture.is_valid():
+ if form.is_valid() and (
+ not formset_multi or formset_multi.is_valid()) and (
+ not formset_picture or formset_picture.is_valid()):
item = form.save()
# set the session key (to permit modifications)
item.submiter_session_key = request.session.session_key
@@ -335,11 +338,12 @@ def get_edit_page(redirect_url, item_cls, item_form,
if item:
# manage multimedia items
- for f in formset_multi:
- f.save(item)
+ if has_multimediafile_formset:
+ for f in formset_multi:
+ f.save(item)
- for f in formset_picture:
- f.save(item)
+ for f in formset_picture:
+ f.save(item)
base_uri = get_base_uri(request)
forms.notifySubmission(base_uri, item)
response_dct = get_base_response(request, area_name)
@@ -354,10 +358,9 @@ def get_edit_page(redirect_url, item_cls, item_form,
else:
form = item_form(instance=init_item, subcategories=listed_subcats,
area_name=area_name)
- formset_multi = multimediafile_formset(initial=init_multi,
- prefix='multimedia')
- formset_picture = picturefile_formset(initial=init_picture,
- prefix='picture')
+ if has_multimediafile_formset:
+ formset_multi = multimediafile_formset(prefix='multimedia')
+ formset_picture = picturefile_formset(prefix='picture')
return None, (item_id, init_item, response_dct, form, formset_multi,
formset_picture), subcategories
return func