summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@peacefrogs.net>2013-01-30 17:10:03 +0100
committerÉtienne Loks <etienne.loks@peacefrogs.net>2013-01-30 17:10:03 +0100
commit78e45b506e70114a98a05157aff9fd33c0b9703a (patch)
tree026e12da3a2464ac7fb5a3ffa32f0ef720d1983b
parent207f3f59280d23dbee3d7192e992c082b3008ad8 (diff)
downloadChimère-78e45b506e70114a98a05157aff9fd33c0b9703a.tar.bz2
Chimère-78e45b506e70114a98a05157aff9fd33c0b9703a.zip
Fix modification link in admin
-rw-r--r--chimere/admin.py8
-rw-r--r--chimere/models.py7
-rw-r--r--chimere/templates/admin/chimere/marker/change_form.html2
3 files changed, 13 insertions, 4 deletions
diff --git a/chimere/admin.py b/chimere/admin.py
index 0f17d30..4b83878 100644
--- a/chimere/admin.py
+++ b/chimere/admin.py
@@ -97,7 +97,8 @@ export_to_csv.short_description = _(u"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]
- if queryset.count() != 1:
+ if queryset.count() != 1 and len(set([i.ref_item or i
+ for i in queryset.all()])) != 1:
messages.error(request, _(u"Only one item can be managed at a "
u"time."))
return HttpResponseRedirect(redirect_url)
@@ -105,8 +106,9 @@ def managed_modified(modeladmin, request, queryset):
item = queryset.all()[0]
if not item.ref_item or item.ref_item == item:
try:
- item = modeladmin.model.objects.get(ref_item=item)
- except ObjectDoesNotExist:
+ item = modeladmin.model.objects.filter(ref_item=item
+ ).exclude(pk=item.pk).all()[0]
+ except IndexError:
messages.error(request, _(u"No modified item associated "
u"to the selected item."))
return HttpResponseRedirect(redirect_url)
diff --git a/chimere/models.py b/chimere/models.py
index 445221b..79252f6 100644
--- a/chimere/models.py
+++ b/chimere/models.py
@@ -334,6 +334,13 @@ class GeographicItem(models.Model):
self.import_key = new_keys
self.save()
+ def has_modified(self):
+ if (self.ref_item and self.ref_item != self) \
+ or self.__class__.objects.filter(ref_item=self
+ ).exclude(pk=self.pk).count():
+ return True
+ return False
+
@classmethod
def properties(cls):
return [pm for pm in PropertyModel.objects.filter(available=True)]
diff --git a/chimere/templates/admin/chimere/marker/change_form.html b/chimere/templates/admin/chimere/marker/change_form.html
index 5e8cfaf..3b3d238 100644
--- a/chimere/templates/admin/chimere/marker/change_form.html
+++ b/chimere/templates/admin/chimere/marker/change_form.html
@@ -1,7 +1,7 @@
{% extends "admin/change_form.html" %}
{% load i18n %}
{% block field_sets %}
-{% if original.ref_item and original.ref_item != original %}
+{% if original.has_modified %}
<p class='errornote'>
{% url admin:admin-modification object_id as rapprochement_form %}
{% blocktrans %}