diff --git a/netbox/dcim/tables/template_code.py b/netbox/dcim/tables/template_code.py index fa1ec976f..34ec06900 100644 --- a/netbox/dcim/tables/template_code.py +++ b/netbox/dcim/tables/template_code.py @@ -100,9 +100,9 @@ CONSOLEPORT_BUTTONS = """
{% endif %} @@ -120,9 +120,9 @@ CONSOLESERVERPORT_BUTTONS = """ {% endif %} @@ -140,8 +140,8 @@ POWERPORT_BUTTONS = """ {% endif %} @@ -154,7 +154,7 @@ POWEROUTLET_BUTTONS = """ {% elif perms.dcim.add_cable %} - + {% endif %} @@ -162,7 +162,7 @@ POWEROUTLET_BUTTONS = """ INTERFACE_BUTTONS = """ {% if perms.ipam.add_ipaddress %} - + {% endif %} @@ -177,10 +177,10 @@ INTERFACE_BUTTONS = """ {% endif %} @@ -198,12 +198,12 @@ FRONTPORT_BUTTONS = """ {% endif %} @@ -221,10 +221,10 @@ REARPORT_BUTTONS = """ {% endif %} @@ -233,11 +233,11 @@ REARPORT_BUTTONS = """ DEVICEBAY_BUTTONS = """ {% if perms.dcim.change_devicebay %} {% if record.installed_device %} - + {% else %} - + {% endif %} diff --git a/netbox/dcim/views.py b/netbox/dcim/views.py index a632bc6f3..79738af07 100644 --- a/netbox/dcim/views.py +++ b/netbox/dcim/views.py @@ -413,14 +413,6 @@ class RackReservationListView(generic.ObjectListView): class RackReservationView(generic.ObjectView): queryset = RackReservation.objects.prefetch_related('rack') - def get(self, request, pk): - - rackreservation = get_object_or_404(self.queryset, pk=pk) - - return render(request, 'dcim/rackreservation.html', { - 'rackreservation': rackreservation, - }) - class RackReservationEditView(generic.ObjectEditView): queryset = RackReservation.objects.all() @@ -568,7 +560,7 @@ class DeviceTypeView(generic.ObjectView): devicebay_table.columns.show('pk') return render(request, 'dcim/devicetype.html', { - 'devicetype': devicetype, + 'object': devicetype, 'instance_count': instance_count, 'consoleport_table': consoleport_table, 'consoleserverport_table': consoleserverport_table, @@ -1023,7 +1015,7 @@ class DeviceView(generic.ObjectView): )[:10] return render(request, 'dcim/device/device.html', { - 'device': device, + 'object': device, 'services': services, 'secrets': secrets, 'vc_members': vc_members, @@ -1050,7 +1042,7 @@ class DeviceConsolePortsView(generic.ObjectView): consoleport_table.columns.show('pk') return render(request, 'dcim/device/consoleports.html', { - 'device': device, + 'object': device, 'consoleport_table': consoleport_table, 'active_tab': 'console-ports', }) @@ -1077,7 +1069,7 @@ class DeviceConsoleServerPortsView(generic.ObjectView): consoleserverport_table.columns.show('pk') return render(request, 'dcim/device/consoleserverports.html', { - 'device': device, + 'object': device, 'consoleserverport_table': consoleserverport_table, 'active_tab': 'console-server-ports', }) @@ -1101,7 +1093,7 @@ class DevicePowerPortsView(generic.ObjectView): powerport_table.columns.show('pk') return render(request, 'dcim/device/powerports.html', { - 'device': device, + 'object': device, 'powerport_table': powerport_table, 'active_tab': 'power-ports', }) @@ -1125,7 +1117,7 @@ class DevicePowerOutletsView(generic.ObjectView): poweroutlet_table.columns.show('pk') return render(request, 'dcim/device/poweroutlets.html', { - 'device': device, + 'object': device, 'poweroutlet_table': poweroutlet_table, 'active_tab': 'power-outlets', }) @@ -1151,7 +1143,7 @@ class DeviceInterfacesView(generic.ObjectView): interface_table.columns.show('pk') return render(request, 'dcim/device/interfaces.html', { - 'device': device, + 'object': device, 'interface_table': interface_table, 'active_tab': 'interfaces', }) @@ -1175,7 +1167,7 @@ class DeviceFrontPortsView(generic.ObjectView): frontport_table.columns.show('pk') return render(request, 'dcim/device/frontports.html', { - 'device': device, + 'object': device, 'frontport_table': frontport_table, 'active_tab': 'front-ports', }) @@ -1197,7 +1189,7 @@ class DeviceRearPortsView(generic.ObjectView): rearport_table.columns.show('pk') return render(request, 'dcim/device/rearports.html', { - 'device': device, + 'object': device, 'rearport_table': rearport_table, 'active_tab': 'rear-ports', }) @@ -1221,7 +1213,7 @@ class DeviceDeviceBaysView(generic.ObjectView): devicebay_table.columns.show('pk') return render(request, 'dcim/device/devicebays.html', { - 'device': device, + 'object': device, 'devicebay_table': devicebay_table, 'active_tab': 'device-bays', }) @@ -1245,7 +1237,7 @@ class DeviceInventoryView(generic.ObjectView): inventoryitem_table.columns.show('pk') return render(request, 'dcim/device/inventory.html', { - 'device': device, + 'object': device, 'inventoryitem_table': inventoryitem_table, 'active_tab': 'inventory', }) @@ -1254,14 +1246,12 @@ class DeviceInventoryView(generic.ObjectView): class DeviceStatusView(generic.ObjectView): additional_permissions = ['dcim.napalm_read_device'] queryset = Device.objects.all() + template_name = 'dcim/device/status.html' - def get(self, request, pk): - device = get_object_or_404(self.queryset, pk=pk) - - return render(request, 'dcim/device/status.html', { - 'device': device, + def get_extra_context(self): + return { 'active_tab': 'status', - }) + } class DeviceLLDPNeighborsView(generic.ObjectView): @@ -1276,7 +1266,7 @@ class DeviceLLDPNeighborsView(generic.ObjectView): ) return render(request, 'dcim/device/lldp_neighbors.html', { - 'device': device, + 'object': device, 'interfaces': interfaces, 'active_tab': 'lldp-neighbors', }) @@ -1285,15 +1275,12 @@ class DeviceLLDPNeighborsView(generic.ObjectView): class DeviceConfigView(generic.ObjectView): additional_permissions = ['dcim.napalm_read_device'] queryset = Device.objects.all() + template_name = 'dcim/device/config.html' - def get(self, request, pk): - - device = get_object_or_404(self.queryset, pk=pk) - - return render(request, 'dcim/device/config.html', { - 'device': device, + def get_extra_context(self): + return { 'active_tab': 'config', - }) + } class DeviceConfigContextView(ObjectConfigContextView): @@ -1629,7 +1616,7 @@ class InterfaceView(generic.ObjectView): ) return render(request, 'dcim/interface.html', { - 'instance': interface, + 'object': interface, 'ipaddress_table': ipaddress_table, 'vlan_table': vlan_table, }) @@ -2093,14 +2080,6 @@ class CableListView(generic.ObjectListView): class CableView(generic.ObjectView): queryset = Cable.objects.all() - def get(self, request, pk): - - cable = get_object_or_404(self.queryset, pk=pk) - - return render(request, 'dcim/cable.html', { - 'cable': cable, - }) - class PathTraceView(generic.ObjectView): """ @@ -2136,7 +2115,7 @@ class PathTraceView(generic.ObjectView): path = related_paths.first() return render(request, 'dcim/cable_trace.html', { - 'obj': obj, + 'object': obj, 'path': path, 'related_paths': related_paths, 'total_length': path.get_total_length() if path else None, @@ -2588,7 +2567,7 @@ class PowerPanelView(generic.ObjectView): powerfeed_table.exclude = ['power_panel'] return render(request, 'dcim/powerpanel.html', { - 'powerpanel': powerpanel, + 'object': powerpanel, 'powerfeed_table': powerfeed_table, }) @@ -2640,14 +2619,6 @@ class PowerFeedListView(generic.ObjectListView): class PowerFeedView(generic.ObjectView): queryset = PowerFeed.objects.prefetch_related('power_panel', 'rack') - def get(self, request, pk): - - powerfeed = get_object_or_404(self.queryset, pk=pk) - - return render(request, 'dcim/powerfeed.html', { - 'powerfeed': powerfeed, - }) - class PowerFeedEditView(generic.ObjectEditView): queryset = PowerFeed.objects.all() diff --git a/netbox/extras/views.py b/netbox/extras/views.py index 9fb6c6deb..7b26fde48 100644 --- a/netbox/extras/views.py +++ b/netbox/extras/views.py @@ -156,8 +156,7 @@ class ObjectConfigContextView(generic.ObjectView): format = 'json' return render(request, 'extras/object_configcontext.html', { - model_name: obj, - 'obj': obj, + 'object': obj, 'rendered_context': obj.get_config_context(), 'source_contexts': source_contexts, 'format': format, diff --git a/netbox/ipam/views.py b/netbox/ipam/views.py index d2248e84c..2ee6979df 100644 --- a/netbox/ipam/views.py +++ b/netbox/ipam/views.py @@ -830,14 +830,6 @@ class ServiceListView(generic.ObjectListView): class ServiceView(generic.ObjectView): queryset = Service.objects.prefetch_related('ipaddresses') - def get(self, request, pk): - - service = get_object_or_404(self.queryset, pk=pk) - - return render(request, 'ipam/service.html', { - 'service': service, - }) - class ServiceEditView(generic.ObjectEditView): queryset = Service.objects.prefetch_related('ipaddresses') diff --git a/netbox/netbox/views/generic.py b/netbox/netbox/views/generic.py index 7731dfe24..f8d2e028b 100644 --- a/netbox/netbox/views/generic.py +++ b/netbox/netbox/views/generic.py @@ -48,14 +48,21 @@ class ObjectView(ObjectPermissionRequiredMixin, View): model_opts = self.queryset.model._meta return f'{model_opts.app_label}/{model_opts.model_name}.html' - def get(self, request, pk): + def get_extra_context(self): """ - Generic GET handler for accessing an object by PK + Return any additional context data for the template. """ - instance = get_object_or_404(self.queryset, pk=pk) + return {} + + def get(self, request, *args, **kwargs): + """ + Generic GET handler for accessing an object by PK or slug + """ + obj = get_object_or_404(self.queryset, **kwargs) return render(request, self.get_template_name(), { - 'instance': instance, + 'object': obj, + **self.get_extra_context(), }) diff --git a/netbox/secrets/views.py b/netbox/secrets/views.py index 539cbb160..14253486d 100644 --- a/netbox/secrets/views.py +++ b/netbox/secrets/views.py @@ -66,14 +66,6 @@ class SecretListView(generic.ObjectListView): class SecretView(generic.ObjectView): queryset = Secret.objects.all() - def get(self, request, pk): - - secret = get_object_or_404(self.queryset, pk=pk) - - return render(request, 'secrets/secret.html', { - 'secret': secret, - }) - class SecretEditView(generic.ObjectEditView): queryset = Secret.objects.all() diff --git a/netbox/templates/dcim/cable.html b/netbox/templates/dcim/cable.html index bdae87c48..51d4e6978 100644 --- a/netbox/templates/dcim/cable.html +++ b/netbox/templates/dcim/cable.html @@ -9,31 +9,31 @@Type | -{{ cable.get_type_display|placeholder }} | +{{ object.get_type_display|placeholder }} |
Status | - {{ cable.get_status_display }} + {{ object.get_status_display }} | |
Label | -{{ cable.label|placeholder }} | +{{ object.label|placeholder }} |
Color | - {% if cable.color %} - + {% if object.color %} + {% else %} — {% endif %} @@ -74,8 +74,8 @@ | |
Length | - {% if cable.length %} - {{ cable.length }} {{ cable.get_length_unit_display }} + {% if object.length %} + {{ object.length }} {{ object.get_length_unit_display }} {% else %} — {% endif %} @@ -83,29 +83,29 @@ |
Cable | - {{ instance.cable }} - + {{ object.cable }} + | |
Device | - {{ instance.connected_endpoint.device }} + {{ object.connected_endpoint.device }} | |
Name | - {{ instance.connected_endpoint.name }} + {{ object.connected_endpoint.name }} | |
Type | -{{ instance.connected_endpoint.get_type_display|placeholder }} | +{{ object.connected_endpoint.get_type_display|placeholder }} |
Description | -{{ instance.connected_endpoint.description|placeholder }} | +{{ object.connected_endpoint.description|placeholder }} |
Path Status |
- {% if instance.path.is_active %}
+ {% if object.path.is_active %}
Reachable
{% else %}
Not Reachable
@@ -95,21 +95,21 @@
Connect
{% endif %}
{% endif %}
- {% plugin_right_page instance %}
+ {% plugin_right_page object %}
- {% plugin_full_width_page instance %}
+ {% plugin_full_width_page object %}
| |
Device | - {{ instance.device }} + {{ object.device }} | |
Name | -{{ instance.name }} | +{{ object.name }} |
Label | -{{ instance.label|placeholder }} | +{{ object.label|placeholder }} |
Type | -{{ instance.get_type_display }} | +{{ object.get_type_display }} |
Description | -{{ instance.description|placeholder }} | +{{ object.description|placeholder }} |
Cable | - {{ instance.cable }} - + {{ object.cable }} + | |
Device | - {{ instance.connected_endpoint.device }} + {{ object.connected_endpoint.device }} | |
Name | - {{ instance.connected_endpoint.name }} + {{ object.connected_endpoint.name }} | |
Type | -{{ instance.connected_endpoint.get_type_display|placeholder }} | +{{ object.connected_endpoint.get_type_display|placeholder }} |
Description | -{{ instance.connected_endpoint.description|placeholder }} | +{{ object.connected_endpoint.description|placeholder }} |
Path Status |
- {% if instance.path.is_active %}
+ {% if object.path.is_active %}
Reachable
{% else %}
Not Reachable
@@ -95,21 +95,21 @@
Connect
{% endif %}
{% endif %}
- {% plugin_right_page instance %}
+ {% plugin_right_page object %}
- {% plugin_full_width_page instance %}
+ {% plugin_full_width_page object %}
{{ device }}- {% include 'inc/created_updated.html' with obj=device %} +{{ object }}+ {% include 'inc/created_updated.html' with obj=object %} diff --git a/netbox/templates/dcim/device/config.html b/netbox/templates/dcim/device/config.html index 5ef941c60..4b73a2577 100644 --- a/netbox/templates/dcim/device/config.html +++ b/netbox/templates/dcim/device/config.html @@ -1,7 +1,7 @@ {% extends 'dcim/device/base.html' %} {% load static %} -{% block title %}{{ device }} - Config{% endblock %} +{% block title %}{{ object }} - Config{% endblock %} {% block content %} {% include 'inc/ajax_loader.html' %} @@ -36,7 +36,7 @@ |