diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2017-03-04 17:47:41 +0100 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2017-03-04 17:47:41 +0100 |
commit | 8ac3f9172ad9caad17857ad89f1986b335e22d3d (patch) | |
tree | c3627b95794f5480bf8da0919d0a152f5f55e208 | |
parent | aa2f0af0e4d5305b06d58d2819b59baaa022ef53 (diff) | |
download | Chimère-8ac3f9172ad9caad17857ad89f1986b335e22d3d.tar.bz2 Chimère-8ac3f9172ad9caad17857ad89f1986b335e22d3d.zip |
Admin: fix merge form for polygons and routes
-rw-r--r-- | chimere/admin.py | 15 | ||||
-rw-r--r-- | chimere/templates/admin/chimere/managed_modified.html | 72 | ||||
-rw-r--r-- | chimere/templates/admin/chimere/marker/change_form.html | 8 | ||||
-rw-r--r--[l---------] | chimere/templates/admin/chimere/route/change_form.html | 15 | ||||
-rw-r--r-- | chimere/templatetags/chimere_tags.py | 2 |
5 files changed, 69 insertions, 43 deletions
diff --git a/chimere/admin.py b/chimere/admin.py index 333db6d..03ed60d 100644 --- a/chimere/admin.py +++ b/chimere/admin.py @@ -107,7 +107,7 @@ export_to_csv.short_description = _("Export to CSV") def managed_modified(modeladmin, request, queryset): # not very clean... There is must be a better way to do that - redirect_url = request.get_full_path().split('admin_modification')[0] + redirect_url = request.get_full_path().split('admin-')[0] if queryset.count() != 1 and len(set([i.ref_item or i for i in queryset.all()])) != 1: messages.error(request, _("Only one item can be managed at a " @@ -311,7 +311,6 @@ POLYGON_FIELDSETS = deepcopy(MARKER_FIELDSETS) POLYGON_FIELDSETS[0][1]['fields'][0] = 'polygon' POLYGON_FIELDSETS[0][1]['fields'].pop(POLYGON_FIELDSETS[0][1]['fields'].index( 'description')) -POLYGON_FIELDSETS.pop(3) class MarkerAdmin(admin.ModelAdmin): @@ -371,11 +370,12 @@ class MarkerAdmin(admin.ModelAdmin): def get_urls(self): from django.conf.urls import patterns, url urls = super(MarkerAdmin, self).get_urls() + model_name = self.model.__name__.lower() my_urls = patterns( '', - url(r'^admin_modification/(?P<item_id>\d+)/$', + url(r'^admin-{}-modification/(?P<item_id>\d+)/$'.format(model_name), self.admin_site.admin_view(self.admin_modification), - name='admin-modification'), + name='admin-{}-modification'.format(model_name)), ) return my_urls + urls @@ -464,6 +464,13 @@ class PolygonAdmin(MarkerAdmin): fieldsets = POLYGON_FIELDSETS geo_type = 'polygon' + def admin_modification(self, request, item_id): + """ + Redirect to the polygon modification form + """ + return managed_modified(self, request, + models.Polygon.objects.filter(pk=item_id)) + class LayerInline(admin.TabularInline): model = AreaLayers diff --git a/chimere/templates/admin/chimere/managed_modified.html b/chimere/templates/admin/chimere/managed_modified.html index 6933abb..ebfe660 100644 --- a/chimere/templates/admin/chimere/managed_modified.html +++ b/chimere/templates/admin/chimere/managed_modified.html @@ -2,46 +2,50 @@ {% load chimere_tags i18n admin_static %} {% block extrahead %} -<link rel="stylesheet" type="text/css" href="{% static "admin/css/forms.css" %}" /> +<link rel="stylesheet" type="text/css" href="{% static 'admin/css/forms.css' %}" /> <script src="http://www.openlayers.org/api/OpenLayers.js"></script> {% endblock %} {% block content %} <p class='errornote'>{% trans "Be careful: after validation, the modified item will be deleted. There is no roll-back." %}</p> -<fieldset class='module'> <form method='POST' action='.'> -{% csrf_token %} -<input type='hidden' name='action' value='managed_modified'/> -<input type='hidden' name='rapprochement' value='1'/> -<input type='hidden' name='_selected_action' value='{{item.pk}}'/> -<table> -<thead> -<tr><th> </th><th>{% trans "Reference" %}</th><th>{% trans "Modified item" %}</th><th>{% trans "Accept modification" %}</th></tr> -</thead> -<tbody> -<tr><th>{% trans "Name" %}</th><td>{{item_ref}}</td><td>{{item}}</td><td><input type='checkbox' name='name'/></td></tr> -<tr> - <th>{% trans "Categories" %}</th> - <td>{% for cat in item_ref.categories.all %}{%if forloop.counter0 %}, {%endif%}{{cat}}{%endfor%}</td> - <td>{% for cat in item.categories.all %}{%if forloop.counter0 %}, {%endif%}{{cat}}{%endfor%}</td> - <td><input type='checkbox' name='categories'/></td> -</tr> -<tr><th>{% trans "Emplacement" %}</th><td>{{item_ref|ol_map:'map_ref_id'}}</td><td>{{item|ol_map:'map_id'}}</td><td><input type='checkbox' name='{{item.geom_attr}}'/></td></tr> -<tr><th>{% trans "Description" %}</th><td>{{item_ref.description|safe}}</td><td>{{item.description|safe}}</td><td><input type='checkbox' name='description'/></td></tr> -{% for property_ref in item_ref.getProperties %} -{% for property in item.getProperties %} -{% ifequal property_ref.propertymodel property.propertymodel %} -<tr><th>{{property.propertymodel.name}}</th><td>{{property_ref.value|safe}}</td><td>{{property.value|safe}}</td><td><input type='checkbox' name='property_{{property.propertymodel.pk}}'/></td></tr> -{% endifequal %} -{% endfor %} -{% endfor %} -</tbody> -</table> -</fieldset> -<div class='submit-row'> -<p class='deletelink-box'><a href="{% if item.point %}{% url 'admin:chimere_marker_changelist' %}{%else%}{% url 'admin:chimere_route_changelist' %}{%endif%}">{% trans "Back to list" %}</a></p> -<input class='default' type='submit' value='{% trans "Validate" %}'/> -</div> + {% csrf_token %} + <fieldset class='module'> + <input type='hidden' name='action' value='managed_modified'/> + <input type='hidden' name='rapprochement' value='1'/> + <input type='hidden' name='_selected_action' value='{{item.pk}}'/> + <table> + <thead> + <tr><th> </th><th>{% trans "Reference" %}</th><th>{% trans "Modified item" %}</th><th>{% trans "Accept modification" %}</th></tr> + </thead> + <tbody> + <tr><th>{% trans "Name" %}</th><td>{{item_ref}}</td><td>{{item}}</td><td><input type='checkbox' name='name'/></td></tr> + <tr> + <th>{% trans "Categories" %}</th> + <td>{% for cat in item_ref.categories.all %}{%if forloop.counter0 %}, {%endif%}{{cat}}{%endfor%}</td> + <td>{% for cat in item.categories.all %}{%if forloop.counter0 %}, {%endif%}{{cat}}{%endfor%}</td> + <td><input type='checkbox' name='categories'/></td> + </tr> + <tr><th>{% trans "Emplacement" %}</th><td>{{item_ref|ol_map:'map_ref_id'}}</td><td>{{item|ol_map:'map_id'}}</td><td><input type='checkbox' name='{{item.geom_attr}}'/></td></tr> + <tr><th>{% trans "Description" %}</th><td>{{item_ref.description|safe}}</td><td>{{item.description|safe}}</td><td><input type='checkbox' name='description'/></td></tr> + {% for property_ref in item_ref.getProperties %} + {% for property in item.getProperties %} + {% ifequal property_ref.propertymodel property.propertymodel %} + <tr><th>{{property.propertymodel.name}}</th><td>{{property_ref.value|safe}}</td><td>{{property.value|safe}}</td><td><input type='checkbox' name='property_{{property.propertymodel.pk}}'/></td></tr> + {% endifequal %} + {% endfor %} + {% endfor %} + </tbody> + </table> + </fieldset> + <div class='submit-row'> + <p class='deletelink-box'> + <a href="{% if item.point %}{% url 'admin:chimere_marker_changelist' %}{% elif item.route %}{% url 'admin:chimere_route_changelist' %}{%else%}{% url 'admin:chimere_polygon_changelist' %}{%endif%}"> + {% trans "Back to list" %} + </a> + </p> + <input class='default' type='submit' value='{% trans "Validate" %}'/> + </div> </form> {% endblock %} diff --git a/chimere/templates/admin/chimere/marker/change_form.html b/chimere/templates/admin/chimere/marker/change_form.html index 808d3f8..21050bd 100644 --- a/chimere/templates/admin/chimere/marker/change_form.html +++ b/chimere/templates/admin/chimere/marker/change_form.html @@ -3,10 +3,10 @@ {% block field_sets %} {% if original.has_modified %} <p class='errornote'> -{% url 'admin:admin-modification' object_id as rapprochement_form %} -{% blocktrans %} -This item has a reference item associated to it. You should treat it via the <a href='{{ rapprochement_form }}'>rapprochement form</a>. -{% endblocktrans %} + {% url 'admin:admin-marker-modification' object_id as rapprochement_form %} + {% blocktrans %} + This item has a reference item associated to it. You should treat it via the <a href='{{ rapprochement_form }}'>rapprochement form</a>. + {% endblocktrans %} </p> {% endif %} {{ block.super }} diff --git a/chimere/templates/admin/chimere/route/change_form.html b/chimere/templates/admin/chimere/route/change_form.html index 21811b6..46ff490 120000..100644 --- a/chimere/templates/admin/chimere/route/change_form.html +++ b/chimere/templates/admin/chimere/route/change_form.html @@ -1 +1,14 @@ -../marker/change_form.html
\ No newline at end of file +{% extends "admin/change_form.html" %} +{% load i18n %} +{% block field_sets %} +{% if original.has_modified %} +<p class='errornote'> + {% url 'admin:admin-route-modification' object_id as rapprochement_form %} + {% blocktrans %} + This item has a reference item associated to it. You should treat it via the <a href='{{ rapprochement_form }}'>rapprochement form</a>. + {% endblocktrans %} +</p> +{% endif %} +{{ block.super }} +{% endblock %} + diff --git a/chimere/templatetags/chimere_tags.py b/chimere/templatetags/chimere_tags.py index c5cd555..1d15997 100644 --- a/chimere/templatetags/chimere_tags.py +++ b/chimere/templatetags/chimere_tags.py @@ -372,6 +372,8 @@ def ol_map(item, arg='map_id'): geom = item.point elif hasattr(item, 'route'): geom = item.route + elif hasattr(item, 'polygon'): + geom = item.polygon rendered = render_to_string('chimere/blocks/ol_map.html', {'geom': geom, 'map_id': arg}) return rendered |