Coverage for ipam/tables/asn.py: 100%

30 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 ipam.models import * 

5from netbox.tables import OrganizationalModelTable, PrimaryModelTable, columns 

6from tenancy.tables import ContactsColumnMixin, TenancyColumnsMixin 

7 

8__all__ = ( 

9 'ASNRangeTable', 

10 'ASNTable', 

11) 

12 

13 

14class ASNRangeTable(TenancyColumnsMixin, OrganizationalModelTable): 

15 name = tables.Column( 

16 verbose_name=_('Name'), 

17 linkify=True 

18 ) 

19 rir = tables.Column( 

20 verbose_name=_('RIR'), 

21 linkify=True 

22 ) 

23 start_asdot = tables.Column( 

24 accessor=tables.A('start_asdot'), 

25 order_by=tables.A('start'), 

26 verbose_name=_('Start (ASDOT)') 

27 ) 

28 end_asdot = tables.Column( 

29 accessor=tables.A('end_asdot'), 

30 order_by=tables.A('end'), 

31 verbose_name=_('End (ASDOT)') 

32 ) 

33 tags = columns.TagColumn( 

34 url_name='ipam:asnrange_list' 

35 ) 

36 asn_count = tables.Column( 

37 verbose_name=_('ASNs') 

38 ) 

39 

40 class Meta(OrganizationalModelTable.Meta): 

41 model = ASNRange 

42 fields = ( 

43 'pk', 'name', 'slug', 'rir', 'start', 'start_asdot', 'end', 'end_asdot', 'asn_count', 'tenant', 

44 'tenant_group', 'description', 'comments', 'tags', 'created', 'last_updated', 'actions', 

45 ) 

46 default_columns = ('pk', 'name', 'rir', 'start', 'end', 'tenant', 'asn_count', 'description') 

47 

48 

49class ASNTable(TenancyColumnsMixin, ContactsColumnMixin, PrimaryModelTable): 

50 asn = tables.Column( 

51 verbose_name=_('ASN'), 

52 linkify=True 

53 ) 

54 rir = tables.Column( 

55 verbose_name=_('RIR'), 

56 linkify=True 

57 ) 

58 asn_asdot = tables.Column( 

59 accessor=tables.A('asn_asdot'), 

60 linkify=True, 

61 order_by=tables.A('asn'), 

62 verbose_name=_('ASDOT') 

63 ) 

64 site_count = columns.LinkedCountColumn( 

65 viewname='dcim:site_list', 

66 url_params={'asn_id': 'pk'}, 

67 verbose_name=_('Site Count') 

68 ) 

69 provider_count = columns.LinkedCountColumn( 

70 viewname='circuits:provider_list', 

71 url_params={'asn_id': 'pk'}, 

72 verbose_name=_('Provider Count') 

73 ) 

74 role = tables.Column( 

75 verbose_name=_('Role'), 

76 linkify=True 

77 ) 

78 sites = columns.ManyToManyColumn( 

79 linkify_item=True, 

80 verbose_name=_('Sites') 

81 ) 

82 tags = columns.TagColumn( 

83 url_name='ipam:asn_list' 

84 ) 

85 

86 class Meta(PrimaryModelTable.Meta): 

87 model = ASN 

88 fields = ( 

89 'pk', 'asn', 'asn_asdot', 'rir', 'role', 'site_count', 'provider_count', 'tenant', 'tenant_group', 

90 'description', 'contacts', 'comments', 'sites', 'tags', 'created', 'last_updated', 'actions', 

91 ) 

92 default_columns = ( 

93 'pk', 'asn', 'rir', 'role', 'site_count', 'provider_count', 'sites', 'description', 'tenant', 

94 )