Fixed the breadcrumb of the object_history template.

NOTE: this could conflict with projects that use django-reversion,
if the `VersionAdmin` is the last in the inheritance chain.
This commit is contained in:
Diederik van der Boor
2016-02-18 18:17:08 +01:00
parent 88bb23b506
commit ccda52d91e
4 changed files with 55 additions and 2 deletions
+29
View File
@@ -525,6 +525,25 @@ class PolymorphicChildModelAdmin(admin.ModelAdmin):
"admin/delete_confirmation.html"
]
@property
def object_history_template(self):
opts = self.model._meta
app_label = opts.app_label
# Pass the base options
base_opts = self.base_model._meta
base_app_label = base_opts.app_label
return [
"admin/%s/%s/object_history.html" % (app_label, opts.object_name.lower()),
"admin/%s/object_history.html" % app_label,
# Added:
"admin/%s/%s/object_history.html" % (base_app_label, base_opts.object_name.lower()),
"admin/%s/object_history.html" % base_app_label,
"admin/polymorphic/object_history.html",
"admin/object_history.html"
]
def render_change_form(self, request, context, add=False, change=False, form_url='', obj=None):
context.update({
'base_opts': self.base_model._meta,
@@ -537,6 +556,16 @@ class PolymorphicChildModelAdmin(admin.ModelAdmin):
}
return super(PolymorphicChildModelAdmin, self).delete_view(request, object_id, extra_context)
def history_view(self, request, object_id, extra_context=None):
# Make sure the history view can also display polymorphic breadcrumbs
context = {
'base_opts': self.base_model._meta,
}
if extra_context:
context.update(extra_context)
return super(PolymorphicChildModelAdmin, self).history_view(request, object_id, extra_context=context)
# ---- Extra: improving the form/fieldset default display ----
def get_fieldsets(self, request, obj=None):
@@ -0,0 +1,6 @@
{% extends "admin/object_history.html" %}
{% load polymorphic_admin_tags %}
{% block breadcrumbs %}
{% breadcrumb_scope base_opts %}{{ block.super }}{% endbreadcrumb_scope %}
{% endblock %}