summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
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
commit1719529c4ec08f9894002597eeb11bdcbbfe0b17 (patch)
tree520d3fb9df1058c632aeb36e5b82eb0b5bf1821d
parent9d8fa703deef65d1bd3db9b1f811618bfee5a5c7 (diff)
downloadChimère-1719529c4ec08f9894002597eeb11bdcbbfe0b17.tar.bz2
Chimère-1719529c4ec08f9894002597eeb11bdcbbfe0b17.zip
Fix propose modification
-rw-r--r--chimere/admin.py7
-rw-r--r--chimere/forms.py8
-rw-r--r--chimere/static/chimere/css/styles.css4
-rw-r--r--chimere/static/saclay/js/interface.js84
-rw-r--r--chimere/templates/chimere/detail.html19
-rw-r--r--chimere/templates/chimere/edit.html3
-rw-r--r--chimere/views.py39
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