summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
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
commit8ac3f9172ad9caad17857ad89f1986b335e22d3d (patch)
treec3627b95794f5480bf8da0919d0a152f5f55e208
parentaa2f0af0e4d5305b06d58d2819b59baaa022ef53 (diff)
downloadChimère-8ac3f9172ad9caad17857ad89f1986b335e22d3d.tar.bz2
Chimère-8ac3f9172ad9caad17857ad89f1986b335e22d3d.zip
Admin: fix merge form for polygons and routes
-rw-r--r--chimere/admin.py15
-rw-r--r--chimere/templates/admin/chimere/managed_modified.html72
-rw-r--r--chimere/templates/admin/chimere/marker/change_form.html8
-rw-r--r--[l---------]chimere/templates/admin/chimere/route/change_form.html15
-rw-r--r--chimere/templatetags/chimere_tags.py2
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>&nbsp;</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>&nbsp;</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