From 2fe8df3cbb6fbe28435ca57eef392c89b74fdbb5 Mon Sep 17 00:00:00 2001 From: Arthur Hanson Date: Tue, 18 Oct 2022 13:47:14 -0700 Subject: [PATCH] 10655 fix contacts display in list views (#10681) * 10655 fix contacts display in list views * 10655 review changes --- netbox/circuits/tables/circuits.py | 10 +++---- netbox/circuits/tables/providers.py | 10 +++---- netbox/dcim/tables/devices.py | 29 +++++++++++++------ netbox/dcim/tables/devicetypes.py | 23 ++++++++++----- netbox/dcim/tables/power.py | 9 +++--- netbox/dcim/tables/racks.py | 11 +++---- netbox/dcim/tables/sites.py | 25 +++++----------- netbox/tenancy/tables/columns.py | 10 +++++++ netbox/tenancy/tables/tenants.py | 8 ++--- netbox/virtualization/tables/clusters.py | 14 +++------ .../virtualization/tables/virtualmachines.py | 11 +++---- 11 files changed, 80 insertions(+), 80 deletions(-) diff --git a/netbox/circuits/tables/circuits.py b/netbox/circuits/tables/circuits.py index f9ab7e190..477f9c1ab 100644 --- a/netbox/circuits/tables/circuits.py +++ b/netbox/circuits/tables/circuits.py @@ -1,8 +1,9 @@ import django_tables2 as tables - from circuits.models import * +from tenancy.tables import ContactsColumnMixin, TenancyColumnsMixin + from netbox.tables import NetBoxTable, columns -from tenancy.tables import TenancyColumnsMixin + from .columns import CommitRateColumn __all__ = ( @@ -39,7 +40,7 @@ class CircuitTypeTable(NetBoxTable): default_columns = ('pk', 'name', 'circuit_count', 'description', 'slug') -class CircuitTable(TenancyColumnsMixin, NetBoxTable): +class CircuitTable(TenancyColumnsMixin, ContactsColumnMixin, NetBoxTable): cid = tables.Column( linkify=True, verbose_name='Circuit ID' @@ -58,9 +59,6 @@ class CircuitTable(TenancyColumnsMixin, NetBoxTable): ) commit_rate = CommitRateColumn() comments = columns.MarkdownColumn() - contacts = columns.ManyToManyColumn( - linkify_item=True - ) tags = columns.TagColumn( url_name='circuits:circuit_list' ) diff --git a/netbox/circuits/tables/providers.py b/netbox/circuits/tables/providers.py index 0ec6d439d..e2a1d93f6 100644 --- a/netbox/circuits/tables/providers.py +++ b/netbox/circuits/tables/providers.py @@ -1,7 +1,8 @@ import django_tables2 as tables -from django_tables2.utils import Accessor - from circuits.models import * +from django_tables2.utils import Accessor +from tenancy.tables import ContactsColumnMixin + from netbox.tables import NetBoxTable, columns __all__ = ( @@ -10,7 +11,7 @@ __all__ = ( ) -class ProviderTable(NetBoxTable): +class ProviderTable(ContactsColumnMixin, NetBoxTable): name = tables.Column( linkify=True ) @@ -31,9 +32,6 @@ class ProviderTable(NetBoxTable): verbose_name='Circuits' ) comments = columns.MarkdownColumn() - contacts = columns.ManyToManyColumn( - linkify_item=True - ) tags = columns.TagColumn( url_name='circuits:provider_list' ) diff --git a/netbox/dcim/tables/devices.py b/netbox/dcim/tables/devices.py index 142c7ef67..3b129c963 100644 --- a/netbox/dcim/tables/devices.py +++ b/netbox/dcim/tables/devices.py @@ -1,12 +1,26 @@ import django_tables2 as tables -from django_tables2.utils import Accessor - from dcim.models import ( - ConsolePort, ConsoleServerPort, Device, DeviceBay, DeviceRole, FrontPort, Interface, InventoryItem, - InventoryItemRole, ModuleBay, Platform, PowerOutlet, PowerPort, RearPort, VirtualChassis, + ConsolePort, + ConsoleServerPort, + Device, + DeviceBay, + DeviceRole, + FrontPort, + Interface, + InventoryItem, + InventoryItemRole, + ModuleBay, + Platform, + PowerOutlet, + PowerPort, + RearPort, + VirtualChassis, ) +from django_tables2.utils import Accessor +from tenancy.tables import ContactsColumnMixin, TenancyColumnsMixin + from netbox.tables import NetBoxTable, columns -from tenancy.tables import TenancyColumnsMixin + from .template_code import * __all__ = ( @@ -137,7 +151,7 @@ class PlatformTable(NetBoxTable): # Devices # -class DeviceTable(TenancyColumnsMixin, NetBoxTable): +class DeviceTable(TenancyColumnsMixin, ContactsColumnMixin, NetBoxTable): name = tables.TemplateColumn( order_by=('_name',), template_code=DEVICE_LINK @@ -201,9 +215,6 @@ class DeviceTable(TenancyColumnsMixin, NetBoxTable): verbose_name='VC Priority' ) comments = columns.MarkdownColumn() - contacts = columns.ManyToManyColumn( - linkify_item=True - ) tags = columns.TagColumn( url_name='dcim:device_list' ) diff --git a/netbox/dcim/tables/devicetypes.py b/netbox/dcim/tables/devicetypes.py index ec71245f7..566c56a90 100644 --- a/netbox/dcim/tables/devicetypes.py +++ b/netbox/dcim/tables/devicetypes.py @@ -1,10 +1,22 @@ import django_tables2 as tables - from dcim.models import ( - ConsolePortTemplate, ConsoleServerPortTemplate, DeviceBayTemplate, DeviceType, FrontPortTemplate, InterfaceTemplate, - InventoryItemTemplate, Manufacturer, ModuleBayTemplate, PowerOutletTemplate, PowerPortTemplate, RearPortTemplate, + ConsolePortTemplate, + ConsoleServerPortTemplate, + DeviceBayTemplate, + DeviceType, + FrontPortTemplate, + InterfaceTemplate, + InventoryItemTemplate, + Manufacturer, + ModuleBayTemplate, + PowerOutletTemplate, + PowerPortTemplate, + RearPortTemplate, ) +from tenancy.tables import ContactsColumnMixin + from netbox.tables import NetBoxTable, columns + from .template_code import MODULAR_COMPONENT_TEMPLATE_BUTTONS __all__ = ( @@ -27,7 +39,7 @@ __all__ = ( # Manufacturers # -class ManufacturerTable(NetBoxTable): +class ManufacturerTable(ContactsColumnMixin, NetBoxTable): name = tables.Column( linkify=True ) @@ -43,9 +55,6 @@ class ManufacturerTable(NetBoxTable): verbose_name='Platforms' ) slug = tables.Column() - contacts = columns.ManyToManyColumn( - linkify_item=True - ) tags = columns.TagColumn( url_name='dcim:manufacturer_list' ) diff --git a/netbox/dcim/tables/power.py b/netbox/dcim/tables/power.py index 6696d516a..04012ea4a 100644 --- a/netbox/dcim/tables/power.py +++ b/netbox/dcim/tables/power.py @@ -1,7 +1,9 @@ import django_tables2 as tables - from dcim.models import PowerFeed, PowerPanel +from tenancy.tables import ContactsColumnMixin + from netbox.tables import NetBoxTable, columns + from .devices import CableTerminationTable __all__ = ( @@ -14,7 +16,7 @@ __all__ = ( # Power panels # -class PowerPanelTable(NetBoxTable): +class PowerPanelTable(ContactsColumnMixin, NetBoxTable): name = tables.Column( linkify=True ) @@ -29,9 +31,6 @@ class PowerPanelTable(NetBoxTable): url_params={'power_panel_id': 'pk'}, verbose_name='Feeds' ) - contacts = columns.ManyToManyColumn( - linkify_item=True - ) tags = columns.TagColumn( url_name='dcim:powerpanel_list' ) diff --git a/netbox/dcim/tables/racks.py b/netbox/dcim/tables/racks.py index 39553bac0..ab6ee6eb3 100644 --- a/netbox/dcim/tables/racks.py +++ b/netbox/dcim/tables/racks.py @@ -1,9 +1,9 @@ import django_tables2 as tables -from django_tables2.utils import Accessor - from dcim.models import Rack, RackReservation, RackRole +from django_tables2.utils import Accessor +from tenancy.tables import ContactsColumnMixin, TenancyColumnsMixin + from netbox.tables import NetBoxTable, columns -from tenancy.tables import TenancyColumnsMixin __all__ = ( 'RackTable', @@ -37,7 +37,7 @@ class RackRoleTable(NetBoxTable): # Racks # -class RackTable(TenancyColumnsMixin, NetBoxTable): +class RackTable(TenancyColumnsMixin, ContactsColumnMixin, NetBoxTable): name = tables.Column( order_by=('_name',), linkify=True @@ -68,9 +68,6 @@ class RackTable(TenancyColumnsMixin, NetBoxTable): orderable=False, verbose_name='Power' ) - contacts = columns.ManyToManyColumn( - linkify_item=True - ) tags = columns.TagColumn( url_name='dcim:rack_list' ) diff --git a/netbox/dcim/tables/sites.py b/netbox/dcim/tables/sites.py index 5dc2aa611..f013025f7 100644 --- a/netbox/dcim/tables/sites.py +++ b/netbox/dcim/tables/sites.py @@ -1,8 +1,9 @@ import django_tables2 as tables - from dcim.models import Location, Region, Site, SiteGroup +from tenancy.tables import ContactsColumnMixin, TenancyColumnsMixin + from netbox.tables import NetBoxTable, columns -from tenancy.tables import TenancyColumnsMixin + from .template_code import LOCATION_BUTTONS __all__ = ( @@ -17,7 +18,7 @@ __all__ = ( # Regions # -class RegionTable(NetBoxTable): +class RegionTable(ContactsColumnMixin, NetBoxTable): name = columns.MPTTColumn( linkify=True ) @@ -26,9 +27,6 @@ class RegionTable(NetBoxTable): url_params={'region_id': 'pk'}, verbose_name='Sites' ) - contacts = columns.ManyToManyColumn( - linkify_item=True - ) tags = columns.TagColumn( url_name='dcim:region_list' ) @@ -46,7 +44,7 @@ class RegionTable(NetBoxTable): # Site groups # -class SiteGroupTable(NetBoxTable): +class SiteGroupTable(ContactsColumnMixin, NetBoxTable): name = columns.MPTTColumn( linkify=True ) @@ -55,9 +53,6 @@ class SiteGroupTable(NetBoxTable): url_params={'group_id': 'pk'}, verbose_name='Sites' ) - contacts = columns.ManyToManyColumn( - linkify_item=True - ) tags = columns.TagColumn( url_name='dcim:sitegroup_list' ) @@ -75,7 +70,7 @@ class SiteGroupTable(NetBoxTable): # Sites # -class SiteTable(TenancyColumnsMixin, NetBoxTable): +class SiteTable(TenancyColumnsMixin, ContactsColumnMixin, NetBoxTable): name = tables.Column( linkify=True ) @@ -97,9 +92,6 @@ class SiteTable(TenancyColumnsMixin, NetBoxTable): verbose_name='ASN Count' ) comments = columns.MarkdownColumn() - contacts = columns.ManyToManyColumn( - linkify_item=True - ) tags = columns.TagColumn( url_name='dcim:site_list' ) @@ -118,7 +110,7 @@ class SiteTable(TenancyColumnsMixin, NetBoxTable): # Locations # -class LocationTable(TenancyColumnsMixin, NetBoxTable): +class LocationTable(TenancyColumnsMixin, ContactsColumnMixin, NetBoxTable): name = columns.MPTTColumn( linkify=True ) @@ -136,9 +128,6 @@ class LocationTable(TenancyColumnsMixin, NetBoxTable): url_params={'location_id': 'pk'}, verbose_name='Devices' ) - contacts = columns.ManyToManyColumn( - linkify_item=True - ) tags = columns.TagColumn( url_name='dcim:location_list' ) diff --git a/netbox/tenancy/tables/columns.py b/netbox/tenancy/tables/columns.py index 21622f18b..491d0488f 100644 --- a/netbox/tenancy/tables/columns.py +++ b/netbox/tenancy/tables/columns.py @@ -1,6 +1,9 @@ import django_tables2 as tables +from netbox.tables import columns + __all__ = ( + 'ContactsColumnMixin', 'TenantColumn', 'TenantGroupColumn', 'TenancyColumnsMixin', @@ -55,3 +58,10 @@ class TenantGroupColumn(tables.TemplateColumn): class TenancyColumnsMixin(tables.Table): tenant_group = TenantGroupColumn() tenant = TenantColumn() + + +class ContactsColumnMixin(tables.Table): + contacts = columns.ManyToManyColumn( + linkify_item=True, + transform=lambda obj: obj.contact.name + ) diff --git a/netbox/tenancy/tables/tenants.py b/netbox/tenancy/tables/tenants.py index f18f1db09..9c404fb4b 100644 --- a/netbox/tenancy/tables/tenants.py +++ b/netbox/tenancy/tables/tenants.py @@ -1,7 +1,8 @@ import django_tables2 as tables +from tenancy.models import * +from tenancy.tables import ContactsColumnMixin from netbox.tables import NetBoxTable, columns -from tenancy.models import * __all__ = ( 'TenantGroupTable', @@ -30,7 +31,7 @@ class TenantGroupTable(NetBoxTable): default_columns = ('pk', 'name', 'tenant_count', 'description') -class TenantTable(NetBoxTable): +class TenantTable(ContactsColumnMixin, NetBoxTable): name = tables.Column( linkify=True ) @@ -38,9 +39,6 @@ class TenantTable(NetBoxTable): linkify=True ) comments = columns.MarkdownColumn() - contacts = columns.ManyToManyColumn( - linkify_item=True - ) tags = columns.TagColumn( url_name='tenancy:contact_list' ) diff --git a/netbox/virtualization/tables/clusters.py b/netbox/virtualization/tables/clusters.py index ba0f2d301..fec539b8c 100644 --- a/netbox/virtualization/tables/clusters.py +++ b/netbox/virtualization/tables/clusters.py @@ -1,8 +1,8 @@ import django_tables2 as tables +from tenancy.tables import ContactsColumnMixin, TenancyColumnsMixin +from virtualization.models import Cluster, ClusterGroup, ClusterType from netbox.tables import NetBoxTable, columns -from tenancy.tables import TenancyColumnsMixin -from virtualization.models import Cluster, ClusterGroup, ClusterType __all__ = ( 'ClusterTable', @@ -32,7 +32,7 @@ class ClusterTypeTable(NetBoxTable): default_columns = ('pk', 'name', 'cluster_count', 'description') -class ClusterGroupTable(NetBoxTable): +class ClusterGroupTable(ContactsColumnMixin, NetBoxTable): name = tables.Column( linkify=True ) @@ -41,9 +41,6 @@ class ClusterGroupTable(NetBoxTable): url_params={'group_id': 'pk'}, verbose_name='Clusters' ) - contacts = columns.ManyToManyColumn( - linkify_item=True - ) tags = columns.TagColumn( url_name='virtualization:clustergroup_list' ) @@ -57,7 +54,7 @@ class ClusterGroupTable(NetBoxTable): default_columns = ('pk', 'name', 'cluster_count', 'description') -class ClusterTable(TenancyColumnsMixin, NetBoxTable): +class ClusterTable(TenancyColumnsMixin, ContactsColumnMixin, NetBoxTable): name = tables.Column( linkify=True ) @@ -81,9 +78,6 @@ class ClusterTable(TenancyColumnsMixin, NetBoxTable): verbose_name='VMs' ) comments = columns.MarkdownColumn() - contacts = columns.ManyToManyColumn( - linkify_item=True - ) tags = columns.TagColumn( url_name='virtualization:cluster_list' ) diff --git a/netbox/virtualization/tables/virtualmachines.py b/netbox/virtualization/tables/virtualmachines.py index dfd01696e..29baff4cb 100644 --- a/netbox/virtualization/tables/virtualmachines.py +++ b/netbox/virtualization/tables/virtualmachines.py @@ -1,10 +1,10 @@ import django_tables2 as tables - from dcim.tables.devices import BaseInterfaceTable -from netbox.tables import NetBoxTable, columns -from tenancy.tables import TenancyColumnsMixin +from tenancy.tables import ContactsColumnMixin, TenancyColumnsMixin from virtualization.models import VirtualMachine, VMInterface +from netbox.tables import NetBoxTable, columns + __all__ = ( 'VirtualMachineTable', 'VirtualMachineVMInterfaceTable', @@ -37,7 +37,7 @@ VMINTERFACE_BUTTONS = """ # Virtual machines # -class VirtualMachineTable(TenancyColumnsMixin, NetBoxTable): +class VirtualMachineTable(TenancyColumnsMixin, ContactsColumnMixin, NetBoxTable): name = tables.Column( order_by=('_name',), linkify=True @@ -67,9 +67,6 @@ class VirtualMachineTable(TenancyColumnsMixin, NetBoxTable): order_by=('primary_ip4', 'primary_ip6'), verbose_name='IP Address' ) - contacts = columns.ManyToManyColumn( - linkify_item=True - ) tags = columns.TagColumn( url_name='virtualization:virtualmachine_list' )