Coverage for circuits/tables/providers.py: 100%

37 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 _ 

3from django_tables2.utils import Accessor 

4 

5from circuits.models import * 

6from netbox.tables import PrimaryModelTable, columns 

7from tenancy.tables import ContactsColumnMixin 

8 

9__all__ = ( 

10 'ProviderAccountTable', 

11 'ProviderNetworkTable', 

12 'ProviderTable', 

13) 

14 

15 

16class ProviderTable(ContactsColumnMixin, PrimaryModelTable): 

17 name = tables.Column( 

18 verbose_name=_('Name'), 

19 linkify=True 

20 ) 

21 accounts = columns.ManyToManyColumn( 

22 linkify_item=True, 

23 verbose_name=_('Accounts') 

24 ) 

25 account_count = columns.LinkedCountColumn( 

26 viewname='circuits:provideraccount_list', 

27 url_params={'provider_id': 'pk'}, 

28 verbose_name=_('Account Count') 

29 ) 

30 asns = columns.ManyToManyColumn( 

31 linkify_item=True, 

32 verbose_name=_('ASNs') 

33 ) 

34 asn_count = columns.LinkedCountColumn( 

35 viewname='ipam:asn_list', 

36 url_params={'provider_id': 'pk'}, 

37 verbose_name=_('ASN Count') 

38 ) 

39 circuit_count = columns.LinkedCountColumn( 

40 accessor=Accessor('count_circuits'), 

41 viewname='circuits:circuit_list', 

42 url_params={'provider_id': 'pk'}, 

43 verbose_name=_('Circuits') 

44 ) 

45 tags = columns.TagColumn( 

46 url_name='circuits:provider_list' 

47 ) 

48 

49 class Meta(PrimaryModelTable.Meta): 

50 model = Provider 

51 fields = ( 

52 'pk', 'id', 'name', 'accounts', 'account_count', 'asns', 'asn_count', 'circuit_count', 'description', 

53 'comments', 'contacts', 'tags', 'created', 'last_updated', 

54 ) 

55 default_columns = ('pk', 'name', 'account_count', 'circuit_count') 

56 

57 

58class ProviderAccountTable(ContactsColumnMixin, PrimaryModelTable): 

59 account = tables.Column( 

60 linkify=True, 

61 verbose_name=_('Account'), 

62 ) 

63 name = tables.Column( 

64 verbose_name=_('Name'), 

65 ) 

66 provider = tables.Column( 

67 verbose_name=_('Provider'), 

68 linkify=True 

69 ) 

70 circuit_count = columns.LinkedCountColumn( 

71 accessor=Accessor('count_circuits'), 

72 viewname='circuits:circuit_list', 

73 url_params={'provider_account_id': 'pk'}, 

74 verbose_name=_('Circuits') 

75 ) 

76 tags = columns.TagColumn( 

77 url_name='circuits:provideraccount_list' 

78 ) 

79 

80 class Meta(PrimaryModelTable.Meta): 

81 model = ProviderAccount 

82 fields = ( 

83 'pk', 'id', 'account', 'name', 'provider', 'circuit_count', 'comments', 'contacts', 'tags', 'created', 

84 'last_updated', 

85 ) 

86 default_columns = ('pk', 'account', 'name', 'provider', 'circuit_count') 

87 

88 

89class ProviderNetworkTable(PrimaryModelTable): 

90 name = tables.Column( 

91 verbose_name=_('Name'), 

92 linkify=True 

93 ) 

94 provider = tables.Column( 

95 verbose_name=_('Provider'), 

96 linkify=True 

97 ) 

98 tags = columns.TagColumn( 

99 url_name='circuits:providernetwork_list' 

100 ) 

101 

102 class Meta(PrimaryModelTable.Meta): 

103 model = ProviderNetwork 

104 fields = ( 

105 'pk', 'id', 'name', 'provider', 'service_id', 'description', 'comments', 'created', 'last_updated', 'tags', 

106 ) 

107 default_columns = ('pk', 'name', 'provider', 'service_id', 'description')