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

1import django_tables2 as tables 

2from django.utils.translation import gettext_lazy as _ 

3 

4from netbox.tables import columns 

5 

6from .template_code import * 

7 

8__all__ = ( 

9 'ContactsColumnMixin', 

10 'TenancyColumnsMixin', 

11 'TenantColumn', 

12 'TenantGroupColumn', 

13) 

14 

15 

16class TenantColumn(tables.TemplateColumn): 

17 """ 

18 Include the tenant description. 

19 """ 

20 template_code = TENANT_COLUMN 

21 

22 def __init__(self, *args, **kwargs): 

23 super().__init__(template_code=self.template_code, *args, **kwargs) 

24 

25 def value(self, value): 

26 return str(value) if value else None 

27 

28 

29class TenantGroupColumn(tables.TemplateColumn): 

30 """ 

31 Include the tenant group description. 

32 """ 

33 template_code = TENANT_GROUP_COLUMN 

34 

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

38 

39 super().__init__(template_code=self.template_code, accessor=accessor, *args, **kwargs) 

40 

41 def value(self, value): 

42 return str(value) if value else None 

43 

44 

45class TenancyColumnsMixin(tables.Table): 

46 tenant_group = TenantGroupColumn( 

47 verbose_name=_('Tenant Group'), 

48 ) 

49 tenant = TenantColumn( 

50 verbose_name=_('Tenant'), 

51 ) 

52 

53 

54class ContactsColumnMixin(tables.Table): 

55 contacts = columns.ManyToManyColumn( 

56 verbose_name=_('Contacts'), 

57 linkify_item=True, 

58 transform=lambda obj: obj.contact.name 

59 )