From 9d9f0acd7e245c9f9c30727a003666618754c924 Mon Sep 17 00:00:00 2001 From: Nick Sandford Date: Fri, 25 Jul 2014 13:07:04 +0100 Subject: [PATCH] Fixed #13163 -- Added ability to show change links on inline objects in admin. Thanks DrMeers for the suggestion. --- django/contrib/admin/options.py | 2 ++ django/contrib/admin/sites.py | 6 ++++ .../contrib/admin/static/admin/css/base.css | 2 +- .../templates/admin/edit_inline/stacked.html | 5 +-- .../templates/admin/edit_inline/tabular.html | 7 ++-- docs/ref/contrib/admin/index.txt | 7 ++++ docs/releases/1.8.txt | 4 +++ tests/admin_inlines/admin.py | 3 ++ tests/admin_inlines/tests.py | 36 ++++++++++++++++++- tests/admin_ordering/tests.py | 10 +++--- tests/admin_registration/tests.py | 9 +++++ tests/generic_inline_admin/tests.py | 3 +- 12 files changed, 81 insertions(+), 13 deletions(-) diff --git a/django/contrib/admin/options.py b/django/contrib/admin/options.py index 16be58e15d..f304be0b81 100644 --- a/django/contrib/admin/options.py +++ b/django/contrib/admin/options.py @@ -1721,6 +1721,7 @@ class InlineModelAdmin(BaseModelAdmin): verbose_name = None verbose_name_plural = None can_delete = True + show_change_link = False checks_class = InlineModelAdminChecks @@ -1728,6 +1729,7 @@ class InlineModelAdmin(BaseModelAdmin): self.admin_site = admin_site self.parent_model = parent_model self.opts = self.model._meta + self.has_registered_model = admin_site.is_registered(self.model) super(InlineModelAdmin, self).__init__() if self.verbose_name is None: self.verbose_name = self.model._meta.verbose_name diff --git a/django/contrib/admin/sites.py b/django/contrib/admin/sites.py index 84778849e9..666f1da1fc 100644 --- a/django/contrib/admin/sites.py +++ b/django/contrib/admin/sites.py @@ -114,6 +114,12 @@ class AdminSite(object): raise NotRegistered('The model %s is not registered' % model.__name__) del self._registry[model] + def is_registered(self, model): + """ + Check if a model class is registered with this `AdminSite`. + """ + return model in self._registry + def add_action(self, action, name=None): """ Register an action to be available globally. diff --git a/django/contrib/admin/static/admin/css/base.css b/django/contrib/admin/static/admin/css/base.css index ca9fa501ea..3042ae0d62 100644 --- a/django/contrib/admin/static/admin/css/base.css +++ b/django/contrib/admin/static/admin/css/base.css @@ -632,7 +632,7 @@ div.breadcrumbs { background: url(../img/icon_addlink.gif) 0 .2em no-repeat; } -.changelink { +.changelink, .inlinechangelink { padding-left: 12px; background: url(../img/icon_changelink.gif) 0 .2em no-repeat; } diff --git a/django/contrib/admin/templates/admin/edit_inline/stacked.html b/django/contrib/admin/templates/admin/edit_inline/stacked.html index 79c052c6c5..9d58146588 100644 --- a/django/contrib/admin/templates/admin/edit_inline/stacked.html +++ b/django/contrib/admin/templates/admin/edit_inline/stacked.html @@ -1,11 +1,12 @@ -{% load i18n admin_static %} +{% load i18n admin_urls admin_static %}

{{ inline_admin_formset.opts.verbose_name_plural|capfirst }}

{{ inline_admin_formset.formset.management_form }} {{ inline_admin_formset.formset.non_form_errors }} {% for inline_admin_form in inline_admin_formset %}
-

{{ inline_admin_formset.opts.verbose_name|capfirst }}: {% if inline_admin_form.original %}{{ inline_admin_form.original }}{% else %}#{{ forloop.counter }}{% endif %} +

{{ inline_admin_formset.opts.verbose_name|capfirst }}: {% if inline_admin_form.original %}{{ inline_admin_form.original }}{% if inline_admin_form.model_admin.show_change_link and inline_admin_form.model_admin.has_registered_model %} {% trans "Change" %}{% endif %} +{% else %}#{{ forloop.counter }}{% endif %} {% if inline_admin_form.show_url %}{% trans "View on site" %}{% endif %} {% if inline_admin_formset.formset.can_delete and inline_admin_form.original %}{{ inline_admin_form.deletion_field.field }} {{ inline_admin_form.deletion_field.label_tag }}{% endif %}

diff --git a/django/contrib/admin/templates/admin/edit_inline/tabular.html b/django/contrib/admin/templates/admin/edit_inline/tabular.html index 4548af45dc..c1a07cf76f 100644 --- a/django/contrib/admin/templates/admin/edit_inline/tabular.html +++ b/django/contrib/admin/templates/admin/edit_inline/tabular.html @@ -1,4 +1,4 @@ -{% load i18n admin_static admin_modify %} +{% load i18n admin_urls admin_static admin_modify %}