diff --git a/netbox/dcim/views.py b/netbox/dcim/views.py
index 6e7aa070c..d4851845a 100644
--- a/netbox/dcim/views.py
+++ b/netbox/dcim/views.py
@@ -945,6 +945,7 @@ class DeviceInventoryView(View):
return render(request, 'dcim/device_inventory.html', {
'device': device,
'inventory_items': inventory_items,
+ 'active_tab': 'inventory',
})
@@ -957,6 +958,7 @@ class DeviceStatusView(PermissionRequiredMixin, View):
return render(request, 'dcim/device_status.html', {
'device': device,
+ 'active_tab': 'status',
})
@@ -975,6 +977,7 @@ class DeviceLLDPNeighborsView(PermissionRequiredMixin, View):
return render(request, 'dcim/device_lldp_neighbors.html', {
'device': device,
'interfaces': interfaces,
+ 'active_tab': 'lldp-neighbors',
})
@@ -987,6 +990,7 @@ class DeviceConfigView(PermissionRequiredMixin, View):
return render(request, 'dcim/device_config.html', {
'device': device,
+ 'active_tab': 'config',
})
diff --git a/netbox/ipam/views.py b/netbox/ipam/views.py
index 1d4575e34..70ef83f49 100644
--- a/netbox/ipam/views.py
+++ b/netbox/ipam/views.py
@@ -522,6 +522,7 @@ class PrefixPrefixesView(View):
'prefix_table': prefix_table,
'permissions': permissions,
'bulk_querystring': 'vrf_id={}&within={}'.format(prefix.vrf.pk if prefix.vrf else '0', prefix.prefix),
+ 'active_tab': 'prefixes',
})
@@ -560,6 +561,7 @@ class PrefixIPAddressesView(View):
'ip_table': ip_table,
'permissions': permissions,
'bulk_querystring': 'vrf_id={}&parent={}'.format(prefix.vrf.pk if prefix.vrf else '0', prefix.prefix),
+ 'active_tab': 'ip-addresses',
})
@@ -859,8 +861,6 @@ class VLANMembersView(View):
members = vlan.get_members().select_related('device', 'virtual_machine')
members_table = tables.VLANMemberTable(members)
- # if request.user.has_perm('dcim.change_interface'):
- # members_table.columns.show('pk')
paginate = {
'klass': EnhancedPaginator,
@@ -868,18 +868,10 @@ class VLANMembersView(View):
}
RequestConfig(request, paginate).configure(members_table)
- # Compile permissions list for rendering the object table
- # permissions = {
- # 'add': request.user.has_perm('ipam.add_ipaddress'),
- # 'change': request.user.has_perm('ipam.change_ipaddress'),
- # 'delete': request.user.has_perm('ipam.delete_ipaddress'),
- # }
-
return render(request, 'ipam/vlan_members.html', {
'vlan': vlan,
'members_table': members_table,
- # 'permissions': permissions,
- # 'bulk_querystring': 'vrf_id={}&parent={}'.format(prefix.vrf.pk if prefix.vrf else '0', prefix.prefix),
+ 'active_tab': 'members',
})
diff --git a/netbox/templates/_base.html b/netbox/templates/_base.html
index f34c0fbde..27ebb052d 100644
--- a/netbox/templates/_base.html
+++ b/netbox/templates/_base.html
@@ -34,6 +34,7 @@
{{ message }}
{% endfor %}
+ {% block header %}{% endblock %}
{% block content %}{% endblock %}
{% if settings.BANNER_BOTTOM %}
diff --git a/netbox/templates/dcim/device.html b/netbox/templates/dcim/device.html
index 1b1d3d23a..0cc1e4cf8 100644
--- a/netbox/templates/dcim/device.html
+++ b/netbox/templates/dcim/device.html
@@ -2,631 +2,696 @@
{% load static from staticfiles %}
{% load helpers %}
-{% block title %}{{ device }}{% endblock %}
+{% block header %}
+
+
+ {% block title %}{{ device }}{% endblock %}
+ {% include 'inc/created_updated.html' with obj=device %}
+
+
+ Info
+
+
+ Inventory
+
+ {% if perms.dcim.napalm_read %}
+ {% if device.status != 1 %}
+ {% include 'dcim/inc/device_napalm_tabs.html' with disabled_message='Device must be in active status' %}
+ {% elif not device.platform %}
+ {% include 'dcim/inc/device_napalm_tabs.html' with disabled_message='No platform assigned to this device' %}
+ {% elif not device.platform.napalm_driver %}
+ {% include 'dcim/inc/device_napalm_tabs.html' with disabled_message='No NAPALM driver assigned for this platform' %}
+ {% elif not device.primary_ip %}
+ {% include 'dcim/inc/device_napalm_tabs.html' with disabled_message='No primary IP address assigned to this device' %}
+ {% else %}
+ {% include 'dcim/inc/device_napalm_tabs.html' %}
+ {% endif %}
+ {% endif %}
+
+{% endblock %}
{% block content %}
-{% include 'dcim/inc/device_header.html' with active_tab='info' %}
-
-
-
-
- Device
-
-
-
- Site
-
- {% if device.site.region %}
- {{ device.site.region }}
-
- {% endif %}
- {{ device.site }}
-
-
-
- Rack
-
- {% if device.rack %}
- {% if device.rack.group %}
- {{ device.rack.group }}
-
- {% endif %}
- {{ device.rack }}
- {% else %}
- None
- {% endif %}
-
-
-
- Position
-
- {% if device.parent_bay %}
- {% with device.parent_bay.device as parent %}
- {{ parent }} {{ device.parent_bay }}
- {% if parent.position %}
- (U{{ parent.position }} / {{ parent.get_face_display }})
- {% endif %}
- {% endwith %}
- {% elif device.rack and device.position %}
- U{{ device.position }} / {{ device.get_face_display }}
- {% elif device.rack and device.device_type.u_height %}
- Not racked
- {% else %}
- N/A
- {% endif %}
-
-
-
- Tenant
-
- {% if device.tenant %}
- {% if device.tenant.group %}
- {{ device.tenant.group }}
-
- {% endif %}
- {{ device.tenant }}
- {% else %}
- None
- {% endif %}
-
-
-
- Device Type
-
- {{ device.device_type.full_name }} ({{ device.device_type.u_height }}U)
-
-
-
- Serial Number
-
- {% if device.serial %}
- {{ device.serial }}
- {% else %}
- N/A
- {% endif %}
-
-
-
- Asset Tag
-
- {% if device.asset_tag %}
- {{ device.asset_tag }}
- {% else %}
- N/A
- {% endif %}
-
-
-
- Tags
-
- {% for tag in device.tags.all %}
- {% tag 'dcim:device_list' tag %}
- {% empty %}
- N/A
- {% endfor %}
-
-
-
-
- {% if vc_members %}
+
+
- Virtual Chassis
+ Device
- Device
- Position
- Master
- Priority
+ Site
+
+ {% if device.site.region %}
+ {{ device.site.region }}
+
+ {% endif %}
+ {{ device.site }}
+
+
+
+ Rack
+
+ {% if device.rack %}
+ {% if device.rack.group %}
+ {{ device.rack.group }}
+
+ {% endif %}
+ {{ device.rack }}
+ {% else %}
+ None
+ {% endif %}
+
+
+
+ Position
+
+ {% if device.parent_bay %}
+ {% with device.parent_bay.device as parent %}
+ {{ parent }} {{ device.parent_bay }}
+ {% if parent.position %}
+ (U{{ parent.position }} / {{ parent.get_face_display }})
+ {% endif %}
+ {% endwith %}
+ {% elif device.rack and device.position %}
+ U{{ device.position }} / {{ device.get_face_display }}
+ {% elif device.rack and device.device_type.u_height %}
+ Not racked
+ {% else %}
+ N/A
+ {% endif %}
+
+
+
+ Tenant
+
+ {% if device.tenant %}
+ {% if device.tenant.group %}
+ {{ device.tenant.group }}
+
+ {% endif %}
+ {{ device.tenant }}
+ {% else %}
+ None
+ {% endif %}
+
+
+
+ Device Type
+
+ {{ device.device_type.full_name }} ({{ device.device_type.u_height }}U)
+
+
+
+ Serial Number
+
+ {% if device.serial %}
+ {{ device.serial }}
+ {% else %}
+ N/A
+ {% endif %}
+
+
+
+ Asset Tag
+
+ {% if device.asset_tag %}
+ {{ device.asset_tag }}
+ {% else %}
+ N/A
+ {% endif %}
+
+
+
+ Tags
+
+ {% for tag in device.tags.all %}
+ {% tag 'dcim:device_list' tag %}
+ {% empty %}
+ N/A
+ {% endfor %}
+
- {% for vc_member in vc_members %}
-
-
- {{ vc_member }}
-
- {{ vc_member.vc_position }}
- {% if device.virtual_chassis.master == vc_member %} {% endif %}
- {{ vc_member.vc_priority|default:"" }}
-
- {% endfor %}
-
+ {% if vc_members %}
+
+
+ Virtual Chassis
+
+
+
+ Device
+ Position
+ Master
+ Priority
+
+ {% for vc_member in vc_members %}
+
+
+ {{ vc_member }}
+
+ {{ vc_member.vc_position }}
+ {% if device.virtual_chassis.master == vc_member %} {% endif %}
+ {{ vc_member.vc_priority|default:"" }}
+
+ {% endfor %}
+
+
+
+ {% endif %}
+
+
+ Management
+
+
+
+ Role
+
+ {{ device.device_role }}
+
+
+
+ Platform
+
+ {% if device.platform %}
+ {{ device.platform }}
+ {% else %}
+ None
+ {% endif %}
+
+
+
+ Status
+
+ {{ device.get_status_display }}
+
+
+
+ Primary IPv4
+
+ {% if device.primary_ip4 %}
+ {{ device.primary_ip4.address.ip }}
+ {% if device.primary_ip4.nat_inside %}
+ (NAT for {{ device.primary_ip4.nat_inside.address.ip }})
+ {% elif device.primary_ip4.nat_outside %}
+ (NAT: {{ device.primary_ip4.nat_outside.address.ip }})
+ {% endif %}
+ {% else %}
+ N/A
+ {% endif %}
+
+
+
+ Primary IPv6
+
+ {% if device.primary_ip6 %}
+ {{ device.primary_ip6.address.ip }}
+ {% if device.primary_ip6.nat_inside %}
+ (NAT for {{ device.primary_ip6.nat_inside.address.ip }})
+ {% elif device.primary_ip6.nat_outside %}
+ (NAT: {{ device.primary_ip6.nat_outside.address.ip }})
+ {% endif %}
+ {% else %}
+ N/A
+ {% endif %}
+
+
+ {% if device.cluster %}
+
+ Cluster
+
+ {% if device.cluster.group %}
+ {{ device.cluster.group }}
+
+ {% endif %}
+ {{ device.cluster }}
+
+
{% endif %}
- {% if perms.dcim.delete_virtualchassis %}
-
- Delete Virtual Chassis
-
+
+
+ {% with device.get_custom_fields as custom_fields %}
+ {% include 'inc/custom_fields_panel.html' %}
+ {% endwith %}
+
+
+ Comments
+
+
+ {% if device.comments %}
+ {{ device.comments|gfm }}
+ {% else %}
+ None
{% endif %}
- {% endif %}
-
-
- Management
-
-
-
- Role
-
- {{ device.device_role }}
-
-
-
- Platform
-
- {% if device.platform %}
- {{ device.platform }}
- {% else %}
- None
- {% endif %}
-
-
-
- Status
-
- {{ device.get_status_display }}
-
-
-
- Primary IPv4
-
- {% if device.primary_ip4 %}
- {{ device.primary_ip4.address.ip }}
- {% if device.primary_ip4.nat_inside %}
- (NAT for {{ device.primary_ip4.nat_inside.address.ip }})
- {% elif device.primary_ip4.nat_outside %}
- (NAT: {{ device.primary_ip4.nat_outside.address.ip }})
- {% endif %}
- {% else %}
- N/A
- {% endif %}
-
-
-
- Primary IPv6
-
- {% if device.primary_ip6 %}
- {{ device.primary_ip6.address.ip }}
- {% if device.primary_ip6.nat_inside %}
- (NAT for {{ device.primary_ip6.nat_inside.address.ip }})
- {% elif device.primary_ip6.nat_outside %}
- (NAT: {{ device.primary_ip6.nat_outside.address.ip }})
- {% endif %}
- {% else %}
- N/A
- {% endif %}
-
-
- {% if device.cluster %}
-
- Cluster
-
- {% if device.cluster.group %}
- {{ device.cluster.group }}
-
- {% endif %}
- {{ device.cluster }}
-
-
- {% endif %}
-
- {% with device.get_custom_fields as custom_fields %}
- {% include 'inc/custom_fields_panel.html' %}
- {% endwith %}
-
-
- Comments
-
-
- {% if device.comments %}
- {{ device.comments|gfm }}
- {% else %}
-
None
+
+
+
+ Console / Power
+
+
+ {% for cp in console_ports %}
+ {% include 'dcim/inc/consoleport.html' %}
+ {% empty %}
+ {% if device.device_type.console_port_templates.exists %}
+
+
+ No console ports defined
+ {% if perms.dcim.add_consoleport %}
+
+ {% endif %}
+
+
+ {% endif %}
+ {% endfor %}
+ {% for pp in power_ports %}
+ {% include 'dcim/inc/powerport.html' %}
+ {% empty %}
+ {% if device.device_type.power_port_templates.exists %}
+
+
+ No power ports defined
+ {% if perms.dcim.add_powerport %}
+
+ {% endif %}
+
+
+ {% endif %}
+ {% endfor %}
+
+ {% if perms.dcim.add_interface or perms.dcim.add_consoleport or perms.dcim.add_powerport %}
+
{% endif %}
-
-
-
-
-
- Console / Power
-
-
- {% for cp in console_ports %}
- {% include 'dcim/inc/consoleport.html' %}
- {% empty %}
- {% if device.device_type.console_port_templates.exists %}
-
-
- No console ports defined
- {% if perms.dcim.add_consoleport %}
-
- {% endif %}
-
-
+ {% if request.user.is_authenticated %}
+
+
+ Secrets
+
+ {% if secrets %}
+
+ {% for secret in secrets %}
+ {% include 'secrets/inc/secret_tr.html' %}
+ {% endfor %}
+
+ {% else %}
+
+ None found
+
{% endif %}
- {% endfor %}
- {% for pp in power_ports %}
- {% include 'dcim/inc/powerport.html' %}
- {% empty %}
- {% if device.device_type.power_port_templates.exists %}
-
-
- No power ports defined
- {% if perms.dcim.add_powerport %}
-
- {% endif %}
-
-
- {% endif %}
- {% endfor %}
-
- {% if perms.dcim.add_interface or perms.dcim.add_consoleport or perms.dcim.add_powerport %}
-
{% endif %}
-
- {% if request.user.is_authenticated %}
- Secrets
+ Services
- {% if secrets %}
+ {% if services %}
- {% for secret in secrets %}
- {% include 'secrets/inc/secret_tr.html' %}
+ {% for service in services %}
+ {% include 'ipam/inc/service.html' %}
{% endfor %}
{% else %}
- None found
+ None
{% endif %}
- {% if perms.secrets.add_secret %}
-
+ {% if perms.ipam.add_service %}
{% endif %}
- {% endif %}
-
-
- Services
-
- {% if services %}
-
- {% for service in services %}
- {% include 'ipam/inc/service.html' %}
- {% endfor %}
-
- {% else %}
-
- None
-
- {% endif %}
- {% if perms.ipam.add_service %}
-
- {% endif %}
-
-
-
- Images
-
- {% include 'inc/image_attachments.html' with images=device.images.all %}
- {% if perms.extras.add_imageattachment %}
-
- {% endif %}
-
-
-
- Related Devices
-
- {% if related_devices %}
-
- {% for rd in related_devices %}
-
-
- {{ rd }}
-
-
- {% if rd.rack %}
- Rack {{ rd.rack }}
- {% else %}
- —
- {% endif %}
-
- {{ rd.device_type.full_name }}
-
- {% endfor %}
-
- {% else %}
-
None found
- {% endif %}
-
-
-
-
-
- {% if device_bays or device.device_type.is_parent_device %}
- {% if perms.dcim.delete_devicebay %}
-
+
+
+
+
+ {% if device_bays or device.device_type.is_parent_device %}
+ {% if perms.dcim.delete_devicebay %}
+
+ {% endif %}
{% endif %}
- {% endif %}
- {% if interfaces or device.device_type.is_network_device %}
- {% if perms.dcim.change_interface or perms.dcim.delete_interface %}
-
+ {% endif %}
{% endif %}
-
-
-
Interfaces
-
-
- Show IPs
-
+ {% if cs_ports or device.device_type.is_console_server %}
+ {% if perms.dcim.delete_consoleserverport %}
+
-
-
-
- {% if perms.dcim.delete_consoleserverport %}
-
+ {% if perms.dcim.delete_poweroutlet %}
+
+ {% endif %}
{% endif %}
- {% endif %}
- {% if power_outlets or device.device_type.is_pdu %}
- {% if perms.dcim.delete_poweroutlet %}
-
- {% csrf_token %}
- {% endif %}
-
-
- Power Outlets
-
-
-
-
- {% if perms.dcim.delete_poweroutlet %}
-
- {% endif %}
- {% endif %}
-
-
+
+
{% include 'inc/graphs_modal.html' %}
{% include 'secrets/inc/private_key_modal.html' %}
{% endblock %}
diff --git a/netbox/templates/dcim/device_config.html b/netbox/templates/dcim/device_config.html
index b62ff0211..210a9379a 100644
--- a/netbox/templates/dcim/device_config.html
+++ b/netbox/templates/dcim/device_config.html
@@ -1,11 +1,10 @@
-{% extends '_base.html' %}
+{% extends 'dcim/device.html' %}
{% load staticfiles %}
{% block title %}{{ device }} - Config{% endblock %}
{% block content %}
{% include 'inc/ajax_loader.html' %}
- {% include 'dcim/inc/device_header.html' with active_tab='config' %}
diff --git a/netbox/templates/dcim/device_inventory.html b/netbox/templates/dcim/device_inventory.html
index 1db2dcefa..1efbd0fbc 100644
--- a/netbox/templates/dcim/device_inventory.html
+++ b/netbox/templates/dcim/device_inventory.html
@@ -1,77 +1,76 @@
-{% extends '_base.html' %}
+{% extends 'dcim/device.html' %}
{% block title %}{{ device }} - Inventory{% endblock %}
{% block content %}
-{% include 'dcim/inc/device_header.html' with active_tab='inventory' %}
-
-
-
-
- Chassis
-
-
-
- Model
- {{ device.device_type.full_name }}
-
-
- Serial Number
-
- {% if device.serial %}
- {{ device.serial }}
- {% else %}
- N/A
- {% endif %}
-
-
-
- Asset Tag
-
- {% if device.asset_tag %}
- {{ device.asset_tag }}
- {% else %}
- N/A
- {% endif %}
-
-
-
-
-
-
-
-
- Hardware
-
-
-
-
- Name
-
- Manufacturer
- Part Number
- Serial Number
- Asset Tag
- Description
-
-
-
-
- {% for item in inventory_items %}
- {% with template_name='dcim/inc/inventoryitem.html' indent=0 %}
- {% include template_name %}
- {% endwith %}
- {% endfor %}
-
-
- {% if perms.dcim.add_inventoryitem %}
-
{% endblock %}
diff --git a/netbox/templates/dcim/device_lldp_neighbors.html b/netbox/templates/dcim/device_lldp_neighbors.html
index 0e423ad56..c0c82f459 100644
--- a/netbox/templates/dcim/device_lldp_neighbors.html
+++ b/netbox/templates/dcim/device_lldp_neighbors.html
@@ -1,10 +1,9 @@
-{% extends '_base.html' %}
+{% extends 'dcim/device.html' %}
{% block title %}{{ device }} - LLDP Neighbors{% endblock %}
{% block content %}
{% include 'inc/ajax_loader.html' %}
- {% include 'dcim/inc/device_header.html' with active_tab='lldp-neighbors' %}
LLDP Neighbors
diff --git a/netbox/templates/dcim/device_status.html b/netbox/templates/dcim/device_status.html
index 7c62b3971..7743cc635 100644
--- a/netbox/templates/dcim/device_status.html
+++ b/netbox/templates/dcim/device_status.html
@@ -1,11 +1,10 @@
-{% extends '_base.html' %}
+{% extends 'dcim/device.html' %}
{% load staticfiles %}
{% block title %}{{ device }} - Status{% endblock %}
{% block content %}
{% include 'inc/ajax_loader.html' %}
- {% include 'dcim/inc/device_header.html' with active_tab='status' %}
diff --git a/netbox/templates/dcim/inc/device_header.html b/netbox/templates/dcim/inc/device_header.html
deleted file mode 100644
index 92acd297d..000000000
--- a/netbox/templates/dcim/inc/device_header.html
+++ /dev/null
@@ -1,65 +0,0 @@
-
-
-
{{ device }}
-{% include 'inc/created_updated.html' with obj=device %}
-
-
- Info
-
-
- Inventory
-
- {% if perms.dcim.napalm_read %}
- {% if device.status != 1 %}
- {% include 'dcim/inc/device_napalm_tabs.html' with disabled_message='Device must be in active status' %}
- {% elif not device.platform %}
- {% include 'dcim/inc/device_napalm_tabs.html' with disabled_message='No platform assigned to this device' %}
- {% elif not device.platform.napalm_driver %}
- {% include 'dcim/inc/device_napalm_tabs.html' with disabled_message='No NAPALM driver assigned for this platform' %}
- {% elif not device.primary_ip %}
- {% include 'dcim/inc/device_napalm_tabs.html' with disabled_message='No primary IP address assigned to this device' %}
- {% else %}
- {% include 'dcim/inc/device_napalm_tabs.html' %}
- {% endif %}
- {% endif %}
-
diff --git a/netbox/templates/ipam/inc/prefix_header.html b/netbox/templates/ipam/inc/prefix_header.html
deleted file mode 100644
index f3c694c64..000000000
--- a/netbox/templates/ipam/inc/prefix_header.html
+++ /dev/null
@@ -1,55 +0,0 @@
-
-
-
{{ prefix }}
-{% include 'inc/created_updated.html' with obj=prefix %}
-
diff --git a/netbox/templates/ipam/inc/vlan_header.html b/netbox/templates/ipam/inc/vlan_header.html
deleted file mode 100644
index bf5d4ccdd..000000000
--- a/netbox/templates/ipam/inc/vlan_header.html
+++ /dev/null
@@ -1,46 +0,0 @@
-
-
-
{% block title %}VLAN {{ vlan.display_name }}{% endblock %}
-{% include 'inc/created_updated.html' with obj=vlan %}
-
diff --git a/netbox/templates/ipam/prefix.html b/netbox/templates/ipam/prefix.html
index 29e9c07a0..c24e02414 100644
--- a/netbox/templates/ipam/prefix.html
+++ b/netbox/templates/ipam/prefix.html
@@ -1,152 +1,207 @@
{% extends '_base.html' %}
{% load helpers %}
-{% block title %}{{ prefix }}{% endblock %}
+{% block header %}
+
+
+
{% block title %}{{ prefix }}{% endblock %}
+ {% include 'inc/created_updated.html' with obj=prefix %}
+
+{% endblock %}
{% block content %}
-{% include 'ipam/inc/prefix_header.html' with active_tab='prefix' %}
-
-
-
-
-
Prefix
+
+
+
+
+ Prefix
+
+
+
+ Family
+ {{ prefix.get_family_display }}
+
+
+ VRF
+
+ {% if prefix.vrf %}
+ {{ prefix.vrf }} ({{ prefix.vrf.rd }})
+ {% else %}
+ Global
+ {% endif %}
+
+
+
+ Tenant
+
+ {% if prefix.tenant %}
+ {% if prefix.tenant.group %}
+ {{ prefix.tenant.group }}
+
+ {% endif %}
+ {{ prefix.tenant }}
+ {% elif prefix.vrf.tenant %}
+ {% if prefix.vrf.tenant.group %}
+ {{ prefix.vrf.tenant.group }}
+
+ {% endif %}
+ {{ prefix.vrf.tenant }}
+ Inherited
+ {% else %}
+ None
+ {% endif %}
+
+
+
+ Aggregate
+
+ {% if aggregate %}
+ {{ aggregate.prefix }} ({{ aggregate.rir }})
+ {% else %}
+ None
+ {% endif %}
+
+
+
+ Site
+
+ {% if prefix.site %}
+ {% if prefix.site.region %}
+ {{ prefix.site.region }}
+
+ {% endif %}
+ {{ prefix.site }}
+ {% else %}
+ None
+ {% endif %}
+
+
+
+ VLAN
+
+ {% if prefix.vlan %}
+ {% if prefix.vlan.group %}
+ {{ prefix.vlan.group }}
+
+ {% endif %}
+ {{ prefix.vlan.display_name }}
+ {% else %}
+ None
+ {% endif %}
+
+
+
+ Status
+
+ {{ prefix.get_status_display }}
+
+
+
+ Role
+
+ {% if prefix.role %}
+ {{ prefix.role }}
+ {% else %}
+ None
+ {% endif %}
+
+
+
+ Description
+
+ {% if prefix.description %}
+ {{ prefix.description }}
+ {% else %}
+ N/A
+ {% endif %}
+
+
+
+ Is a pool
+
+ {% if prefix.is_pool %}
+
+ {% else %}
+
+ {% endif %}
+
+
+
+ Tags
+
+ {% for tag in prefix.tags.all %}
+ {% tag 'ipam:prefix_list' tag %}
+ {% empty %}
+ N/A
+ {% endfor %}
+
+
+
+ Utilization
+ {% utilization_graph prefix.get_utilization %}
+
+
-
-
- Family
- {{ prefix.get_family_display }}
-
-
- VRF
-
- {% if prefix.vrf %}
- {{ prefix.vrf }} ({{ prefix.vrf.rd }})
- {% else %}
- Global
- {% endif %}
-
-
-
- Tenant
-
- {% if prefix.tenant %}
- {% if prefix.tenant.group %}
- {{ prefix.tenant.group }}
-
- {% endif %}
- {{ prefix.tenant }}
- {% elif prefix.vrf.tenant %}
- {% if prefix.vrf.tenant.group %}
- {{ prefix.vrf.tenant.group }}
-
- {% endif %}
- {{ prefix.vrf.tenant }}
- Inherited
- {% else %}
- None
- {% endif %}
-
-
-
- Aggregate
-
- {% if aggregate %}
- {{ aggregate.prefix }} ({{ aggregate.rir }})
- {% else %}
- None
- {% endif %}
-
-
-
- Site
-
- {% if prefix.site %}
- {% if prefix.site.region %}
- {{ prefix.site.region }}
-
- {% endif %}
- {{ prefix.site }}
- {% else %}
- None
- {% endif %}
-
-
-
- VLAN
-
- {% if prefix.vlan %}
- {% if prefix.vlan.group %}
- {{ prefix.vlan.group }}
-
- {% endif %}
- {{ prefix.vlan.display_name }}
- {% else %}
- None
- {% endif %}
-
-
-
- Status
-
- {{ prefix.get_status_display }}
-
-
-
- Role
-
- {% if prefix.role %}
- {{ prefix.role }}
- {% else %}
- None
- {% endif %}
-
-
-
- Description
-
- {% if prefix.description %}
- {{ prefix.description }}
- {% else %}
- N/A
- {% endif %}
-
-
-
- Is a pool
-
- {% if prefix.is_pool %}
-
- {% else %}
-
- {% endif %}
-
-
-
- Tags
-
- {% for tag in prefix.tags.all %}
- {% tag 'ipam:prefix_list' tag %}
- {% empty %}
- N/A
- {% endfor %}
-
-
-
- Utilization
- {% utilization_graph prefix.get_utilization %}
-
-
+ {% with prefix.get_custom_fields as custom_fields %}
+ {% include 'inc/custom_fields_panel.html' %}
+ {% endwith %}
+
- {% with prefix.get_custom_fields as custom_fields %}
- {% include 'inc/custom_fields_panel.html' %}
- {% endwith %}
-
-
-
- {% if duplicate_prefix_table.rows %}
- {% include 'panel_table.html' with table=duplicate_prefix_table heading='Duplicate Prefixes' panel_class='danger' %}
- {% endif %}
- {% include 'panel_table.html' with table=parent_prefix_table heading='Parent Prefixes' panel_class='default' %}
-
-
+
+ {% if duplicate_prefix_table.rows %}
+ {% include 'panel_table.html' with table=duplicate_prefix_table heading='Duplicate Prefixes' panel_class='danger' %}
+ {% endif %}
+ {% include 'panel_table.html' with table=parent_prefix_table heading='Parent Prefixes' panel_class='default' %}
+
+
{% endblock %}
diff --git a/netbox/templates/ipam/prefix_ipaddresses.html b/netbox/templates/ipam/prefix_ipaddresses.html
index 02e90569d..1da5b7518 100644
--- a/netbox/templates/ipam/prefix_ipaddresses.html
+++ b/netbox/templates/ipam/prefix_ipaddresses.html
@@ -1,9 +1,8 @@
-{% extends '_base.html' %}
+{% extends 'ipam/prefix.html' %}
-{% block title %}{{ prefix }} - IP Addresses{% endblock %}
+{% block title %}{{ block.super }} - IP Addresses{% endblock %}
{% block content %}
- {% include 'ipam/inc/prefix_header.html' with active_tab='ip-addresses' %}
{% include 'utilities/obj_table.html' with table=ip_table table_template='panel_table.html' heading='IP Addresses' bulk_edit_url='ipam:ipaddress_bulk_edit' bulk_delete_url='ipam:ipaddress_bulk_delete' %}
diff --git a/netbox/templates/ipam/prefix_prefixes.html b/netbox/templates/ipam/prefix_prefixes.html
index 2535b672d..9cf50a640 100644
--- a/netbox/templates/ipam/prefix_prefixes.html
+++ b/netbox/templates/ipam/prefix_prefixes.html
@@ -1,9 +1,8 @@
-{% extends '_base.html' %}
+{% extends 'ipam/prefix.html' %}
-{% block title %}{{ prefix }} - Prefixes{% endblock %}
+{% block title %}{{ block.super }} - Prefixes{% endblock %}
{% block content %}
- {% include 'ipam/inc/prefix_header.html' with active_tab='prefixes' %}
{% include 'utilities/obj_table.html' with table=prefix_table table_template='panel_table.html' heading='Child Prefixes' bulk_edit_url='ipam:prefix_bulk_edit' bulk_delete_url='ipam:prefix_bulk_delete' parent=prefix %}
diff --git a/netbox/templates/ipam/vlan.html b/netbox/templates/ipam/vlan.html
index ac874282f..76ee5f65e 100644
--- a/netbox/templates/ipam/vlan.html
+++ b/netbox/templates/ipam/vlan.html
@@ -1,118 +1,166 @@
{% extends '_base.html' %}
{% load helpers %}
-{% block content %}
-{% include 'ipam/inc/vlan_header.html' with active_tab='vlan' %}
-
-
-
-
- VLAN
-
-
-
- Site
-
- {% if vlan.site %}
- {% if vlan.site.region %}
- {{ vlan.site.region }}
-
- {% endif %}
- {{ vlan.site }}
- {% else %}
- None
- {% endif %}
-
-
-
- Group
-
- {% if vlan.group %}
- {{ vlan.group }}
- {% else %}
- None
- {% endif %}
-
-
-
- VLAN ID
- {{ vlan.vid }}
-
-
- Name
- {{ vlan.name }}
-
-
- Tenant
-
- {% if vlan.tenant %}
- {% if vlan.tenant.group %}
- {{ vlan.tenant.group }}
-
- {% endif %}
- {{ vlan.tenant }}
- {% else %}
- None
- {% endif %}
-
-
-
- Status
-
- {{ vlan.get_status_display }}
-
-
-
- Role
-
- {% if vlan.role %}
- {{ vlan.role }}
- {% else %}
- None
- {% endif %}
-
-
-
- Description
-
- {% if vlan.description %}
- {{ vlan.description }}
- {% else %}
- N/A
- {% endif %}
-
-
-
- Tags
-
- {% for tag in vlan.tags.all %}
- {% tag 'ipam:vlan_list' tag %}
- {% empty %}
- N/A
- {% endfor %}
-
-
-
+{% block header %}
+
+
- {% with vlan.get_custom_fields as custom_fields %}
- {% include 'inc/custom_fields_panel.html' %}
- {% endwith %}
-
-
+
+
{% block title %}VLAN {{ vlan.display_name }}{% endblock %}
+ {% include 'inc/created_updated.html' with obj=vlan %}
+
+{% endblock %}
+
+{% block content %}
+
+
+
+
+ VLAN
+
+
+
+ Site
+
+ {% if vlan.site %}
+ {% if vlan.site.region %}
+ {{ vlan.site.region }}
+
+ {% endif %}
+ {{ vlan.site }}
+ {% else %}
+ None
+ {% endif %}
+
+
+
+ Group
+
+ {% if vlan.group %}
+ {{ vlan.group }}
+ {% else %}
+ None
+ {% endif %}
+
+
+
+ VLAN ID
+ {{ vlan.vid }}
+
+
+ Name
+ {{ vlan.name }}
+
+
+ Tenant
+
+ {% if vlan.tenant %}
+ {% if vlan.tenant.group %}
+ {{ vlan.tenant.group }}
+
+ {% endif %}
+ {{ vlan.tenant }}
+ {% else %}
+ None
+ {% endif %}
+
+
+
+ Status
+
+ {{ vlan.get_status_display }}
+
+
+
+ Role
+
+ {% if vlan.role %}
+ {{ vlan.role }}
+ {% else %}
+ None
+ {% endif %}
+
+
+
+ Description
+
+ {% if vlan.description %}
+ {{ vlan.description }}
+ {% else %}
+ N/A
+ {% endif %}
+
+
+
+ Tags
+
+ {% for tag in vlan.tags.all %}
+ {% tag 'ipam:vlan_list' tag %}
+ {% empty %}
+ N/A
+ {% endfor %}
+
+
+
+
+ {% with vlan.get_custom_fields as custom_fields %}
+ {% include 'inc/custom_fields_panel.html' %}
+ {% endwith %}
+
+
+
+
+ Prefixes
+
+ {% include 'responsive_table.html' with table=prefix_table %}
+ {% if perms.ipam.add_prefix %}
+
+ {% endif %}
+
+
+
{% endblock %}
diff --git a/netbox/templates/ipam/vlan_members.html b/netbox/templates/ipam/vlan_members.html
index 27d5d50f7..9fc803e09 100644
--- a/netbox/templates/ipam/vlan_members.html
+++ b/netbox/templates/ipam/vlan_members.html
@@ -1,9 +1,8 @@
-{% extends '_base.html' %}
+{% extends 'ipam/vlan.html' %}
-{% block title %}{{ vlan }} - Members{% endblock %}
+{% block title %}{{ block.super }} - Members{% endblock %}
{% block content %}
- {% include 'ipam/inc/vlan_header.html' with active_tab='members' %}
{% include 'utilities/obj_table.html' with table=members_table table_template='panel_table.html' heading='VLAN Members' parent=vlan %}