diff options
Diffstat (limited to 'chimere/views.py')
| -rw-r--r-- | chimere/views.py | 39 |
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 |
