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
« 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 _
4from ipam.models import *
5from netbox.tables import OrganizationalModelTable, PrimaryModelTable, columns
6from tenancy.tables import ContactsColumnMixin, TenancyColumnsMixin
8__all__ = (
9 'ASNRangeTable',
10 'ASNTable',
11)
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 )
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')
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 )
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 )