Coverage for dcim/tables/modules.py: 100%
49 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 dcim.models import Module, ModuleBayType, ModuleType, ModuleTypeProfile
5from netbox.tables import PrimaryModelTable, columns
7from .template_code import MODULETYPEPROFILE_ATTRIBUTES, WEIGHT
9__all__ = (
10 'ModuleBayTypeTable',
11 'ModuleTable',
12 'ModuleTypeProfileTable',
13 'ModuleTypeTable',
14)
17class ModuleBayTypeTable(PrimaryModelTable):
18 name = tables.Column(
19 verbose_name=_('Name'),
20 linkify=True
21 )
22 manufacturer = tables.Column(
23 verbose_name=_('Manufacturer'),
24 linkify=True
25 )
26 color = columns.ColorColumn(
27 verbose_name=_('Color'),
28 )
29 tags = columns.TagColumn(
30 url_name='dcim:modulebaytype_list'
31 )
33 class Meta(PrimaryModelTable.Meta):
34 model = ModuleBayType
35 fields = (
36 'pk', 'id', 'name', 'slug', 'manufacturer', 'color', 'description', 'comments', 'tags',
37 'created', 'last_updated',
38 )
39 default_columns = (
40 'pk', 'name', 'manufacturer', 'color', 'description',
41 )
44class ModuleTypeProfileTable(PrimaryModelTable):
45 name = tables.Column(
46 verbose_name=_('Name'),
47 linkify=True
48 )
49 attributes = columns.TemplateColumn(
50 template_code=MODULETYPEPROFILE_ATTRIBUTES,
51 accessor=tables.A('schema__properties'),
52 orderable=False,
53 verbose_name=_('Attributes')
54 )
55 tags = columns.TagColumn(
56 url_name='dcim:moduletypeprofile_list'
57 )
59 class Meta(PrimaryModelTable.Meta):
60 model = ModuleTypeProfile
61 fields = (
62 'pk', 'id', 'name', 'description', 'comments', 'tags', 'created', 'last_updated',
63 )
64 default_columns = (
65 'pk', 'name', 'description', 'attributes',
66 )
69class ModuleTypeTable(PrimaryModelTable):
70 profile = tables.Column(
71 verbose_name=_('Profile'),
72 linkify=True
73 )
74 manufacturer = tables.Column(
75 verbose_name=_('Manufacturer'),
76 linkify=True
77 )
78 module_bay_types = columns.ManyToManyColumn(
79 verbose_name=_('Bay Types'),
80 linkify_item=True,
81 )
82 model = tables.Column(
83 linkify=True,
84 verbose_name=_('Module Type')
85 )
86 cooling_method = columns.ChoiceFieldColumn(
87 verbose_name=_('Cooling Method'),
88 )
89 weight = columns.TemplateColumn(
90 verbose_name=_('Weight'),
91 template_code=WEIGHT,
92 order_by=('_abs_weight', 'weight_unit')
93 )
94 attributes = columns.DictColumn(
95 orderable=False,
96 )
97 module_count = columns.LinkedCountColumn(
98 viewname='dcim:module_list',
99 url_params={'module_type_id': 'pk'},
100 verbose_name=_('Module Count'),
101 )
102 tags = columns.TagColumn(
103 url_name='dcim:moduletype_list'
104 )
106 class Meta(PrimaryModelTable.Meta):
107 model = ModuleType
108 fields = (
109 'pk', 'id', 'model', 'profile', 'manufacturer', 'part_number', 'airflow', 'cooling_method', 'weight',
110 'end_of_life', 'module_bay_types',
111 'description', 'attributes', 'module_count', 'comments', 'tags', 'created', 'last_updated',
112 )
113 default_columns = (
114 'pk', 'model', 'profile', 'manufacturer', 'part_number', 'module_count',
115 )
118class ModuleTable(PrimaryModelTable):
119 device = tables.Column(
120 verbose_name=_('Device'),
121 linkify=True
122 )
123 module_bay = tables.Column(
124 verbose_name=_('Module Bay'),
125 linkify=True
126 )
127 manufacturer = tables.Column(
128 verbose_name=_('Manufacturer'),
129 accessor=tables.A('module_type__manufacturer'),
130 linkify=True
131 )
132 profile = tables.Column(
133 verbose_name=_('Profile'),
134 accessor=tables.A('module_type__profile'),
135 linkify=True,
136 )
137 module_type = tables.Column(
138 verbose_name=_('Module Type'),
139 linkify=True
140 )
141 status = columns.ChoiceFieldColumn(
142 verbose_name=_('Status'),
143 )
144 tags = columns.TagColumn(
145 url_name='dcim:module_list'
146 )
148 class Meta(PrimaryModelTable.Meta):
149 model = Module
150 fields = (
151 'pk', 'id', 'device', 'module_bay', 'manufacturer', 'profile', 'module_type', 'status',
152 'serial', 'asset_tag',
153 'description', 'comments', 'tags', 'created', 'last_updated',
154 )
155 default_columns = (
156 'pk', 'id', 'device', 'module_bay', 'manufacturer', 'module_type', 'status', 'serial', 'asset_tag',
157 )