diff --git a/netbox/circuits/views.py b/netbox/circuits/views.py
index 15cf901c1..ba873f23f 100644
--- a/netbox/circuits/views.py
+++ b/netbox/circuits/views.py
@@ -29,7 +29,6 @@ class ProviderListView(PermissionRequiredMixin, ObjectListView):
filterset = filters.ProviderFilterSet
filterset_form = forms.ProviderFilterForm
table = tables.ProviderDetailTable
- template_name = 'circuits/provider_list.html'
class ProviderView(PermissionRequiredMixin, View):
@@ -107,7 +106,6 @@ class CircuitTypeListView(PermissionRequiredMixin, ObjectListView):
permission_required = 'circuits.view_circuittype'
queryset = CircuitType.objects.annotate(circuit_count=Count('circuits'))
table = tables.CircuitTypeTable
- template_name = 'circuits/circuittype_list.html'
class CircuitTypeCreateView(PermissionRequiredMixin, ObjectEditView):
@@ -151,7 +149,6 @@ class CircuitListView(PermissionRequiredMixin, ObjectListView):
filterset = filters.CircuitFilterSet
filterset_form = forms.CircuitFilterForm
table = tables.CircuitTable
- template_name = 'circuits/circuit_list.html'
class CircuitView(PermissionRequiredMixin, View):
diff --git a/netbox/dcim/views.py b/netbox/dcim/views.py
index ae59890a3..0bb6658a2 100644
--- a/netbox/dcim/views.py
+++ b/netbox/dcim/views.py
@@ -152,7 +152,6 @@ class RegionListView(PermissionRequiredMixin, ObjectListView):
filterset = filters.RegionFilterSet
filterset_form = forms.RegionFilterForm
table = tables.RegionTable
- template_name = 'dcim/region_list.html'
class RegionCreateView(PermissionRequiredMixin, ObjectEditView):
@@ -191,7 +190,6 @@ class SiteListView(PermissionRequiredMixin, ObjectListView):
filterset = filters.SiteFilterSet
filterset_form = forms.SiteFilterForm
table = tables.SiteTable
- template_name = 'dcim/site_list.html'
class SiteView(PermissionRequiredMixin, View):
@@ -271,7 +269,6 @@ class RackGroupListView(PermissionRequiredMixin, ObjectListView):
filterset = filters.RackGroupFilterSet
filterset_form = forms.RackGroupFilterForm
table = tables.RackGroupTable
- template_name = 'dcim/rackgroup_list.html'
class RackGroupCreateView(PermissionRequiredMixin, ObjectEditView):
@@ -308,7 +305,6 @@ class RackRoleListView(PermissionRequiredMixin, ObjectListView):
permission_required = 'dcim.view_rackrole'
queryset = RackRole.objects.annotate(rack_count=Count('racks'))
table = tables.RackRoleTable
- template_name = 'dcim/rackrole_list.html'
class RackRoleCreateView(PermissionRequiredMixin, ObjectEditView):
@@ -350,7 +346,6 @@ class RackListView(PermissionRequiredMixin, ObjectListView):
filterset = filters.RackFilterSet
filterset_form = forms.RackFilterForm
table = tables.RackDetailTable
- template_name = 'dcim/rack_list.html'
class RackElevationListView(PermissionRequiredMixin, View):
@@ -474,7 +469,7 @@ class RackReservationListView(PermissionRequiredMixin, ObjectListView):
filterset = filters.RackReservationFilterSet
filterset_form = forms.RackReservationFilterForm
table = tables.RackReservationTable
- template_name = 'dcim/rackreservation_list.html'
+ action_buttons = ()
class RackReservationCreateView(PermissionRequiredMixin, ObjectEditView):
@@ -533,7 +528,6 @@ class ManufacturerListView(PermissionRequiredMixin, ObjectListView):
platform_count=Count('platforms', distinct=True),
)
table = tables.ManufacturerTable
- template_name = 'dcim/manufacturer_list.html'
class ManufacturerCreateView(PermissionRequiredMixin, ObjectEditView):
@@ -571,7 +565,6 @@ class DeviceTypeListView(PermissionRequiredMixin, ObjectListView):
filterset = filters.DeviceTypeFilterSet
filterset_form = forms.DeviceTypeFilterForm
table = tables.DeviceTypeTable
- template_name = 'dcim/devicetype_list.html'
class DeviceTypeView(PermissionRequiredMixin, View):
@@ -995,7 +988,6 @@ class DeviceRoleListView(PermissionRequiredMixin, ObjectListView):
permission_required = 'dcim.view_devicerole'
queryset = DeviceRole.objects.all()
table = tables.DeviceRoleTable
- template_name = 'dcim/devicerole_list.html'
class DeviceRoleCreateView(PermissionRequiredMixin, ObjectEditView):
@@ -1031,7 +1023,6 @@ class PlatformListView(PermissionRequiredMixin, ObjectListView):
permission_required = 'dcim.view_platform'
queryset = Platform.objects.all()
table = tables.PlatformTable
- template_name = 'dcim/platform_list.html'
class PlatformCreateView(PermissionRequiredMixin, ObjectEditView):
@@ -1292,7 +1283,7 @@ class ConsolePortListView(PermissionRequiredMixin, ObjectListView):
filterset = filters.ConsolePortFilterSet
filterset_form = forms.ConsolePortFilterForm
table = tables.ConsolePortDetailTable
- template_name = 'dcim/consoleport_list.html'
+ action_buttons = ('import', 'export')
class ConsolePortCreateView(PermissionRequiredMixin, ComponentCreateView):
@@ -1345,7 +1336,7 @@ class ConsoleServerPortListView(PermissionRequiredMixin, ObjectListView):
filterset = filters.ConsoleServerPortFilterSet
filterset_form = forms.ConsoleServerPortFilterForm
table = tables.ConsoleServerPortDetailTable
- template_name = 'dcim/consoleserverport_list.html'
+ action_buttons = ('import', 'export')
class ConsoleServerPortCreateView(PermissionRequiredMixin, ComponentCreateView):
@@ -1410,7 +1401,7 @@ class PowerPortListView(PermissionRequiredMixin, ObjectListView):
filterset = filters.PowerPortFilterSet
filterset_form = forms.PowerPortFilterForm
table = tables.PowerPortDetailTable
- template_name = 'dcim/powerport_list.html'
+ action_buttons = ('import', 'export')
class PowerPortCreateView(PermissionRequiredMixin, ComponentCreateView):
@@ -1463,7 +1454,7 @@ class PowerOutletListView(PermissionRequiredMixin, ObjectListView):
filterset = filters.PowerOutletFilterSet
filterset_form = forms.PowerOutletFilterForm
table = tables.PowerOutletDetailTable
- template_name = 'dcim/poweroutlet_list.html'
+ action_buttons = ('import', 'export')
class PowerOutletCreateView(PermissionRequiredMixin, ComponentCreateView):
@@ -1528,7 +1519,7 @@ class InterfaceListView(PermissionRequiredMixin, ObjectListView):
filterset = filters.InterfaceFilterSet
filterset_form = forms.InterfaceFilterForm
table = tables.InterfaceDetailTable
- template_name = 'dcim/interface_list.html'
+ action_buttons = ('import', 'export')
class InterfaceView(PermissionRequiredMixin, View):
@@ -1630,7 +1621,7 @@ class FrontPortListView(PermissionRequiredMixin, ObjectListView):
filterset = filters.FrontPortFilterSet
filterset_form = forms.FrontPortFilterForm
table = tables.FrontPortDetailTable
- template_name = 'dcim/frontport_list.html'
+ action_buttons = ('import', 'export')
class FrontPortCreateView(PermissionRequiredMixin, ComponentCreateView):
@@ -1695,7 +1686,7 @@ class RearPortListView(PermissionRequiredMixin, ObjectListView):
filterset = filters.RearPortFilterSet
filterset_form = forms.RearPortFilterForm
table = tables.RearPortDetailTable
- template_name = 'dcim/rearport_list.html'
+ action_buttons = ('import', 'export')
class RearPortCreateView(PermissionRequiredMixin, ComponentCreateView):
@@ -1762,7 +1753,7 @@ class DeviceBayListView(PermissionRequiredMixin, ObjectListView):
filterset = filters.DeviceBayFilterSet
filterset_form = forms.DeviceBayFilterForm
table = tables.DeviceBayDetailTable
- template_name = 'dcim/devicebay_list.html'
+ action_buttons = ('import', 'export')
class DeviceBayCreateView(PermissionRequiredMixin, ComponentCreateView):
@@ -1961,7 +1952,7 @@ class CableListView(PermissionRequiredMixin, ObjectListView):
filterset = filters.CableFilterSet
filterset_form = forms.CableFilterForm
table = tables.CableTable
- template_name = 'dcim/cable_list.html'
+ action_buttons = ('import', 'export')
class CableView(PermissionRequiredMixin, View):
@@ -2233,7 +2224,7 @@ class InventoryItemListView(PermissionRequiredMixin, ObjectListView):
filterset = filters.InventoryItemFilterSet
filterset_form = forms.InventoryItemFilterForm
table = tables.InventoryItemTable
- template_name = 'dcim/inventoryitem_list.html'
+ action_buttons = ('import', 'export')
class InventoryItemEditView(PermissionRequiredMixin, ObjectEditView):
@@ -2289,7 +2280,7 @@ class VirtualChassisListView(PermissionRequiredMixin, ObjectListView):
table = tables.VirtualChassisTable
filterset = filters.VirtualChassisFilterSet
filterset_form = forms.VirtualChassisFilterForm
- template_name = 'dcim/virtualchassis_list.html'
+ action_buttons = ('export',)
class VirtualChassisCreateView(PermissionRequiredMixin, View):
@@ -2533,7 +2524,6 @@ class PowerPanelListView(PermissionRequiredMixin, ObjectListView):
filterset = filters.PowerPanelFilterSet
filterset_form = forms.PowerPanelFilterForm
table = tables.PowerPanelTable
- template_name = 'dcim/powerpanel_list.html'
class PowerPanelView(PermissionRequiredMixin, View):
@@ -2602,7 +2592,6 @@ class PowerFeedListView(PermissionRequiredMixin, ObjectListView):
filterset = filters.PowerFeedFilterSet
filterset_form = forms.PowerFeedFilterForm
table = tables.PowerFeedTable
- template_name = 'dcim/powerfeed_list.html'
class PowerFeedView(PermissionRequiredMixin, View):
diff --git a/netbox/extras/views.py b/netbox/extras/views.py
index 73d29393f..3912c602f 100644
--- a/netbox/extras/views.py
+++ b/netbox/extras/views.py
@@ -34,7 +34,7 @@ class TagListView(PermissionRequiredMixin, ObjectListView):
filterset = filters.TagFilterSet
filterset_form = forms.TagFilterForm
table = TagTable
- template_name = 'extras/tag_list.html'
+ action_buttons = ()
class TagView(PermissionRequiredMixin, View):
@@ -111,7 +111,7 @@ class ConfigContextListView(PermissionRequiredMixin, ObjectListView):
filterset = filters.ConfigContextFilterSet
filterset_form = forms.ConfigContextFilterForm
table = ConfigContextTable
- template_name = 'extras/configcontext_list.html'
+ action_buttons = ('add',)
class ConfigContextView(PermissionRequiredMixin, View):
@@ -191,6 +191,7 @@ class ObjectChangeListView(PermissionRequiredMixin, ObjectListView):
filterset_form = forms.ObjectChangeFilterForm
table = ObjectChangeTable
template_name = 'extras/objectchange_list.html'
+ action_buttons = ('export',)
class ObjectChangeView(PermissionRequiredMixin, View):
diff --git a/netbox/ipam/views.py b/netbox/ipam/views.py
index c8c7d40ca..053098f0b 100644
--- a/netbox/ipam/views.py
+++ b/netbox/ipam/views.py
@@ -118,7 +118,6 @@ class VRFListView(PermissionRequiredMixin, ObjectListView):
filterset = filters.VRFFilterSet
filterset_form = forms.VRFFilterForm
table = tables.VRFTable
- template_name = 'ipam/vrf_list.html'
class VRFView(PermissionRequiredMixin, View):
@@ -293,7 +292,6 @@ class AggregateListView(PermissionRequiredMixin, ObjectListView):
queryset = Aggregate.objects.prefetch_related('rir').annotate(
child_count=RawSQL('SELECT COUNT(*) FROM ipam_prefix WHERE ipam_prefix.prefix <<= ipam_aggregate.prefix', ())
)
-
filterset = filters.AggregateFilterSet
filterset_form = forms.AggregateFilterForm
table = tables.AggregateDetailTable
@@ -411,7 +409,6 @@ class RoleListView(PermissionRequiredMixin, ObjectListView):
permission_required = 'ipam.view_role'
queryset = Role.objects.all()
table = tables.RoleTable
- template_name = 'ipam/role_list.html'
class RoleCreateView(PermissionRequiredMixin, ObjectEditView):
@@ -644,7 +641,6 @@ class IPAddressListView(PermissionRequiredMixin, ObjectListView):
filterset = filters.IPAddressFilterSet
filterset_form = forms.IPAddressFilterForm
table = tables.IPAddressDetailTable
- template_name = 'ipam/ipaddress_list.html'
class IPAddressView(PermissionRequiredMixin, View):
@@ -817,7 +813,6 @@ class VLANGroupListView(PermissionRequiredMixin, ObjectListView):
filterset = filters.VLANGroupFilterSet
filterset_form = forms.VLANGroupFilterForm
table = tables.VLANGroupTable
- template_name = 'ipam/vlangroup_list.html'
class VLANGroupCreateView(PermissionRequiredMixin, ObjectEditView):
@@ -893,7 +888,6 @@ class VLANListView(PermissionRequiredMixin, ObjectListView):
filterset = filters.VLANFilterSet
filterset_form = forms.VLANFilterForm
table = tables.VLANDetailTable
- template_name = 'ipam/vlan_list.html'
class VLANView(PermissionRequiredMixin, View):
@@ -989,7 +983,7 @@ class ServiceListView(PermissionRequiredMixin, ObjectListView):
filterset = filters.ServiceFilterSet
filterset_form = forms.ServiceFilterForm
table = tables.ServiceTable
- template_name = 'ipam/service_list.html'
+ action_buttons = ('export',)
class ServiceView(PermissionRequiredMixin, View):
diff --git a/netbox/secrets/views.py b/netbox/secrets/views.py
index 288edaa6f..d92e4b64d 100644
--- a/netbox/secrets/views.py
+++ b/netbox/secrets/views.py
@@ -35,7 +35,6 @@ class SecretRoleListView(PermissionRequiredMixin, ObjectListView):
permission_required = 'secrets.view_secretrole'
queryset = SecretRole.objects.annotate(secret_count=Count('secrets'))
table = tables.SecretRoleTable
- template_name = 'secrets/secretrole_list.html'
class SecretRoleCreateView(PermissionRequiredMixin, ObjectEditView):
@@ -73,7 +72,7 @@ class SecretListView(PermissionRequiredMixin, ObjectListView):
filterset = filters.SecretFilterSet
filterset_form = forms.SecretFilterForm
table = tables.SecretTable
- template_name = 'secrets/secret_list.html'
+ action_buttons = ('import', 'export')
class SecretView(PermissionRequiredMixin, View):
diff --git a/netbox/templates/circuits/circuit_list.html b/netbox/templates/circuits/circuit_list.html
deleted file mode 100644
index 169aab072..000000000
--- a/netbox/templates/circuits/circuit_list.html
+++ /dev/null
@@ -1,21 +0,0 @@
-{% extends '_base.html' %}
-{% load buttons %}
-
-{% block content %}
-
- {% if perms.circuits.add_circuit %}
- {% add_button 'circuits:circuit_add' %}
- {% import_button 'circuits:circuit_import' %}
- {% endif %}
- {% export_button content_type %}
-
-{% block title %}Circuits{% endblock %}
-
-
- {% include 'utilities/obj_table.html' with bulk_edit_url='circuits:circuit_bulk_edit' bulk_delete_url='circuits:circuit_bulk_delete' %}
-
-
- {% include 'inc/search_panel.html' %}
-
-
-{% endblock %}
diff --git a/netbox/templates/circuits/circuittype_list.html b/netbox/templates/circuits/circuittype_list.html
deleted file mode 100644
index 654d4ab09..000000000
--- a/netbox/templates/circuits/circuittype_list.html
+++ /dev/null
@@ -1,18 +0,0 @@
-{% extends '_base.html' %}
-{% load buttons %}
-
-{% block content %}
-
- {% if perms.circuits.add_circuittype %}
- {% add_button 'circuits:circuittype_add' %}
- {% import_button 'circuits:circuittype_import' %}
- {% endif %}
- {% export_button content_type %}
-
-{% block title %}Circuit Types{% endblock %}
-
-
- {% include 'utilities/obj_table.html' with bulk_delete_url='circuits:circuittype_bulk_delete' %}
-
-
-{% endblock %}
diff --git a/netbox/templates/circuits/provider_list.html b/netbox/templates/circuits/provider_list.html
deleted file mode 100644
index 4126f75ec..000000000
--- a/netbox/templates/circuits/provider_list.html
+++ /dev/null
@@ -1,21 +0,0 @@
-{% extends '_base.html' %}
-{% load buttons %}
-
-{% block content %}
-
- {% if perms.circuits.add_provider %}
- {% add_button 'circuits:provider_add' %}
- {% import_button 'circuits:provider_import' %}
- {% endif %}
- {% export_button content_type %}
-
-{% block title %}Providers{% endblock %}
-
-
- {% include 'utilities/obj_table.html' with bulk_edit_url='circuits:provider_bulk_edit' bulk_delete_url='circuits:provider_bulk_delete' %}
-
-
- {% include 'inc/search_panel.html' %}
-
-
-{% endblock %}
diff --git a/netbox/templates/dcim/cable_list.html b/netbox/templates/dcim/cable_list.html
deleted file mode 100644
index 0dd8095a5..000000000
--- a/netbox/templates/dcim/cable_list.html
+++ /dev/null
@@ -1,20 +0,0 @@
-{% extends '_base.html' %}
-{% load buttons %}
-
-{% block content %}
-
- {% if perms.dcim.add_cable %}
- {% import_button 'dcim:cable_import' %}
- {% endif %}
- {% export_button content_type %}
-
-{% block title %}Cables{% endblock %}
-
-
- {% include 'utilities/obj_table.html' with bulk_edit_url='dcim:cable_bulk_edit' bulk_delete_url='dcim:cable_bulk_delete' %}
-
-
- {% include 'inc/search_panel.html' %}
-
-
-{% endblock %}
diff --git a/netbox/templates/dcim/consoleport_list.html b/netbox/templates/dcim/consoleport_list.html
deleted file mode 100644
index 0ed840820..000000000
--- a/netbox/templates/dcim/consoleport_list.html
+++ /dev/null
@@ -1,17 +0,0 @@
-{% extends '_base.html' %}
-{% load buttons %}
-
-{% block content %}
-
- {% export_button content_type %}
-
-{% block title %}Console Ports{% endblock %}
-
-
- {% include 'utilities/obj_table.html' with bulk_edit_url='dcim:consoleport_bulk_edit' bulk_delete_url='dcim:consoleport_bulk_delete' %}
-
-
- {% include 'inc/search_panel.html' %}
-
-
-{% endblock %}
diff --git a/netbox/templates/dcim/consoleserverport_list.html b/netbox/templates/dcim/consoleserverport_list.html
deleted file mode 100644
index 47a8676e3..000000000
--- a/netbox/templates/dcim/consoleserverport_list.html
+++ /dev/null
@@ -1,17 +0,0 @@
-{% extends '_base.html' %}
-{% load buttons %}
-
-{% block content %}
-
- {% export_button content_type %}
-
-{% block title %}Console Server Ports{% endblock %}
-
-
- {% include 'utilities/obj_table.html' with bulk_edit_url='dcim:consoleserverport_bulk_edit' bulk_delete_url='dcim:consoleserverport_bulk_delete' %}
-
-
- {% include 'inc/search_panel.html' %}
-
-
-{% endblock %}
diff --git a/netbox/templates/dcim/device_list.html b/netbox/templates/dcim/device_list.html
index 8b991689f..b12e4b5a8 100644
--- a/netbox/templates/dcim/device_list.html
+++ b/netbox/templates/dcim/device_list.html
@@ -1,21 +1,24 @@
-{% extends '_base.html' %}
-{% load buttons %}
+{% extends 'utilities/obj_list.html' %}
-{% block content %}
-
- {% if perms.dcim.add_device %}
- {% add_button 'dcim:device_add' %}
- {% import_button 'dcim:device_import' %}
+{% block bulk_buttons %}
+ {% if perms.dcim.change_device %}
+
+
+ Add Components
+
+
+
+ {% endif %}
+ {% if perms.dcim.add_virtualchassis %}
+
+ Create Virtual Chassis
+
{% endif %}
- {% export_button content_type %}
-
-{% block title %}Devices{% endblock %}
-
-
- {% include 'dcim/inc/device_table.html' with bulk_edit_url='dcim:device_bulk_edit' bulk_delete_url='dcim:device_bulk_delete' %}
-
-
- {% include 'inc/search_panel.html' %}
-
-
{% endblock %}
diff --git a/netbox/templates/dcim/devicebay_list.html b/netbox/templates/dcim/devicebay_list.html
deleted file mode 100644
index 74f64858a..000000000
--- a/netbox/templates/dcim/devicebay_list.html
+++ /dev/null
@@ -1,17 +0,0 @@
-{% extends '_base.html' %}
-{% load buttons %}
-
-{% block content %}
-
- {% export_button content_type %}
-
-{% block title %}Device Bays{% endblock %}
-
-
- {% include 'utilities/obj_table.html' with bulk_delete_url='dcim:devicebay_bulk_delete' %}
-
-
- {% include 'inc/search_panel.html' %}
-
-
-{% endblock %}
diff --git a/netbox/templates/dcim/devicerole_list.html b/netbox/templates/dcim/devicerole_list.html
deleted file mode 100644
index 9f560dab4..000000000
--- a/netbox/templates/dcim/devicerole_list.html
+++ /dev/null
@@ -1,18 +0,0 @@
-{% extends '_base.html' %}
-{% load buttons %}
-
-{% block content %}
-
- {% if perms.dcim.add_devicerole %}
- {% add_button 'dcim:devicerole_add' %}
- {% import_button 'dcim:devicerole_import' %}
- {% endif %}
- {% export_button content_type %}
-
-{% block title %}Device Roles{% endblock %}
-
-
- {% include 'utilities/obj_table.html' with bulk_delete_url='dcim:devicerole_bulk_delete' %}
-
-
-{% endblock %}
diff --git a/netbox/templates/dcim/devicetype_list.html b/netbox/templates/dcim/devicetype_list.html
deleted file mode 100644
index 75f587f5d..000000000
--- a/netbox/templates/dcim/devicetype_list.html
+++ /dev/null
@@ -1,21 +0,0 @@
-{% extends '_base.html' %}
-{% load buttons %}
-
-{% block content %}
-
- {% if perms.dcim.add_devicetype %}
- {% add_button 'dcim:devicetype_add' %}
- {% import_button 'dcim:devicetype_import' %}
- {% endif %}
- {% export_button content_type %}
-
-{% block title %}Device Types{% endblock %}
-
-
- {% include 'utilities/obj_table.html' with bulk_edit_url='dcim:devicetype_bulk_edit' bulk_delete_url='dcim:devicetype_bulk_delete' %}
-
-
- {% include 'inc/search_panel.html' %}
-
-
-{% endblock %}
diff --git a/netbox/templates/dcim/frontport_list.html b/netbox/templates/dcim/frontport_list.html
deleted file mode 100644
index a3334b876..000000000
--- a/netbox/templates/dcim/frontport_list.html
+++ /dev/null
@@ -1,17 +0,0 @@
-{% extends '_base.html' %}
-{% load buttons %}
-
-{% block content %}
-
- {% export_button content_type %}
-
-{% block title %}Front Ports{% endblock %}
-
-
- {% include 'utilities/obj_table.html' with bulk_edit_url='dcim:frontport_bulk_edit' bulk_delete_url='dcim:frontport_bulk_delete' %}
-
-
- {% include 'inc/search_panel.html' %}
-
-
-{% endblock %}
diff --git a/netbox/templates/dcim/inc/device_table.html b/netbox/templates/dcim/inc/device_table.html
deleted file mode 100644
index 68570fdf3..000000000
--- a/netbox/templates/dcim/inc/device_table.html
+++ /dev/null
@@ -1,24 +0,0 @@
-{% extends 'utilities/obj_table.html' %}
-
-{% block extra_actions %}
- {% if perms.dcim.change_device %}
-
-
- Add Components
-
-
-
- {% endif %}
- {% if perms.dcim.add_virtualchassis %}
-
- Create Virtual Chassis
-
- {% endif %}
-{% endblock %}
diff --git a/netbox/templates/dcim/interface_list.html b/netbox/templates/dcim/interface_list.html
deleted file mode 100644
index 9dd8f7858..000000000
--- a/netbox/templates/dcim/interface_list.html
+++ /dev/null
@@ -1,17 +0,0 @@
-{% extends '_base.html' %}
-{% load buttons %}
-
-{% block content %}
-
- {% export_button content_type %}
-
-{% block title %}Interfaces{% endblock %}
-
-
- {% include 'utilities/obj_table.html' with bulk_edit_url='dcim:interface_bulk_edit' bulk_delete_url='dcim:interface_bulk_delete' %}
-
-
- {% include 'inc/search_panel.html' %}
-
-
-{% endblock %}
diff --git a/netbox/templates/dcim/inventoryitem_list.html b/netbox/templates/dcim/inventoryitem_list.html
deleted file mode 100644
index 57e7d2d03..000000000
--- a/netbox/templates/dcim/inventoryitem_list.html
+++ /dev/null
@@ -1,21 +0,0 @@
-{% extends '_base.html' %}
-{% load buttons %}
-{% load helpers %}
-
-{% block content %}
-
- {% if perms.dcim.add_devicetype %}
- {% import_button 'dcim:inventoryitem_import' %}
- {% endif %}
- {% export_button content_type %}
-
-{% block title %}Inventory Items{% endblock %}
-
-
- {% include 'utilities/obj_table.html' with bulk_edit_url='dcim:inventoryitem_bulk_edit' bulk_delete_url='dcim:inventoryitem_bulk_delete' %}
-
-
- {% include 'inc/search_panel.html' %}
-
-
-{% endblock %}
diff --git a/netbox/templates/dcim/manufacturer_list.html b/netbox/templates/dcim/manufacturer_list.html
deleted file mode 100644
index 9b612dfa5..000000000
--- a/netbox/templates/dcim/manufacturer_list.html
+++ /dev/null
@@ -1,18 +0,0 @@
-{% extends '_base.html' %}
-{% load buttons %}
-
-{% block content %}
-
- {% if perms.dcim.add_manufacturer %}
- {% add_button 'dcim:manufacturer_add' %}
- {% import_button 'dcim:manufacturer_import' %}
- {% endif %}
- {% export_button content_type %}
-
-{% block title %}Manufacturers{% endblock %}
-
-
- {% include 'utilities/obj_table.html' with bulk_delete_url='dcim:manufacturer_bulk_delete' %}
-
-
-{% endblock %}
diff --git a/netbox/templates/dcim/platform_list.html b/netbox/templates/dcim/platform_list.html
deleted file mode 100644
index d82ef9a44..000000000
--- a/netbox/templates/dcim/platform_list.html
+++ /dev/null
@@ -1,18 +0,0 @@
-{% extends '_base.html' %}
-{% load buttons %}
-
-{% block content %}
-
- {% if perms.dcim.add_platform %}
- {% add_button 'dcim:platform_add' %}
- {% import_button 'dcim:platform_import' %}
- {% endif %}
- {% export_button content_type %}
-
-{% block title %}Platforms{% endblock %}
-
-
- {% include 'utilities/obj_table.html' with bulk_delete_url='dcim:platform_bulk_delete' %}
-
-
-{% endblock %}
diff --git a/netbox/templates/dcim/powerfeed_list.html b/netbox/templates/dcim/powerfeed_list.html
deleted file mode 100644
index e384cb2c2..000000000
--- a/netbox/templates/dcim/powerfeed_list.html
+++ /dev/null
@@ -1,21 +0,0 @@
-{% extends '_base.html' %}
-{% load buttons %}
-
-{% block content %}
-
- {% if perms.dcim.add_powerfeed %}
- {% add_button 'dcim:powerfeed_add' %}
- {% import_button 'dcim:powerfeed_import' %}
- {% endif %}
- {% export_button content_type %}
-
-{% block title %}Power Feeds{% endblock %}
-
-
- {% include 'utilities/obj_table.html' with bulk_edit_url='dcim:powerfeed_bulk_edit' bulk_delete_url='dcim:powerfeed_bulk_delete' %}
-
-
- {% include 'inc/search_panel.html' %}
-
-
-{% endblock %}
diff --git a/netbox/templates/dcim/poweroutlet_list.html b/netbox/templates/dcim/poweroutlet_list.html
deleted file mode 100644
index 2e842d699..000000000
--- a/netbox/templates/dcim/poweroutlet_list.html
+++ /dev/null
@@ -1,17 +0,0 @@
-{% extends '_base.html' %}
-{% load buttons %}
-
-{% block content %}
-
- {% export_button content_type %}
-
-{% block title %}Power Outlets{% endblock %}
-
-
- {% include 'utilities/obj_table.html' with bulk_edit_url='dcim:poweroutlet_bulk_edit' bulk_delete_url='dcim:poweroutlet_bulk_delete' %}
-
-
- {% include 'inc/search_panel.html' %}
-
-
-{% endblock %}
diff --git a/netbox/templates/dcim/powerpanel_list.html b/netbox/templates/dcim/powerpanel_list.html
deleted file mode 100644
index a0d49b30b..000000000
--- a/netbox/templates/dcim/powerpanel_list.html
+++ /dev/null
@@ -1,21 +0,0 @@
-{% extends '_base.html' %}
-{% load buttons %}
-
-{% block content %}
-
- {% if perms.dcim.add_powerpanel %}
- {% add_button 'dcim:powerpanel_add' %}
- {% import_button 'dcim:powerpanel_import' %}
- {% endif %}
- {% export_button content_type %}
-
-{% block title %}Power Panels{% endblock %}
-
-
- {% include 'utilities/obj_table.html' with bulk_delete_url='dcim:powerpanel_bulk_delete' %}
-
-
- {% include 'inc/search_panel.html' %}
-
-
-{% endblock %}
diff --git a/netbox/templates/dcim/powerport_list.html b/netbox/templates/dcim/powerport_list.html
deleted file mode 100644
index b5830edca..000000000
--- a/netbox/templates/dcim/powerport_list.html
+++ /dev/null
@@ -1,17 +0,0 @@
-{% extends '_base.html' %}
-{% load buttons %}
-
-{% block content %}
-
- {% export_button content_type %}
-
-{% block title %}Power Ports{% endblock %}
-
-
- {% include 'utilities/obj_table.html' with bulk_edit_url='dcim:powerport_bulk_edit' bulk_delete_url='dcim:powerport_bulk_delete' %}
-
-
- {% include 'inc/search_panel.html' %}
-
-
-{% endblock %}
diff --git a/netbox/templates/dcim/rack_list.html b/netbox/templates/dcim/rack_list.html
deleted file mode 100644
index 2724e4427..000000000
--- a/netbox/templates/dcim/rack_list.html
+++ /dev/null
@@ -1,21 +0,0 @@
-{% extends '_base.html' %}
-{% load buttons %}
-
-{% block content %}
-
- {% if perms.dcim.add_rack %}
- {% add_button 'dcim:rack_add' %}
- {% import_button 'dcim:rack_import' %}
- {% endif %}
- {% export_button content_type %}
-
-{% block title %}Racks{% endblock %}
-
-
- {% include 'utilities/obj_table.html' with bulk_edit_url='dcim:rack_bulk_edit' bulk_delete_url='dcim:rack_bulk_delete' %}
-
-
- {% include 'inc/search_panel.html' %}
-
-
-{% endblock %}
diff --git a/netbox/templates/dcim/rackgroup_list.html b/netbox/templates/dcim/rackgroup_list.html
deleted file mode 100644
index 52723ef92..000000000
--- a/netbox/templates/dcim/rackgroup_list.html
+++ /dev/null
@@ -1,21 +0,0 @@
-{% extends '_base.html' %}
-{% load buttons %}
-
-{% block content %}
-
- {% if perms.dcim.add_rackgroup %}
- {% add_button 'dcim:rackgroup_add' %}
- {% import_button 'dcim:rackgroup_import' %}
- {% endif %}
- {% export_button content_type %}
-
-{% block title %}Rack Groups{% endblock %}
-
-
- {% include 'utilities/obj_table.html' with bulk_delete_url='dcim:rackgroup_bulk_delete' %}
-
-
- {% include 'inc/search_panel.html' %}
-
-
-{% endblock %}
diff --git a/netbox/templates/dcim/rackreservation_list.html b/netbox/templates/dcim/rackreservation_list.html
deleted file mode 100644
index b5424bbe6..000000000
--- a/netbox/templates/dcim/rackreservation_list.html
+++ /dev/null
@@ -1,14 +0,0 @@
-{% extends '_base.html' %}
-{% load helpers %}
-
-{% block content %}
-{% block title %}Rack Reservations{% endblock %}
-
-
- {% include 'utilities/obj_table.html' with bulk_edit_url='dcim:rackreservation_bulk_edit' bulk_delete_url='dcim:rackreservation_bulk_delete' %}
-
-
- {% include 'inc/search_panel.html' %}
-
-
-{% endblock %}
diff --git a/netbox/templates/dcim/rackrole_list.html b/netbox/templates/dcim/rackrole_list.html
deleted file mode 100644
index 267ef3c7f..000000000
--- a/netbox/templates/dcim/rackrole_list.html
+++ /dev/null
@@ -1,18 +0,0 @@
-{% extends '_base.html' %}
-{% load buttons %}
-
-{% block content %}
-
- {% if perms.dcim.add_rackrole %}
- {% add_button 'dcim:rackrole_add' %}
- {% import_button 'dcim:rackrole_import' %}
- {% endif %}
- {% export_button content_type %}
-
-{% block title %}Rack Roles{% endblock %}
-
-
- {% include 'utilities/obj_table.html' with bulk_delete_url='dcim:rackrole_bulk_delete' %}
-
-
-{% endblock %}
diff --git a/netbox/templates/dcim/rearport_list.html b/netbox/templates/dcim/rearport_list.html
deleted file mode 100644
index cc603d620..000000000
--- a/netbox/templates/dcim/rearport_list.html
+++ /dev/null
@@ -1,17 +0,0 @@
-{% extends '_base.html' %}
-{% load buttons %}
-
-{% block content %}
-
- {% export_button content_type %}
-
-{% block title %}Rear Ports{% endblock %}
-
-
- {% include 'utilities/obj_table.html' with bulk_edit_url='dcim:rearport_bulk_edit' bulk_delete_url='dcim:rearport_bulk_delete' %}
-
-
- {% include 'inc/search_panel.html' %}
-
-
-{% endblock %}
diff --git a/netbox/templates/dcim/region_list.html b/netbox/templates/dcim/region_list.html
deleted file mode 100644
index ec1adfc06..000000000
--- a/netbox/templates/dcim/region_list.html
+++ /dev/null
@@ -1,21 +0,0 @@
-{% extends '_base.html' %}
-{% load buttons %}
-
-{% block content %}
-
- {% if perms.dcim.add_region %}
- {% add_button 'dcim:region_add' %}
- {% import_button 'dcim:region_import' %}
- {% endif %}
- {% export_button content_type %}
-
-{% block title %}Regions{% endblock %}
-
-
- {% include 'utilities/obj_table.html' with bulk_delete_url='dcim:region_bulk_delete' %}
-
-
- {% include 'inc/search_panel.html' %}
-
-
-{% endblock %}
diff --git a/netbox/templates/dcim/site_list.html b/netbox/templates/dcim/site_list.html
deleted file mode 100644
index ef9e0e411..000000000
--- a/netbox/templates/dcim/site_list.html
+++ /dev/null
@@ -1,21 +0,0 @@
-{% extends '_base.html' %}
-{% load buttons %}
-
-{% block content %}
-
- {% if perms.dcim.add_site %}
- {% add_button 'dcim:site_add' %}
- {% import_button 'dcim:site_import' %}
- {% endif %}
- {% export_button content_type %}
-
-{% block title %}Sites{% endblock %}
-
-
- {% include 'utilities/obj_table.html' with bulk_edit_url='dcim:site_bulk_edit' bulk_delete_url='dcim:site_bulk_delete' %}
-
-
- {% include 'inc/search_panel.html' %}
-
-
-{% endblock %}
diff --git a/netbox/templates/dcim/virtualchassis_list.html b/netbox/templates/dcim/virtualchassis_list.html
deleted file mode 100644
index 55cfc1691..000000000
--- a/netbox/templates/dcim/virtualchassis_list.html
+++ /dev/null
@@ -1,18 +0,0 @@
-{% extends '_base.html' %}
-{% load buttons %}
-{% load helpers %}
-
-{% block content %}
-
- {% export_button content_type %}
-
-{% block title %}Virtual Chassis{% endblock %}
-
-
- {% include 'utilities/obj_table.html' %}
-
-
- {% include 'inc/search_panel.html' %}
-
-
-{% endblock %}
diff --git a/netbox/templates/extras/configcontext_list.html b/netbox/templates/extras/configcontext_list.html
deleted file mode 100644
index f21be2836..000000000
--- a/netbox/templates/extras/configcontext_list.html
+++ /dev/null
@@ -1,19 +0,0 @@
-{% extends '_base.html' %}
-{% load buttons %}
-
-{% block content %}
-
- {% if perms.extras.add_configcontext %}
- {% add_button 'extras:configcontext_add' %}
- {% endif %}
-
- {% block title %}Config Contexts{% endblock %}
-
-
- {% include 'utilities/obj_table.html' with bulk_edit_url='extras:configcontext_bulk_edit' bulk_delete_url='extras:configcontext_bulk_delete' %}
-
-
- {% include 'inc/search_panel.html' %}
-
-
-{% endblock %}
diff --git a/netbox/templates/extras/objectchange_list.html b/netbox/templates/extras/objectchange_list.html
index e9be6ba69..3672f4f04 100644
--- a/netbox/templates/extras/objectchange_list.html
+++ b/netbox/templates/extras/objectchange_list.html
@@ -1,20 +1,9 @@
-{% extends '_base.html' %}
-{% load buttons %}
+{% extends 'utilities/obj_list.html' %}
-{% block content %}
-
- {% export_button content_type %}
-
-{% block title %}Changelog{% endblock %}
-
-
- {% include 'utilities/obj_table.html' %}
-
- Changelog retention: {% if settings.CHANGELOG_RETENTION %}{{ settings.CHANGELOG_RETENTION }} days{% else %}Indefinite{% endif %}
-
+{% block title %}Change Log{% endblock %}
+
+{% block sidebar %}
+
+ Change log retention: {% if settings.CHANGELOG_RETENTION %}{{ settings.CHANGELOG_RETENTION }} days{% else %}Indefinite{% endif %}
-
- {% include 'inc/search_panel.html' %}
-
-
{% endblock %}
diff --git a/netbox/templates/extras/tag_list.html b/netbox/templates/extras/tag_list.html
deleted file mode 100644
index c87b6c2e5..000000000
--- a/netbox/templates/extras/tag_list.html
+++ /dev/null
@@ -1,14 +0,0 @@
-{% extends '_base.html' %}
-{% load buttons %}
-
-{% block content %}
-
{% block title %}Tags{% endblock %}
-
-
- {% include 'utilities/obj_table.html' with bulk_edit_url='extras:tag_bulk_edit' bulk_delete_url='extras:tag_bulk_delete' %}
-
-
- {% include 'inc/search_panel.html' %}
-
-
-{% endblock %}
diff --git a/netbox/templates/inc/nav_menu.html b/netbox/templates/inc/nav_menu.html
index 55ac3e5c2..900d783f6 100644
--- a/netbox/templates/inc/nav_menu.html
+++ b/netbox/templates/inc/nav_menu.html
@@ -473,7 +473,7 @@