From 59e657867cabcd855056e5056409c485fa460d12 Mon Sep 17 00:00:00 2001 From: Matej Vadnjal Date: Wed, 26 Jul 2023 18:07:44 +0200 Subject: [PATCH] Fixes #13033: add formatted speed column to Interfaces --- netbox/dcim/tables/__init__.py | 1 + netbox/dcim/tables/columns.py | 21 +++++++++++++++++++++ netbox/dcim/tables/devices.py | 7 ++++++- 3 files changed, 28 insertions(+), 1 deletion(-) create mode 100644 netbox/dcim/tables/columns.py diff --git a/netbox/dcim/tables/__init__.py b/netbox/dcim/tables/__init__.py index 843b612b1..b3791298e 100644 --- a/netbox/dcim/tables/__init__.py +++ b/netbox/dcim/tables/__init__.py @@ -1,4 +1,5 @@ from .cables import * +from .columns import * from .connections import * from .devices import * from .devicetypes import * diff --git a/netbox/dcim/tables/columns.py b/netbox/dcim/tables/columns.py new file mode 100644 index 000000000..3c14ccc69 --- /dev/null +++ b/netbox/dcim/tables/columns.py @@ -0,0 +1,21 @@ +import django_tables2 as tables + +__all__ = ( + 'SpeedColumn', +) + + +class SpeedColumn(tables.TemplateColumn): + """ + Humanize the speed in the column view + """ + template_code = """ + {% load helpers %} + {{ value|humanize_speed|placeholder }} + """ + + def __init__(self, *args, **kwargs): + super().__init__(template_code=self.template_code, *args, **kwargs) + + def value(self, value, **kwargs): + return super().value(value=value, **kwargs) if value else None diff --git a/netbox/dcim/tables/devices.py b/netbox/dcim/tables/devices.py index db2655d27..d8fcd4b81 100644 --- a/netbox/dcim/tables/devices.py +++ b/netbox/dcim/tables/devices.py @@ -5,6 +5,7 @@ from tenancy.tables import ContactsColumnMixin, TenancyColumnsMixin from netbox.tables import NetBoxTable, columns +from .columns import * from .template_code import * __all__ = ( @@ -545,6 +546,10 @@ class InterfaceTable(ModularDeviceComponentTable, BaseInterfaceTable, PathEndpoi } ) mgmt_only = columns.BooleanColumn() + speed_formatted = SpeedColumn( + accessor=Accessor('speed'), + verbose_name='Speed' + ) wireless_link = tables.Column( linkify=True ) @@ -568,7 +573,7 @@ class InterfaceTable(ModularDeviceComponentTable, BaseInterfaceTable, PathEndpoi model = models.Interface fields = ( 'pk', 'id', 'name', 'device', 'module_bay', 'module', 'label', 'enabled', 'type', 'mgmt_only', 'mtu', - 'speed', 'duplex', 'mode', 'mac_address', 'wwn', 'poe_mode', 'poe_type', 'rf_role', 'rf_channel', + 'speed', 'speed_formatted', 'duplex', 'mode', 'mac_address', 'wwn', 'poe_mode', 'poe_type', 'rf_role', 'rf_channel', 'rf_channel_frequency', 'rf_channel_width', 'tx_power', 'description', 'mark_connected', 'cable', 'cable_color', 'wireless_link', 'wireless_lans', 'link_peer', 'connection', 'tags', 'vdcs', 'vrf', 'l2vpn', 'ip_addresses', 'fhrp_groups', 'untagged_vlan', 'tagged_vlans', 'created', 'last_updated',