Coverage for core/tables/columns.py: 57%

21 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.safestring import mark_safe 

3 

4from netbox.registry import registry 

5 

6__all__ = ( 

7 'BackendTypeColumn', 

8 'BadgeColumn', 

9) 

10 

11 

12class BackendTypeColumn(tables.Column): 

13 """ 

14 Display a data backend type. 

15 """ 

16 def render(self, value): 

17 if backend := registry['data_backends'].get(value): 

18 return backend.label 

19 return value 

20 

21 def value(self, value): 

22 return value 

23 

24 

25class BadgeColumn(tables.Column): 

26 """ 

27 Render a colored badge for a value. 

28 

29 Args: 

30 badges: A dictionary mapping of values to core.constants.Badge instances. 

31 """ 

32 def __init__(self, badges, *args, **kwargs): 

33 super().__init__(*args, **kwargs) 

34 self.badges = badges 

35 

36 def render(self, value): 

37 badge = self.badges.get(value) 

38 return mark_safe(f'<span class="badge text-bg-{badge.color}">{badge.label}</span>') 

39 

40 def value(self, value): 

41 badge = self.badges.get(value) 

42 return badge.label