| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- import django_tables2 as tables
- from django_tables2.utils import Accessor
- from dcim.models import Cable
- from netbox.tables import NetBoxTable, columns
- from tenancy.tables import TenantColumn
- from .template_code import CABLE_LENGTH
- __all__ = (
- 'CableTable',
- )
- class CableTerminationsColumn(tables.TemplateColumn):
- def __init__(self, cable_end, *args, **kwargs):
- template_code = """
- {% for term in value.all %}
- {% if term.cable_end == '""" + cable_end + """' %}
- <a href="{{ term.termination.get_absolute_url }}">{{ term.termination }}</a>
- {% endif %}
- {% endfor %}
- """
- super().__init__(template_code=template_code, *args, **kwargs)
- def value(self, value):
- return ', '.join([str(t.termination) for t in value.all()])
- #
- # Cables
- #
- class CableTable(NetBoxTable):
- # termination_a_parent = tables.TemplateColumn(
- # template_code=CABLE_TERMINATION_PARENT,
- # accessor=Accessor('termination_a'),
- # orderable=False,
- # verbose_name='Side A'
- # )
- # rack_a = tables.Column(
- # accessor=Accessor('termination_a__device__rack'),
- # orderable=False,
- # linkify=True,
- # verbose_name='Rack A'
- # )
- # termination_b_parent = tables.TemplateColumn(
- # template_code=CABLE_TERMINATION_PARENT,
- # accessor=Accessor('termination_b'),
- # orderable=False,
- # verbose_name='Side B'
- # )
- # rack_b = tables.Column(
- # accessor=Accessor('termination_b__device__rack'),
- # orderable=False,
- # linkify=True,
- # verbose_name='Rack B'
- # )
- a_terminations = CableTerminationsColumn(
- cable_end='A',
- accessor=Accessor('terminations'),
- orderable=False,
- verbose_name='A Side'
- )
- b_terminations = CableTerminationsColumn(
- cable_end='B',
- accessor=Accessor('terminations'),
- orderable=False,
- verbose_name='B Side'
- )
- status = columns.ChoiceFieldColumn()
- tenant = TenantColumn()
- length = columns.TemplateColumn(
- template_code=CABLE_LENGTH,
- order_by=('_abs_length', 'length_unit')
- )
- color = columns.ColorColumn()
- tags = columns.TagColumn(
- url_name='dcim:cable_list'
- )
- class Meta(NetBoxTable.Meta):
- model = Cable
- fields = (
- 'pk', 'id', 'label', 'a_terminations', 'b_terminations', 'status', 'type', 'tenant', 'color', 'length',
- 'tags', 'created', 'last_updated',
- )
- default_columns = (
- 'pk', 'id', 'label', 'a_terminations', 'b_terminations', 'status', 'type',
- )
|