From 3e7cf416f16434f9269dab4b28bb4a57a53ac24c Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Thu, 19 Nov 2020 11:49:37 -0500 Subject: [PATCH] Update ObjectChangeLogView to use "object" context var --- netbox/dcim/urls.py | 2 +- netbox/dcim/views.py | 6 +++++- netbox/extras/views.py | 17 +++++++---------- netbox/templates/extras/object_changelog.html | 3 +-- 4 files changed, 14 insertions(+), 14 deletions(-) diff --git a/netbox/dcim/urls.py b/netbox/dcim/urls.py index 2cd2ed27b..d167ebdb7 100644 --- a/netbox/dcim/urls.py +++ b/netbox/dcim/urls.py @@ -197,7 +197,7 @@ urlpatterns = [ path('devices//device-bays/', views.DeviceDeviceBaysView.as_view(), name='device_devicebays'), path('devices//inventory/', views.DeviceInventoryView.as_view(), name='device_inventory'), path('devices//config-context/', views.DeviceConfigContextView.as_view(), name='device_configcontext'), - path('devices//changelog/', ObjectChangeLogView.as_view(), name='device_changelog', kwargs={'model': Device}), + path('devices//changelog/', views.DeviceChangeLogView.as_view(), name='device_changelog', kwargs={'model': Device}), path('devices//status/', views.DeviceStatusView.as_view(), name='device_status'), path('devices//lldp-neighbors/', views.DeviceLLDPNeighborsView.as_view(), name='device_lldp_neighbors'), path('devices//config/', views.DeviceConfigView.as_view(), name='device_config'), diff --git a/netbox/dcim/views.py b/netbox/dcim/views.py index 79738af07..f8fb415ea 100644 --- a/netbox/dcim/views.py +++ b/netbox/dcim/views.py @@ -12,7 +12,7 @@ from django.utils.safestring import mark_safe from django.views.generic import View from circuits.models import Circuit -from extras.views import ObjectConfigContextView +from extras.views import ObjectChangeLogView, ObjectConfigContextView from ipam.models import IPAddress, Prefix, Service, VLAN from ipam.tables import InterfaceIPAddressTable, InterfaceVLANTable from netbox.views import generic @@ -1288,6 +1288,10 @@ class DeviceConfigContextView(ObjectConfigContextView): base_template = 'dcim/device/base.html' +class DeviceChangeLogView(ObjectChangeLogView): + base_template = 'dcim/device/base.html' + + class DeviceEditView(generic.ObjectEditView): queryset = Device.objects.all() model_form = forms.DeviceForm diff --git a/netbox/extras/views.py b/netbox/extras/views.py index 7b26fde48..38b3f5148 100644 --- a/netbox/extras/views.py +++ b/netbox/extras/views.py @@ -228,7 +228,10 @@ class ObjectChangeView(generic.ObjectView): class ObjectChangeLogView(View): """ Present a history of changes made to a particular object. + + base_template: The name of the template to extend. If not provided, "/.html" will be used. """ + base_template = None def get(self, request, model, **kwargs): @@ -259,19 +262,13 @@ class ObjectChangeLogView(View): RequestConfig(request, paginate).configure(objectchanges_table) # Check whether a header template exists for this model - base_template = '{}/{}.html'.format(model._meta.app_label, model._meta.model_name) - try: - template.loader.get_template(base_template) - object_var = model._meta.model_name - except template.TemplateDoesNotExist: - base_template = 'base.html' - object_var = 'obj' + if self.base_template is None: + self.base_template = f"{model._meta.app_label}/{model._meta.model_name}.html" return render(request, 'extras/object_changelog.html', { - object_var: obj, - 'instance': obj, # We'll eventually standardize on 'instance` for the object variable name + 'object': obj, 'table': objectchanges_table, - 'base_template': base_template, + 'base_template': self.base_template, 'active_tab': 'changelog', }) diff --git a/netbox/templates/extras/object_changelog.html b/netbox/templates/extras/object_changelog.html index 970b54d4d..64f76fe60 100644 --- a/netbox/templates/extras/object_changelog.html +++ b/netbox/templates/extras/object_changelog.html @@ -1,9 +1,8 @@ {% extends base_template %} -{% block title %}{% if obj %}{{ obj }}{% else %}{{ block.super }}{% endif %} - Change Log{% endblock %} +{% block title %}{{ block.super }} - Change Log{% endblock %} {% block content %} - {% if obj %}

{{ obj }}

{% endif %} {% include 'panel_table.html' %} {% include 'inc/paginator.html' with paginator=table.paginator page=table.page %}