diff options
| -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 %}  | 
