diff options
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 |
commit | 78e45b506e70114a98a05157aff9fd33c0b9703a (patch) | |
tree | 026e12da3a2464ac7fb5a3ffa32f0ef720d1983b /chimere | |
parent | 207f3f59280d23dbee3d7192e992c082b3008ad8 (diff) | |
download | Chimère-78e45b506e70114a98a05157aff9fd33c0b9703a.tar.bz2 Chimère-78e45b506e70114a98a05157aff9fd33c0b9703a.zip |
Fix modification link in admin
Diffstat (limited to 'chimere')
-rw-r--r-- | chimere/admin.py | 8 | ||||
-rw-r--r-- | chimere/models.py | 7 | ||||
-rw-r--r-- | chimere/templates/admin/chimere/marker/change_form.html | 2 |
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 %} |