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
« 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
5from circuits.models import *
6from netbox.tables import PrimaryModelTable, columns
7from tenancy.tables import ContactsColumnMixin
9__all__ = (
10 'ProviderAccountTable',
11 'ProviderNetworkTable',
12 'ProviderTable',
13)
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 )
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')
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 )
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')
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 )
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')