1
0
mirror of https://github.com/netbox-community/netbox.git synced 2024-05-10 07:54:54 +00:00

Introduce MPTTColumn to represent MPTT models

This commit is contained in:
Jeremy Stretch
2021-03-04 20:47:24 -05:00
parent 6149ba6e36
commit 32501c96e5
5 changed files with 25 additions and 35 deletions

View File

@ -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
)

View File

@ -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'
)

View File

@ -56,13 +56,6 @@ INTERFACE_TAGGED_VLANS = """
{% endif %}
"""
MPTT_LINK = """
{% for i in record.get_ancestors %}
<i class="mdi mdi-circle-small"></i>
{% endfor %}
<a href="{{ record.get_absolute_url }}">{{ record.name }}</a>
"""
POWERFEED_CABLE = """
<a href="{{ value.get_absolute_url }}">{{ value }}</a>
<a href="{% url 'dcim:powerfeed_trace' pk=record.pk %}" class="btn btn-primary btn-xs" title="Trace">

View File

@ -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 %}
<i class="mdi mdi-circle-small"></i>
{% endfor %}
<a href="{{ record.get_absolute_url }}">{{ record.name }}</a>
"""
#
# 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'},

View File

@ -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 %}<i class="mdi mdi-circle-small"></i>{% endfor %}""" \
"""<a href="{{ record.get_absolute_url }}">{{ record.name }}</a>"""
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