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 %} +
+
+ +
+
+
+
+ + + + +
+
+
+
+
+ {% if perms.dcim.change_device %} + + + Edit this device + + {% endif %} + {% if perms.dcim.delete_device %} + + + Delete this device + + {% endif %} +
+

{% block title %}{{ device }}{% endblock %}

+ {% include 'inc/created_updated.html' with obj=device %} + +{% 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
- - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - {% for vc_member in vc_members %} - - - - - - - {% endfor %}
DevicePositionMasterPrioritySite + {% 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 %} +
- {{ vc_member }} - {{ vc_member.vc_position }}{% if device.virtual_chassis.master == vc_member %}{% endif %}{{ vc_member.vc_priority|default:"" }}
- + {% if vc_members %} +
+
+ Virtual Chassis +
+ + + + + + + + {% for vc_member in vc_members %} + + + + + + + {% endfor %} +
DevicePositionMasterPriority
+ {{ vc_member }} + {{ vc_member.vc_position }}{% if device.virtual_chassis.master == vc_member %}{% endif %}{{ vc_member.vc_priority|default:"" }}
+ +
+ {% endif %} +
+
+ Management +
+ + + + + + + + + + + + + + + + + + + + + + {% if device.cluster %} + + + + {% endif %} - {% if perms.dcim.delete_virtualchassis %} - - Delete Virtual Chassis - +
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 %} +
Cluster + {% if device.cluster.group %} + {{ device.cluster.group }} + + {% endif %} + {{ device.cluster }} +
+
+ {% 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 -
- - - - - - - - - - - - - - - - - - - - - - {% if device.cluster %} - - - - - {% endif %} -
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 %} -
Cluster - {% if device.cluster.group %} - {{ device.cluster.group }} - - {% endif %} - {{ device.cluster }} -
- {% 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 %} + + + + {% endif %} + {% endfor %} + {% for pp in power_ports %} + {% include 'dcim/inc/powerport.html' %} + {% empty %} + {% if device.device_type.power_port_templates.exists %} + + + + {% endif %} + {% endfor %} +
+ No console ports defined + {% if perms.dcim.add_consoleport %} + + {% endif %} +
+ No power ports defined + {% if perms.dcim.add_powerport %} + + {% endif %} +
+ {% 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 %} - - - + {% if request.user.is_authenticated %} +
+
+ Secrets +
+ {% if secrets %} +
- No console ports defined - {% if perms.dcim.add_consoleport %} - - {% endif %} -
+ {% 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 %} -
- {% csrf_token %} -
+ {% 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 %} - - - - - - {% endfor %} -
- {{ rd }} - - {% if rd.rack %} - Rack {{ rd.rack }} - {% else %} - - {% endif %} - {{ rd.device_type.full_name }}
- {% else %} -
None found
- {% endif %} -
-
-
-
-
- {% if device_bays or device.device_type.is_parent_device %} - {% if perms.dcim.delete_devicebay %} -
- {% csrf_token %} - {% endif %}
- Device Bays + Images
- - - - {% if perms.dcim.change_devicebay or perms.dcim.delete_devicebay %} - - {% endif %} - - - - - - - {% for devicebay in device_bays %} - {% include 'dcim/inc/devicebay.html' %} - {% empty %} + {% include 'inc/image_attachments.html' with images=device.images.all %} + {% if perms.extras.add_imageattachment %} + + {% endif %} + +
+
+ Related Devices +
+ {% if related_devices %} +
NameInstalled Device
+ {% for rd in related_devices %} - + + + {% endfor %} - -
— No device bays defined — + {{ rd }} + + {% if rd.rack %} + Rack {{ rd.rack }} + {% else %} + + {% endif %} + {{ rd.device_type.full_name }}
- + + {% else %} +
None found
+ {% endif %}
- {% if perms.dcim.delete_devicebay %} -
+
+
+
+
+ {% if device_bays or device.device_type.is_parent_device %} + {% if perms.dcim.delete_devicebay %} +
+ {% csrf_token %} + {% endif %} +
+
+ Device Bays +
+ + + + {% if perms.dcim.change_devicebay or perms.dcim.delete_devicebay %} + + {% endif %} + + + + + + + {% for devicebay in device_bays %} + {% include 'dcim/inc/devicebay.html' %} + {% empty %} + + + + {% endfor %} + +
NameInstalled Device
— No device bays defined —
+ +
+ {% 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 %} -
- {% csrf_token %} - + {% if interfaces or device.device_type.is_network_device %} + {% if perms.dcim.change_interface or perms.dcim.delete_interface %} + + {% csrf_token %} + + {% endif %} +
+
+ Interfaces +
+ +
+
+ + + + {% if perms.dcim.change_interface or perms.dcim.delete_interface %} + + {% endif %} + + + + + + + + + + + {% for iface in interfaces %} + {% include 'dcim/inc/interface.html' %} + {% empty %} + + + + {% endfor %} + +
NameLAGDescriptionMTUMAC AddressConnection
— No interfaces defined —
+ +
+ {% if perms.dcim.delete_interface %} +
+ {% endif %} {% endif %} -
-
- Interfaces -
- + {% if cs_ports or device.device_type.is_console_server %} + {% if perms.dcim.delete_consoleserverport %} +
+ {% csrf_token %} + {% endif %} +
+
+ Console Server Ports +
+ + + + {% if perms.dcim.change_consoleserverport or perms.dcim.delete_consoleserverport %} + + {% endif %} + + + + + + + {% for csp in cs_ports %} + {% include 'dcim/inc/consoleserverport.html' %} + {% empty %} + + + + {% endfor %} + +
NameConnection
— No console server ports defined —
+
- - - - {% if perms.dcim.change_interface or perms.dcim.delete_interface %} - - {% endif %} - - - - - - - - - - - {% for iface in interfaces %} - {% include 'dcim/inc/interface.html' %} - {% empty %} + {% if perms.dcim.delete_consoleserverport %} + + {% endif %} + {% endif %} + {% if power_outlets or device.device_type.is_pdu %} + {% if perms.dcim.delete_poweroutlet %} + + {% csrf_token %} + {% endif %} +
+
+ Power Outlets +
+
NameLAGDescriptionMTUMAC AddressConnection
+ - + {% if perms.dcim.change_poweroutlet or perms.dcim.delete_poweroutlet %} + + {% endif %} + + + - {% endfor %} - -
— No interfaces defined —NameConnection
- -
- {% if perms.dcim.delete_interface %} - - {% endif %} - {% endif %} - {% if cs_ports or device.device_type.is_console_server %} - {% if perms.dcim.delete_consoleserverport %} -
- {% csrf_token %} - {% endif %} -
-
- Console Server Ports + + + {% for po in power_outlets %} + {% include 'dcim/inc/poweroutlet.html' %} + {% empty %} + + — No power outlets defined — + + {% endfor %} + + +
- - - - {% if perms.dcim.change_consoleserverport or perms.dcim.delete_consoleserverport %} - - {% endif %} - - - - - - - {% for csp in cs_ports %} - {% include 'dcim/inc/consoleserverport.html' %} - {% empty %} - - - - {% endfor %} - -
NameConnection
— No console server ports defined —
- -
- {% 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.change_poweroutlet or perms.dcim.delete_poweroutlet %} - - {% endif %} - - - - - - - {% for po in power_outlets %} - {% include 'dcim/inc/poweroutlet.html' %} - {% empty %} - - - - {% endfor %} - -
NameConnection
— No power outlets defined —
- -
- {% 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 -
- - - - - - - - - - - - - - - {% for item in inventory_items %} - {% with template_name='dcim/inc/inventoryitem.html' indent=0 %} - {% include template_name %} - {% endwith %} - {% endfor %} - -
NameManufacturerPart NumberSerial NumberAsset TagDescription
- {% 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 @@ -
-
- -
-
-
-
- - - - -
-
-
-
-
- {% if perms.dcim.change_device %} - - - Edit this device - - {% endif %} - {% if perms.dcim.delete_device %} - - - Delete this device - -{% endif %} -
-

{{ device }}

-{% include 'inc/created_updated.html' with obj=device %} - 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 @@ -
-
- -
-
-
-
- - - - -
-
-
-
-
- {% if perms.ipam.add_prefix and active_tab == 'prefixes' and first_available_prefix %} - - Add Child Prefix - - {% endif %} - {% if perms.ipam.add_ipaddress and active_tab == 'ip-addresses' and first_available_ip %} - - - Add an IP Address - - {% endif %} - {% if perms.ipam.change_prefix %} - - - Edit this prefix - - {% endif %} - {% if perms.ipam.delete_prefix %} - - - Delete this prefix - - {% endif %} -
-

{{ 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 @@ -
-
- -
-
-
-
- - - - -
-
-
-
-
- {% if perms.ipam.change_vlan %} - - - Edit this VLAN - - {% endif %} - {% if perms.ipam.delete_vlan %} - - - Delete this VLAN - - {% endif %} -
-

{% 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 %} +
+
+ +
+
+
+
+ + + + +
+
+
+
+
+ {% if perms.ipam.add_prefix and active_tab == 'prefixes' and first_available_prefix %} + + Add Child Prefix + + {% endif %} + {% if perms.ipam.add_ipaddress and active_tab == 'ip-addresses' and first_available_ip %} + + + Add an IP Address + + {% endif %} + {% if perms.ipam.change_prefix %} + + + Edit this prefix + + {% endif %} + {% if perms.ipam.delete_prefix %} + + + Delete this prefix + + {% endif %} +
+

{% 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 }} + + {% 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 }} - - {% 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 %} -
-
-
-
- Prefixes +
+
+
+ + + +
- {% include 'responsive_table.html' with table=prefix_table %} - {% if perms.ipam.add_prefix %} - - {% endif %} +
-
-
+
+
+ {% if perms.ipam.change_vlan %} + + + Edit this VLAN + + {% endif %} + {% if perms.ipam.delete_vlan %} + + + Delete this VLAN + + {% endif %} +
+

{% 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 %}