Code

Ticket #2856: t2856.diff

File t2856.diff, 1.5 KB (added by seveas, 5 years ago)

Backwards compatible patch

Line 
1Index: django/contrib/admin/templates/admin/index.html
2===================================================================
3--- django/contrib/admin/templates/admin/index.html     (revision 11211)
4+++ django/contrib/admin/templates/admin/index.html     (working copy)
5@@ -63,7 +63,11 @@
6                 {% if entry.is_deletion %}
7                     {{ entry.object_repr }}
8                 {% else %}
9-                    <a href="{{ entry.get_admin_url }}">{{ entry.object_repr }}</a>
10+                    {% if entry.edited_object_still_exists %}
11+                        <a href="{{ entry.get_admin_url }}">{{ entry.object_repr }}</a>
12+                    {% else %}
13+                        {{ entry.object_repr }}
14+                    {% endif %}
15                 {% endif %}
16                 <br/>
17                 {% if entry.content_type %}
18Index: django/contrib/admin/models.py
19===================================================================
20--- django/contrib/admin/models.py      (revision 11211)
21+++ django/contrib/admin/models.py      (working copy)
22@@ -52,3 +52,11 @@
23         This is relative to the Django admin index page.
24         """
25         return mark_safe(u"%s/%s/%s/" % (self.content_type.app_label, self.content_type.model, quote(self.object_id)))
26+
27+    def edited_object_still_exists(self):
28+        "Check whether the edited object has been removed by a subsequent action"
29+        try:
30+            self.content_type.get_object_for_this_type(pk=self.object_id)
31+            return True
32+        except Exception:
33+            return False