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