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 @@
- {% plugin_buttons cable %} + {% plugin_buttons object %} {% if perms.dcim.change_cable %} - {% edit_button cable %} + {% edit_button object %} {% endif %} {% if perms.dcim.delete_cable %} - {% delete_button cable %} + {% delete_button object %} {% endif %}
-

{% block title %}Cable {{ cable }}{% endblock %}

- {% include 'inc/created_updated.html' with obj=cable %} +

{% block title %}Cable {{ object }}{% endblock %}

+ {% include 'inc/created_updated.html' with obj=object %}
- {% custom_links cable %} + {% custom_links object %}
@@ -49,23 +49,23 @@ - + - +
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 @@
- {% include 'inc/custom_fields_panel.html' with obj=cable %} - {% include 'extras/inc/tags_panel.html' with tags=cable.tags.all url='dcim:cable_list' %} - {% plugin_left_page cable %} + {% include 'inc/custom_fields_panel.html' with obj=object %} + {% include 'extras/inc/tags_panel.html' with tags=object.tags.all url='dcim:cable_list' %} + {% plugin_left_page object %}
Termination A
- {% include 'dcim/inc/cable_termination.html' with termination=cable.termination_a %} + {% include 'dcim/inc/cable_termination.html' with termination=object.termination_a %}
Termination B
- {% include 'dcim/inc/cable_termination.html' with termination=cable.termination_b %} + {% include 'dcim/inc/cable_termination.html' with termination=object.termination_b %}
- {% plugin_right_page cable %} + {% plugin_right_page object %}
- {% plugin_full_width_page cable %} + {% plugin_full_width_page object %}
{% endblock %} diff --git a/netbox/templates/dcim/cable_trace.html b/netbox/templates/dcim/cable_trace.html index 73003954d..a36922612 100644 --- a/netbox/templates/dcim/cable_trace.html +++ b/netbox/templates/dcim/cable_trace.html @@ -2,7 +2,7 @@ {% load helpers %} {% block header %} -

{% block title %}Cable Trace for {{ obj|meta:"verbose_name"|bettertitle }} {{ obj }}{% endblock %}

+

{% block title %}Cable Trace for {{ object|meta:"verbose_name"|bettertitle }} {{ object }}{% endblock %}

{% endblock %} {% block content %} diff --git a/netbox/templates/dcim/consoleport.html b/netbox/templates/dcim/consoleport.html index ebf4a50b8..5d113c86a 100644 --- a/netbox/templates/dcim/consoleport.html +++ b/netbox/templates/dcim/consoleport.html @@ -13,71 +13,71 @@ 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 }} - {% include 'extras/inc/tags_panel.html' with tags=instance.tags.all %} - {% plugin_left_page instance %} + {% include 'extras/inc/tags_panel.html' with tags=object.tags.all %} + {% plugin_left_page object %}
Connection
- {% if instance.cable %} + {% if object.cable %} - {% if instance.connected_endpoint %} + {% if object.connected_endpoint %} - + - + - + - + - + - +
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 %}
{% endblock %} diff --git a/netbox/templates/dcim/consoleserverport.html b/netbox/templates/dcim/consoleserverport.html index b90231602..b64b4aff2 100644 --- a/netbox/templates/dcim/consoleserverport.html +++ b/netbox/templates/dcim/consoleserverport.html @@ -13,71 +13,71 @@
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 }}
- {% include 'extras/inc/tags_panel.html' with tags=instance.tags.all %} - {% plugin_left_page instance %} + {% include 'extras/inc/tags_panel.html' with tags=object.tags.all %} + {% plugin_left_page object %}
Connection
- {% if instance.cable %} + {% if object.cable %} - {% if instance.connected_endpoint %} + {% if object.connected_endpoint %} - + - +
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 %}
{% endblock %} diff --git a/netbox/templates/dcim/device/base.html b/netbox/templates/dcim/device/base.html index 80c94a31a..675f60ec1 100644 --- a/netbox/templates/dcim/device/base.html +++ b/netbox/templates/dcim/device/base.html @@ -5,19 +5,19 @@ {% load custom_links %} {% load plugins %} -{% block title %}{{ device }}{% endblock %} +{% block title %}{{ object }}{% endblock %} {% block header %}
@@ -34,7 +34,7 @@
- {% plugin_buttons device %} + {% plugin_buttons object %} {% if perms.dcim.change_device %}
{% endif %} {% if perms.dcim.add_device %} - {% clone_button device %} + {% clone_button object %} {% endif %} {% if perms.dcim.change_device %} - {% edit_button device %} + {% edit_button object %} {% endif %} {% if perms.dcim.delete_device %} - {% delete_button device %} + {% delete_button object %} {% endif %}
-

{{ device }}

- {% include 'inc/created_updated.html' with obj=device %} +

{{ object }}

+ {% include 'inc/created_updated.html' with obj=object %}
- {% custom_links device %} + {% custom_links 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 @@