diff --git a/netbox/templates/circuits/circuit.html b/netbox/templates/circuits/circuit.html
index 5c86cb24e..3e449ce22 100644
--- a/netbox/templates/circuits/circuit.html
+++ b/netbox/templates/circuits/circuit.html
@@ -95,33 +95,15 @@
Install Date |
-
- {% if circuit.install_date %}
- {{ circuit.install_date }}
- {% else %}
- N/A
- {% endif %}
- |
+ {{ circuit.install_date|placeholder }} |
Commit Rate |
-
- {% if circuit.commit_rate %}
- {{ circuit.commit_rate|humanize_speed }}
- {% else %}
- N/A
- {% endif %}
- |
+ {{ circuit.commit_rate|humanize_speed|placeholder }} |
Description |
-
- {% if circuit.description %}
- {{ circuit.description }}
- {% else %}
- N/A
- {% endif %}
- |
+ {{ circuit.description|placeholder }} |
diff --git a/netbox/templates/circuits/inc/circuit_termination.html b/netbox/templates/circuits/inc/circuit_termination.html
index 560322357..55432b159 100644
--- a/netbox/templates/circuits/inc/circuit_termination.html
+++ b/netbox/templates/circuits/inc/circuit_termination.html
@@ -79,29 +79,17 @@
None
{% endfor %}
{% else %}
- N/A
+ —
{% endif %}
Cross-Connect |
-
- {% if termination.xconnect_id %}
- {{ termination.xconnect_id }}
- {% else %}
- N/A
- {% endif %}
- |
+ {{ termination.xconnect_id|placeholder }} |
Patch Panel/Port |
-
- {% if termination.pp_info %}
- {{ termination.pp_info }}
- {% else %}
- N/A
- {% endif %}
- |
+ {{ termination.pp_info|placeholder }} |
{% else %}
diff --git a/netbox/templates/circuits/provider.html b/netbox/templates/circuits/provider.html
index 99f615a90..ea936adcb 100644
--- a/netbox/templates/circuits/provider.html
+++ b/netbox/templates/circuits/provider.html
@@ -67,23 +67,11 @@
ASN |
-
- {% if provider.asn %}
- {{ provider.asn }}
- {% else %}
- N/A
- {% endif %}
- |
+ {{ provider.asn|placeholder }} |
Account |
-
- {% if provider.account %}
- {{ provider.account }}
- {% else %}
- N/A
- {% endif %}
- |
+ {{ provider.account|placeholder }} |
Customer Portal |
@@ -91,29 +79,17 @@
{% if provider.portal_url %}
{{ provider.portal_url }}
{% else %}
- N/A
+ —
{% endif %}
NOC Contact |
-
- {% if provider.noc_contact %}
- {{ provider.noc_contact|linebreaksbr }}
- {% else %}
- N/A
- {% endif %}
- |
+ {{ provider.noc_contact|linebreaksbr|placeholder }} |
Admin Contact |
-
- {% if provider.admin_contact %}
- {{ provider.admin_contact|linebreaksbr }}
- {% else %}
- N/A
- {% endif %}
- |
+ {{ provider.admin_contact|linebreaksbr|placeholder }} |
Circuits |
diff --git a/netbox/templates/dcim/cable.html b/netbox/templates/dcim/cable.html
index 3bf99465f..a9b61aaf1 100644
--- a/netbox/templates/dcim/cable.html
+++ b/netbox/templates/dcim/cable.html
@@ -51,7 +51,7 @@
Label |
- {% if cable.label %}{{ cable.label }}{% else %}N/A{% endif %} |
+ {{ cable.labe|placeholder }} |
Color |
@@ -69,7 +69,7 @@
{% if cable.length %}
{{ cable.length }} {{ cable.get_length_unit_display }}
{% else %}
- N/A
+ —
{% endif %}
diff --git a/netbox/templates/dcim/device.html b/netbox/templates/dcim/device.html
index 7289909b1..fb633c612 100644
--- a/netbox/templates/dcim/device.html
+++ b/netbox/templates/dcim/device.html
@@ -142,7 +142,7 @@
{% elif device.rack and device.device_type.u_height %}
Not racked
{% else %}
- N/A
+ —
{% endif %}
@@ -168,23 +168,11 @@
Serial Number |
-
- {% if device.serial %}
- {{ device.serial }}
- {% else %}
- N/A
- {% endif %}
- |
+ {{ device.serial|placeholder }} |
Asset Tag |
-
- {% if device.asset_tag %}
- {{ device.asset_tag }}
- {% else %}
- N/A
- {% endif %}
- |
+ {{ device.asset_tag|placeholder }} |
@@ -266,7 +254,7 @@
(NAT: {{ device.primary_ip4.nat_outside.address.ip }})
{% endif %}
{% else %}
- N/A
+ —
{% endif %}
@@ -281,7 +269,7 @@
(NAT: {{ device.primary_ip6.nat_outside.address.ip }})
{% endif %}
{% else %}
- N/A
+ —
{% endif %}
diff --git a/netbox/templates/dcim/device_inventory.html b/netbox/templates/dcim/device_inventory.html
index 1efbd0fbc..d9f8c5495 100644
--- a/netbox/templates/dcim/device_inventory.html
+++ b/netbox/templates/dcim/device_inventory.html
@@ -1,4 +1,5 @@
{% extends 'dcim/device.html' %}
+{% load helpers %}
{% block title %}{{ device }} - Inventory{% endblock %}
@@ -16,23 +17,11 @@
Serial Number |
-
- {% if device.serial %}
- {{ device.serial }}
- {% else %}
- N/A
- {% endif %}
- |
+ {{ device.serial|placeholder }} |
Asset Tag |
-
- {% if device.asset_tag %}
- {{ device.asset_tag }}
- {% else %}
- N/A
- {% endif %}
- |
+ {{ device.asset_tag|placeholder }} |
diff --git a/netbox/templates/dcim/devicetype.html b/netbox/templates/dcim/devicetype.html
index 1719e8f66..0b0f8698b 100644
--- a/netbox/templates/dcim/devicetype.html
+++ b/netbox/templates/dcim/devicetype.html
@@ -74,13 +74,7 @@
Part Number |
-
- {% if devicetype.part_number %}
- {{ devicetype.part_number }}
- {% else %}
- N/A
- {% endif %}
- |
+ {{ devicetype.part_number|placeholder }} |
Height (U) |
@@ -104,7 +98,7 @@
{% elif devicetype.subdevice_role == False %}
{% else %}
- N/A
+ —
{% endif %}
diff --git a/netbox/templates/dcim/interface.html b/netbox/templates/dcim/interface.html
index ed5313c7d..2ca17ac33 100644
--- a/netbox/templates/dcim/interface.html
+++ b/netbox/templates/dcim/interface.html
@@ -82,33 +82,15 @@
Description |
-
- {% if interface.description %}
- {{ interface.description }}
- {% else %}
- N/A
- {% endif %}
- |
+ {{ interface.description|placeholder }} |
MTU |
-
- {% if interface.mtu %}
- {{ interface.mtu }}
- {% else %}
- N/A
- {% endif %}
- |
+ {{ interface.mtu|placeholder }} |
MAC Address |
-
- {% if interface.mac_address %}
- {{ interface.mac_address }}
- {% else %}
- N/A
- {% endif %}
- |
+ {{ interface.mac_address|placeholder }} |
802.1Q Mode |
@@ -165,33 +147,15 @@
Description |
-
- {% if connected_interface.description %}
- {{ connected_interface.description }}
- {% else %}
- N/A
- {% endif %}
- |
+ {{ connected_interface.description|placeholder }} |
MTU |
-
- {% if connected_interface.mtu %}
- {{ connected_interface.mtu }}
- {% else %}
- N/A
- {% endif %}
- |
+ {{ connected_interface.mtu|placeholder }} |
MAC Address |
-
- {% if connected_interface.mac_address %}
- {{ connected_interface.mac_address }}
- {% else %}
- N/A
- {% endif %}
- |
+ {{ connected_interface.mac_address|placeholder }} |
802.1Q Mode |
diff --git a/netbox/templates/dcim/rack.html b/netbox/templates/dcim/rack.html
index 2e17d04e7..f78fb9503 100644
--- a/netbox/templates/dcim/rack.html
+++ b/netbox/templates/dcim/rack.html
@@ -83,13 +83,7 @@
Facility ID |
-
- {% if rack.facility_id %}
- {{ rack.facility_id }}
- {% else %}
- N/A
- {% endif %}
- |
+ {{ rack.facility_id|placeholder }} |
Tenant |
@@ -123,23 +117,11 @@
Serial Number |
-
- {% if rack.serial %}
- {{ rack.serial }}
- {% else %}
- N/A
- {% endif %}
- |
+ {{ rack.serial|placeholder }} |
Asset Tag |
-
- {% if rack.asset_tag %}
- {{ rack.asset_tag }}
- {% else %}
- N/A
- {% endif %}
- |
+ {{ rack.asset_tag|placeholder }} |
Devices |
@@ -231,7 +213,7 @@
{% if device.parent_bay %}
{{ device.parent_bay }}
{% else %}
- N/A
+ —
{% endif %}
diff --git a/netbox/templates/dcim/site.html b/netbox/templates/dcim/site.html
index b74521e9c..1b35b0db9 100644
--- a/netbox/templates/dcim/site.html
+++ b/netbox/templates/dcim/site.html
@@ -106,23 +106,11 @@
Facility |
-
- {% if site.facility %}
- {{ site.facility }}
- {% else %}
- N/A
- {% endif %}
- |
+ {{ site.facility|placeholder }} |
AS Number |
-
- {% if site.asn %}
- {{ site.asn }}
- {% else %}
- N/A
- {% endif %}
- |
+ {{ site.asn|placeholder }} |
Time Zone |
@@ -131,19 +119,13 @@
{{ site.time_zone }} (UTC {{ site.time_zone|tzoffset }})
Site time: {% timezone site.time_zone %}{% now "SHORT_DATETIME_FORMAT" %}{% endtimezone %}
{% else %}
- N/A
+ —
{% endif %}
Description |
-
- {% if site.description %}
- {{ site.description }}
- {% else %}
- N/A
- {% endif %}
- |
+ {{ site.description|placeholder }} |
@@ -163,19 +145,13 @@
{{ site.physical_address|linebreaksbr }}
{% else %}
- N/A
+ —
{% endif %}
Shipping Address |
-
- {% if site.shipping_address %}
- {{ site.shipping_address|linebreaksbr }}
- {% else %}
- N/A
- {% endif %}
- |
+ {{ site.shipping_address|linebreaksbr|placeholder }} |
GPS Coordinates |
@@ -188,19 +164,13 @@
{{ site.latitude }}, {{ site.longitude }}
{% else %}
- N/A
+ —
{% endif %}
Contact Name |
-
- {% if site.contact_name %}
- {{ site.contact_name }}
- {% else %}
- N/A
- {% endif %}
- |
+ {{ site.contact_name|placeholder }} |
Contact Phone |
@@ -208,7 +178,7 @@
{% if site.contact_phone %}
{{ site.contact_phone }}
{% else %}
- N/A
+ —
{% endif %}
@@ -218,7 +188,7 @@
{% if site.contact_email %}
{{ site.contact_email }}
{% else %}
- N/A
+ —
{% endif %}
diff --git a/netbox/templates/dcim/virtualchassis_edit.html b/netbox/templates/dcim/virtualchassis_edit.html
index 097cb487f..2665473fc 100644
--- a/netbox/templates/dcim/virtualchassis_edit.html
+++ b/netbox/templates/dcim/virtualchassis_edit.html
@@ -1,4 +1,5 @@
{% extends '_base.html' %}
+{% load helpers %}
{% load form_helpers %}
{% block content %}
@@ -52,16 +53,10 @@
{% if device.rack %}
{{ device.rack }} / {{ device.position }}
{% else %}
- N/A
- {% endif %}
-
-
- {% if device.serial %}
- {{ device.serial }}
- {% else %}
- N/A
+ —
{% endif %}
|
+ {{ device.serial|placeholder }} |
{{ form.vc_position }}
{% if form.vc_position.errors %}
diff --git a/netbox/templates/extras/configcontext.html b/netbox/templates/extras/configcontext.html
index c987daf33..6c14b7b16 100644
--- a/netbox/templates/extras/configcontext.html
+++ b/netbox/templates/extras/configcontext.html
@@ -55,13 +55,7 @@
|
Description |
-
- {% if configcontext.description %}
- {{ configcontext.description }}
- {% else %}
- N/A
- {% endif %}
- |
+ {{ configcontext.description|placeholder }} |
Active |
diff --git a/netbox/templates/inc/custom_fields_panel.html b/netbox/templates/inc/custom_fields_panel.html
index e469048af..52d9c2d6e 100644
--- a/netbox/templates/inc/custom_fields_panel.html
+++ b/netbox/templates/inc/custom_fields_panel.html
@@ -20,7 +20,7 @@
{% elif field.required %}
Not defined
{% else %}
- N/A
+ —
{% endif %}
diff --git a/netbox/templates/ipam/aggregate.html b/netbox/templates/ipam/aggregate.html
index 129d9d071..0dfdd8260 100644
--- a/netbox/templates/ipam/aggregate.html
+++ b/netbox/templates/ipam/aggregate.html
@@ -75,23 +75,11 @@
Date Added |
-
- {% if aggregate.date_added %}
- {{ aggregate.date_added }}
- {% else %}
- N/A
- {% endif %}
- |
+ {{ aggregate.date_added|placeholder }} |
Description |
-
- {% if aggregate.description %}
- {{ aggregate.description }}
- {% else %}
- N/A
- {% endif %}
- |
+ {{ aggregate.description|placeholder }} |
diff --git a/netbox/templates/ipam/ipaddress.html b/netbox/templates/ipam/ipaddress.html
index a8501c8a0..f822ac2b8 100644
--- a/netbox/templates/ipam/ipaddress.html
+++ b/netbox/templates/ipam/ipaddress.html
@@ -105,13 +105,7 @@
Description |
-
- {% if ipaddress.description %}
- {{ ipaddress.description }}
- {% else %}
- N/A
- {% endif %}
- |
+ {{ ipaddress.description|placeholder }} |
Assignment |
@@ -119,7 +113,7 @@
{% if ipaddress.interface %}
{{ ipaddress.interface.parent }} ({{ ipaddress.interface }})
{% else %}
- None
+ —
{% endif %}
diff --git a/netbox/templates/ipam/prefix.html b/netbox/templates/ipam/prefix.html
index f621a0130..0e3aff6b0 100644
--- a/netbox/templates/ipam/prefix.html
+++ b/netbox/templates/ipam/prefix.html
@@ -160,13 +160,7 @@
Description |
-
- {% if prefix.description %}
- {{ prefix.description }}
- {% else %}
- N/A
- {% endif %}
- |
+ {{ prefix.description|placeholder }} |
Is a pool |
diff --git a/netbox/templates/ipam/service.html b/netbox/templates/ipam/service.html
index a0f1e57a5..17b1d971e 100644
--- a/netbox/templates/ipam/service.html
+++ b/netbox/templates/ipam/service.html
@@ -70,13 +70,7 @@
Description |
-
- {% if service.description %}
- {{ service.description }}
- {% else %}
- N/A
- {% endif %}
- |
+ {{ service.description|placeholder }} |
diff --git a/netbox/templates/ipam/vlan.html b/netbox/templates/ipam/vlan.html
index 73e87149b..96e3a5e10 100644
--- a/netbox/templates/ipam/vlan.html
+++ b/netbox/templates/ipam/vlan.html
@@ -129,13 +129,7 @@
Description |
-
- {% if vlan.description %}
- {{ vlan.description }}
- {% else %}
- N/A
- {% endif %}
- |
+ {{ vlan.description|placeholder }} |
diff --git a/netbox/templates/ipam/vrf.html b/netbox/templates/ipam/vrf.html
index a69ccd0f5..f89212804 100644
--- a/netbox/templates/ipam/vrf.html
+++ b/netbox/templates/ipam/vrf.html
@@ -82,13 +82,7 @@
Description |
-
- {% if vrf.description %}
- {{ vrf.description }}
- {% else %}
- N/A
- {% endif %}
- |
+ {{ vrf.description|placeholder }} |
diff --git a/netbox/templates/secrets/secret.html b/netbox/templates/secrets/secret.html
index bfe700938..6d3119d5b 100644
--- a/netbox/templates/secrets/secret.html
+++ b/netbox/templates/secrets/secret.html
@@ -59,13 +59,7 @@
Name |
-
- {% if secret.name %}
- {{ secret.name }}
- {% else %}
- N/A
- {% endif %}
- |
+ {{ secret.name|placeholder }} |
diff --git a/netbox/templates/tenancy/tenant.html b/netbox/templates/tenancy/tenant.html
index 6f2131a51..67f3c72fe 100644
--- a/netbox/templates/tenancy/tenant.html
+++ b/netbox/templates/tenancy/tenant.html
@@ -71,13 +71,7 @@
Description |
-
- {% if tenant.description %}
- {{ tenant.description }}
- {% else %}
- N/A
- {% endif %}
- |
+ {{ tenant.description|placeholder }} |
diff --git a/netbox/templates/virtualization/virtualmachine.html b/netbox/templates/virtualization/virtualmachine.html
index 552aaa997..410ab32e5 100644
--- a/netbox/templates/virtualization/virtualmachine.html
+++ b/netbox/templates/virtualization/virtualmachine.html
@@ -116,7 +116,7 @@
(NAT: {{ virtualmachine.primary_ip4.nat_outside.address.ip }})
{% endif %}
{% else %}
- N/A
+ —
{% endif %}
@@ -131,7 +131,7 @@
(NAT: {{ virtualmachine.primary_ip6.nat_outside.address.ip }})
{% endif %}
{% else %}
- N/A
+ —
{% endif %}
@@ -181,13 +181,7 @@
Virtual CPUs |
-
- {% if virtualmachine.vcpus %}
- {{ virtualmachine.vcpus }}
- {% else %}
- N/A
- {% endif %}
- |
+ {{ virtualmachine.vcpus|placeholder }} |
Memory |
@@ -195,7 +189,7 @@
{% if virtualmachine.memory %}
{{ virtualmachine.memory }} MB
{% else %}
- N/A
+ —
{% endif %}
@@ -205,7 +199,7 @@
{% if virtualmachine.disk %}
{{ virtualmachine.disk }} GB
{% else %}
- N/A
+ —
{% endif %}
diff --git a/netbox/utilities/templatetags/helpers.py b/netbox/utilities/templatetags/helpers.py
index 0d5063ae0..9fcbf2edd 100644
--- a/netbox/utilities/templatetags/helpers.py
+++ b/netbox/utilities/templatetags/helpers.py
@@ -22,6 +22,16 @@ def oneline(value):
"""
return value.replace('\n', ' ')
+@register.filter()
+def placeholder(value):
+ """
+ Render a muted placeholder if value equates to False.
+ """
+ if value:
+ return value
+ placeholder = '—'
+ return mark_safe(placeholder)
+
@register.filter()
def getlist(value, arg):
@@ -97,6 +107,8 @@ def humanize_speed(speed):
100000 => "100 Mbps"
10000000 => "10 Gbps"
"""
+ if not speed:
+ return ''
if speed >= 1000000000 and speed % 1000000000 == 0:
return '{} Tbps'.format(int(speed / 1000000000))
elif speed >= 1000000 and speed % 1000000 == 0: