diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2018-03-15 17:06:16 +0100 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2018-03-15 17:06:16 +0100 |
commit | 1719529c4ec08f9894002597eeb11bdcbbfe0b17 (patch) | |
tree | 520d3fb9df1058c632aeb36e5b82eb0b5bf1821d | |
parent | 9d8fa703deef65d1bd3db9b1f811618bfee5a5c7 (diff) | |
download | Chimère-1719529c4ec08f9894002597eeb11bdcbbfe0b17.tar.bz2 Chimère-1719529c4ec08f9894002597eeb11bdcbbfe0b17.zip |
Fix propose modification
-rw-r--r-- | chimere/admin.py | 7 | ||||
-rw-r--r-- | chimere/forms.py | 8 | ||||
-rw-r--r-- | chimere/static/chimere/css/styles.css | 4 | ||||
-rw-r--r-- | chimere/static/saclay/js/interface.js | 84 | ||||
-rw-r--r-- | chimere/templates/chimere/detail.html | 19 | ||||
-rw-r--r-- | chimere/templates/chimere/edit.html | 3 | ||||
-rw-r--r-- | chimere/views.py | 39 |
7 files changed, 81 insertions, 83 deletions
diff --git a/chimere/admin.py b/chimere/admin.py index c63a7fb..04a438a 100644 --- a/chimere/admin.py +++ b/chimere/admin.py @@ -33,7 +33,7 @@ from django.core.exceptions import ObjectDoesNotExist from django.db.models import Q from django import forms from django.http import HttpResponse, HttpResponseRedirect -from django.shortcuts import render_to_response +from django.shortcuts import render from django.template import RequestContext from django.utils.translation import ugettext_lazy as _ try: @@ -171,9 +171,8 @@ def managed_modified(modeladmin, request, queryset): item.delete() messages.success(request, _("Modified item traited.")) return HttpResponseRedirect(redirect_url) - return render_to_response('admin/chimere/managed_modified.html', - {'item': item, 'item_ref': item_ref}, - context_instance=RequestContext(request)) + return render(request, 'admin/chimere/managed_modified.html', + {'item': item, 'item_ref': item_ref}) managed_modified.short_description = _("Managed modified items") diff --git a/chimere/forms.py b/chimere/forms.py index adf8687..301677b 100644 --- a/chimere/forms.py +++ b/chimere/forms.py @@ -412,7 +412,7 @@ class MarkerAdminFormBase(forms.ModelForm): raise forms.ValidationError(msg) categories = self.cleaned_data.get('categories', []) for pm in self.pms: - if not pm.mandatory or self.cleaned_data[pm.getNamedId()]: + if not pm.mandatory or self.cleaned_data.get(pm.getNamedId(), None): continue pm_cats = pm.subcategories.all() if not pm_cats or \ @@ -705,12 +705,15 @@ class MultimediaFileForm(BaseFileForm): """ Form for a multimedia file """ + name = forms.CharField(label=_("Name"), required=True, max_length=150, + initial="-") _related_name = 'multimedia_files' class Meta: model = MultimediaFile exclude = ('order', 'miniature', 'multimedia_type') + MultimediaFileFormSet = formset_factory(MultimediaFileForm, can_delete=True) @@ -730,6 +733,8 @@ class PictureFileForm(BaseFileForm): """ Form for a picture file """ + name = forms.CharField(label=_("Name"), required=True, max_length=150, + initial="-") _related_name = 'pictures' class Meta: @@ -737,6 +742,7 @@ class PictureFileForm(BaseFileForm): exclude = ('order', 'height', 'width', 'thumbnailfile', 'thumbnailfile_height', 'thumbnailfile_width', 'miniature') + PictureFileFormSet = formset_factory(PictureFileForm, can_delete=True) diff --git a/chimere/static/chimere/css/styles.css b/chimere/static/chimere/css/styles.css index 92da25e..edd48c9 100644 --- a/chimere/static/chimere/css/styles.css +++ b/chimere/static/chimere/css/styles.css @@ -636,6 +636,10 @@ div#sidebar-container{ vertical-align: baseline; } +#detail div.detail-icon-default{ + margin-top: 12px; +} + #detail_footer, #detail-content .full-description{ padding: 0.5em 1.4em; } diff --git a/chimere/static/saclay/js/interface.js b/chimere/static/saclay/js/interface.js index b22b9e1..2463b60 100644 --- a/chimere/static/saclay/js/interface.js +++ b/chimere/static/saclay/js/interface.js @@ -21,35 +21,43 @@ var register_subactions = function(){ }); }; -var update_editmarker = function(){ - /*$("#main-map").chimere('cleanRoute'); - $('.map_button').hide(); - if($('#multimedia_form').length) $('#multimedia_form').remove(); - $('#action-edit-event').removeClass('state-active'); - $('#action-edit-route').removeClass('state-active'); - $('#action-edit-marker').addClass('state-active'); - $('#frm-edit-route').hide(); - $('#frm-edit-event').hide(); - $('#frm-edit-marker').show(); - - $('#message').removeClass(); - $('#message').addClass('alert'); - $('#message').addClass('alert-info'); - $('#message .content').html(msg_edit); - $('#message').show(); -*/ - $.ajax({url: edit_url, +var update_edit = function(url){ + $.ajax({url: url, dataType: "html", success: function (data) { $("#modal-edit .modal-body").html(data); }, error: function (data) { - $('#frm-edit-marker').html("<p class='warning'>"+ - default_error_message+"</p>"); + alert("<p class='warning'>" + default_error_message + "</p>"); } - }); + }); +}; + +var update_editmarker = function(item_id){ + var url = edit_url; + if(item_id){ + url += item_id + "/"; + } + update_edit(url); +}; + +var update_editroute = function(item_id){ + var url = edit_route_url; + if(item_id){ + url += item_id + "/"; + } + update_edit(url); +}; + +var update_editpolygon = function(item_id){ + var url = edit_polygon_url; + if(item_id){ + url += item_id + "/"; + } + update_edit(url); }; + var update_editevent = function(){ $("#main-map").chimere('cleanRoute'); $('.map_button').hide(); @@ -82,40 +90,6 @@ var update_editevent = function(){ }); }; -var update_editroute = function(){ - $('.map_button').show(); - if($('#multimedia_form').length) $('#multimedia_form').remove(); - $('#action-edit-marker').removeClass('state-active'); - $('#action-edit-event').removeClass('state-active'); - $('#action-edit-route').addClass('state-active'); - $('#frm-edit-marker').hide(); - $('#frm-edit-event').hide(); - $('#frm-edit-route').show(); - $('#chimere_itinerary').hide(); - $('#chimere_itinerary_form').show(); - - $('#message').removeClass(); - $('#message').addClass('alert'); - $('#message').addClass('alert-info'); - $('#message .content').html(msg_edit_route); - $('#message').show(); - - $.ajax({url: edit_route_url, - dataType: "html", - success: function (data) { - $('#frm-edit-marker').html(''); - $('#frm-edit-event').html(''); - $('#frm-edit-route').html(data); - $("#main-map").chimere('cleanMarker'); - $("#main-map").chimere('activateRouteEdit'); - }, - error: function (data) { - $('#frm-edit-route').html("<p class='warning'>"+ - default_error_message+"</p>"); - } - }); -}; - var action_map = function(){ $('#main-map').chimere('deactivateEdition'); $('#message').hide(); diff --git a/chimere/templates/chimere/detail.html b/chimere/templates/chimere/detail.html index 1fa9bf8..1ea8a1e 100644 --- a/chimere/templates/chimere/detail.html +++ b/chimere/templates/chimere/detail.html @@ -14,7 +14,7 @@ <img src="{{category.menu_icon.image.url}}"> </div> {% elif category.icon.image %} - <div class="col-xs-2"> + <div class="col-xs-2 detail-icon-default"> <img src="{{category.icon.image.url}}"> </div> {% endif %} @@ -69,9 +69,8 @@ | <a class='detail_to' href='#'>{% trans "To" context "routing" %}</a> {% endif %} </div> - <a class="propose-modif current-detail-bg" - href='{% if marker.route %}{% url "chimere:editroute-item" area_name_slash|default_if_none:"" marker.route.pk "" %}{%else%}{% url 'chimere:editmarker-item' area_name_slash|default_if_none:"" marker.pk "" %}{%endif%}'> - {% trans "Submit a modification" %} + <a class="propose-modif current-detail-bg" href='#'> + {% trans "Submit a modification" %} </a> </div> @@ -87,6 +86,18 @@ $(function () { $("#share-bar-content").html() ); }); + $(".propose-modif").click(function(){ + {% if marker.route %} + update_editroute("{{marker.pk}}"); + {% elif marker.polygon %} + update_editpolygon("{{marker.pk}}"); + {% else %} + update_editmarker("{{marker.pk}}"); + {% endif %} + $("#modal-edit").modal('show');; + + return false; + }); $(".rslides").responsiveSlides({ pager: true, auto:false diff --git a/chimere/templates/chimere/edit.html b/chimere/templates/chimere/edit.html index 9e2ab9b..9337489 100644 --- a/chimere/templates/chimere/edit.html +++ b/chimere/templates/chimere/edit.html @@ -18,7 +18,8 @@ {% endfor %} {% endblock %} <form enctype="multipart/form-data" method='post' - action='{% block edit_url %}{% url "editmarker" %}{% endblock %}' id='proposition_form'> + action='{% block edit_url %}{% url "editmarker" %}{% endblock %}{% if item_id %}{{item_id}}/{% endif %}' + id='proposition_form'> {% csrf_token %} <p>* {% trans "indicates a mandatory field" %}</p> 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 |