diff --git a/netbox/dcim/tables/racks.py b/netbox/dcim/tables/racks.py index 11fc946ca..b1194c74b 100644 --- a/netbox/dcim/tables/racks.py +++ b/netbox/dcim/tables/racks.py @@ -4,10 +4,10 @@ from django_tables2.utils import Accessor from dcim.models import Rack, Location, RackReservation, RackRole from tenancy.tables import TenantColumn from utilities.tables import ( - BaseTable, ButtonsColumn, ChoiceFieldColumn, ColorColumn, ColoredLabelColumn, LinkedCountColumn, TagColumn, - ToggleColumn, + BaseTable, ButtonsColumn, ChoiceFieldColumn, ColorColumn, ColoredLabelColumn, LinkedCountColumn, MPTTColumn, + TagColumn, ToggleColumn, ) -from .template_code import MPTT_LINK, LOCATION_ELEVATIONS, UTILIZATION_GRAPH +from .template_code import LOCATION_ELEVATIONS, UTILIZATION_GRAPH __all__ = ( 'RackTable', @@ -24,11 +24,7 @@ __all__ = ( class LocationTable(BaseTable): pk = ToggleColumn() - name = tables.TemplateColumn( - template_code=MPTT_LINK, - orderable=False, - attrs={'td': {'class': 'text-nowrap'}} - ) + name = MPTTColumn() site = tables.Column( linkify=True ) diff --git a/netbox/dcim/tables/sites.py b/netbox/dcim/tables/sites.py index 58d661fa9..9ef6d873b 100644 --- a/netbox/dcim/tables/sites.py +++ b/netbox/dcim/tables/sites.py @@ -2,8 +2,7 @@ import django_tables2 as tables from dcim.models import Region, Site from tenancy.tables import TenantColumn -from utilities.tables import BaseTable, ButtonsColumn, ChoiceFieldColumn, TagColumn, ToggleColumn -from .template_code import MPTT_LINK +from utilities.tables import BaseTable, ButtonsColumn, ChoiceFieldColumn, MPTTColumn, TagColumn, ToggleColumn __all__ = ( 'RegionTable', @@ -17,11 +16,7 @@ __all__ = ( class RegionTable(BaseTable): pk = ToggleColumn() - name = tables.TemplateColumn( - template_code=MPTT_LINK, - orderable=False, - attrs={'td': {'class': 'text-nowrap'}} - ) + name = MPTTColumn() site_count = tables.Column( verbose_name='Sites' ) diff --git a/netbox/dcim/tables/template_code.py b/netbox/dcim/tables/template_code.py index 86a5e62aa..00a5c2184 100644 --- a/netbox/dcim/tables/template_code.py +++ b/netbox/dcim/tables/template_code.py @@ -56,13 +56,6 @@ INTERFACE_TAGGED_VLANS = """ {% endif %} """ -MPTT_LINK = """ -{% for i in record.get_ancestors %} - -{% endfor %} -{{ record.name }} -""" - POWERFEED_CABLE = """ {{ value }} diff --git a/netbox/tenancy/tables.py b/netbox/tenancy/tables.py index 0536bbcfc..5b5bc6d73 100644 --- a/netbox/tenancy/tables.py +++ b/netbox/tenancy/tables.py @@ -1,15 +1,8 @@ import django_tables2 as tables -from utilities.tables import BaseTable, ButtonsColumn, LinkedCountColumn, TagColumn, ToggleColumn +from utilities.tables import BaseTable, ButtonsColumn, LinkedCountColumn, MPTTColumn, TagColumn, ToggleColumn from .models import Tenant, TenantGroup -MPTT_LINK = """ -{% for i in record.get_ancestors %} - -{% endfor %} -{{ record.name }} -""" - # # Table columns @@ -42,11 +35,7 @@ class TenantColumn(tables.TemplateColumn): class TenantGroupTable(BaseTable): pk = ToggleColumn() - name = tables.TemplateColumn( - template_code=MPTT_LINK, - orderable=False, - attrs={'td': {'class': 'text-nowrap'}} - ) + name = MPTTColumn() tenant_count = LinkedCountColumn( viewname='tenancy:tenant_list', url_params={'group': 'slug'}, diff --git a/netbox/utilities/tables.py b/netbox/utilities/tables.py index bd52851ca..661958712 100644 --- a/netbox/utilities/tables.py +++ b/netbox/utilities/tables.py @@ -287,3 +287,20 @@ class TagColumn(tables.TemplateColumn): def value(self, value): return ",".join([tag.name for tag in value.all()]) + + +class MPTTColumn(tables.TemplateColumn): + template_code = """{% for i in record.get_ancestors %}{% endfor %}""" \ + """{{ record.name }}""" + + def __init__(self, *args, **kwargs): + super().__init__( + template_code=self.template_code, + orderable=False, + attrs={'td': {'class': 'text-nowrap'}}, + *args, + **kwargs + ) + + def value(self, value): + return value