Coverage for tenancy/tables/columns.py: 85%
24 statements
« prev ^ index » next coverage.py v7.15.2, created at 2026-10-10 18:35 +0000
« prev ^ index » next coverage.py v7.15.2, created at 2026-10-10 18:35 +0000
1import django_tables2 as tables
2from django.utils.translation import gettext_lazy as _
4from netbox.tables import columns
6from .template_code import *
8__all__ = (
9 'ContactsColumnMixin',
10 'TenancyColumnsMixin',
11 'TenantColumn',
12 'TenantGroupColumn',
13)
16class TenantColumn(tables.TemplateColumn):
17 """
18 Include the tenant description.
19 """
20 template_code = TENANT_COLUMN
22 def __init__(self, *args, **kwargs):
23 super().__init__(template_code=self.template_code, *args, **kwargs)
25 def value(self, value):
26 return str(value) if value else None
29class TenantGroupColumn(tables.TemplateColumn):
30 """
31 Include the tenant group description.
32 """
33 template_code = TENANT_GROUP_COLUMN
35 def __init__(self, accessor=tables.A('tenant__group'), *args, **kwargs):
36 if 'verbose_name' not in kwargs: 36 ↛ 37line 36 didn't jump to line 37 because the condition on line 36 was never true
37 kwargs['verbose_name'] = _('Tenant Group')
39 super().__init__(template_code=self.template_code, accessor=accessor, *args, **kwargs)
41 def value(self, value):
42 return str(value) if value else None
45class TenancyColumnsMixin(tables.Table):
46 tenant_group = TenantGroupColumn(
47 verbose_name=_('Tenant Group'),
48 )
49 tenant = TenantColumn(
50 verbose_name=_('Tenant'),
51 )
54class ContactsColumnMixin(tables.Table):
55 contacts = columns.ManyToManyColumn(
56 verbose_name=_('Contacts'),
57 linkify_item=True,
58 transform=lambda obj: obj.contact.name
59 )