From 717fd760df62dd9ad1d994c8fc1893169109988a Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Fri, 15 Oct 2021 12:24:07 -0400 Subject: [PATCH] #3979: UI cleanup --- netbox/dcim/forms/models.py | 12 +- netbox/dcim/tables/devices.py | 4 +- netbox/dcim/tables/template_code.py | 10 ++ netbox/templates/dcim/interface.html | 128 ++++++++++++++++------ netbox/templates/dcim/interface_edit.html | 1 + netbox/utilities/templatetags/helpers.py | 2 +- netbox/wireless/filtersets.py | 3 + 7 files changed, 124 insertions(+), 36 deletions(-) diff --git a/netbox/dcim/forms/models.py b/netbox/dcim/forms/models.py index 603767518..9ce0b54aa 100644 --- a/netbox/dcim/forms/models.py +++ b/netbox/dcim/forms/models.py @@ -16,7 +16,7 @@ from utilities.forms import ( SlugField, StaticSelect, ) from virtualization.models import Cluster, ClusterGroup -from wireless.models import WirelessLAN +from wireless.models import WirelessLAN, WirelessLANGroup from .common import InterfaceCommonForm __all__ = ( @@ -1073,10 +1073,18 @@ class InterfaceForm(BootstrapMixin, InterfaceCommonForm, CustomFieldModelForm): 'type': 'lag', } ) + wireless_lan_group = DynamicModelChoiceField( + queryset=WirelessLANGroup.objects.all(), + required=False, + label='Wireless LAN group' + ) wireless_lans = DynamicModelMultipleChoiceField( queryset=WirelessLAN.objects.all(), required=False, - label='Wireless LANs' + label='Wireless LANs', + query_params={ + 'group_id': '$wireless_lan_group', + } ) vlan_group = DynamicModelChoiceField( queryset=VLANGroup.objects.all(), diff --git a/netbox/dcim/tables/devices.py b/netbox/dcim/tables/devices.py index 3b0ec349e..3b92efd76 100644 --- a/netbox/dcim/tables/devices.py +++ b/netbox/dcim/tables/devices.py @@ -505,8 +505,8 @@ class InterfaceTable(DeviceComponentTable, BaseInterfaceTable, PathEndpointTable class DeviceInterfaceTable(InterfaceTable): name = tables.TemplateColumn( - template_code=' {{ value }}', order_by=Accessor('_name'), attrs={'td': {'class': 'text-nowrap'}} diff --git a/netbox/dcim/tables/template_code.py b/netbox/dcim/tables/template_code.py index a5a4d9979..a948baffd 100644 --- a/netbox/dcim/tables/template_code.py +++ b/netbox/dcim/tables/template_code.py @@ -205,6 +205,12 @@ INTERFACE_BUTTONS = """ {% endif %} +{% elif record.wireless_link %} + {% if perms.wireless.delete_wirelesslink %} + + + + {% endif %} {% elif record.is_wired and perms.dcim.add_cable %} @@ -223,6 +229,10 @@ INTERFACE_BUTTONS = """ {% else %} {% endif %} +{% elif record.is_wireless and perms.wireless.add_wirelesslink %} + + + {% endif %} """ diff --git a/netbox/templates/dcim/interface.html b/netbox/templates/dcim/interface.html index 6e01dee98..e9230fbf9 100644 --- a/netbox/templates/dcim/interface.html +++ b/netbox/templates/dcim/interface.html @@ -217,8 +217,29 @@ Wireless Link {{ object.wireless_link }} + + + + {% with peer_interface=object.connected_endpoint %} + + Device + + {{ peer_interface.device }} + + + + Name + + {{ peer_interface }} + + + + Type + {{ peer_interface.get_type_display }} + + {% endwith %} {% else %}
@@ -267,36 +288,73 @@
Wireless
- - - - - - - - - - - - - - - - - -
Role{{ object.get_rf_role_display|placeholder }}
Channel{{ object.get_rf_channel_display|placeholder }}
Channel Frequency - {% if object.rf_channel_frequency %} - {{ object.rf_channel_frequency|simplify_decimal }} MHz - {% else %} - - {% endif %} -
Channel Width - {% if object.rf_channel_width %} - {{ object.rf_channel_width|simplify_decimal }} MHz - {% else %} - - {% endif %} -
+ {% with peer=object.connected_endpoint %} + + + + + + {% if peer %} + + {% endif %} + + + + + + {% if peer %} + + {% endif %} + + + + + {% if peer %} + + {{ peer.get_rf_channel_display|placeholder }} + + {% endif %} + + + + + {% if peer %} + + {% if peer.rf_channel_frequency %} + {{ peer.rf_channel_frequency|simplify_decimal }} MHz + {% else %} + + {% endif %} + + {% endif %} + + + + + {% if peer %} + + {% if peer.rf_channel_width %} + {{ peer.rf_channel_width|simplify_decimal }} MHz + {% else %} + + {% endif %} + + {% endif %} + +
LocalPeer
Role{{ object.get_rf_role_display|placeholder }}{{ peer.get_rf_role_display|placeholder }}
Channel{{ object.get_rf_channel_display|placeholder }}
Channel Frequency + {% if object.rf_channel_frequency %} + {{ object.rf_channel_frequency|simplify_decimal }} MHz + {% else %} + + {% endif %} +
Channel Width + {% if object.rf_channel_width %} + {{ object.rf_channel_width|simplify_decimal }} MHz + {% else %} + + {% endif %} +
+ {% endwith %}
@@ -305,12 +363,20 @@ + - {% for wlan in object.wlans.all %} + {% for wlan in object.wireless_lans.all %} + diff --git a/netbox/templates/dcim/interface_edit.html b/netbox/templates/dcim/interface_edit.html index de7d21269..aec88d25a 100644 --- a/netbox/templates/dcim/interface_edit.html +++ b/netbox/templates/dcim/interface_edit.html @@ -38,6 +38,7 @@ {% render_field form.rf_channel %} {% render_field form.rf_channel_frequency %} {% render_field form.rf_channel_width %} + {% render_field form.wireless_lan_group %} {% render_field form.wireless_lans %} {% endif %} diff --git a/netbox/utilities/templatetags/helpers.py b/netbox/utilities/templatetags/helpers.py index 668596c8e..3318fe1e7 100644 --- a/netbox/utilities/templatetags/helpers.py +++ b/netbox/utilities/templatetags/helpers.py @@ -157,7 +157,7 @@ def simplify_decimal(value): """ if type(value) is not decimal.Decimal: return value - return str(value).rstrip('0.') + return str(value).rstrip('0').rstrip('.') @register.filter() diff --git a/netbox/wireless/filtersets.py b/netbox/wireless/filtersets.py index ac503e474..a5d9b7d75 100644 --- a/netbox/wireless/filtersets.py +++ b/netbox/wireless/filtersets.py @@ -33,6 +33,9 @@ class WirelessLANFilterSet(PrimaryModelFilterSet): method='search', label='Search', ) + group_id = django_filters.ModelMultipleChoiceFilter( + queryset=WirelessLANGroup.objects.all() + ) tag = TagFilter() class Meta:
Group SSID
+ {% if wlan.group %} + {{ wlan.group }} + {% else %} + — + {% endif %} + {{ wlan.ssid }}