Coverage for users/tables.py: 100%
70 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 as _
4from netbox.tables import NetBoxTable, columns
5from users.models import Group, ObjectPermission, Owner, OwnerGroup, Token, User
7__all__ = (
8 'GroupTable',
9 'ObjectPermissionTable',
10 'OwnerGroupTable',
11 'OwnerTable',
12 'TokenTable',
13 'UserTable',
14)
16TOKEN = """<samp><a href="{{ record.get_absolute_url }}">{{ record }}</a></samp>"""
19class TokenTable(NetBoxTable):
20 user = tables.Column(
21 linkify=True,
22 verbose_name=_('User')
23 )
24 token = columns.TemplateColumn(
25 verbose_name=_('token'),
26 template_code=TOKEN,
27 orderable=False,
28 )
29 enabled = columns.BooleanColumn(
30 verbose_name=_('Enabled')
31 )
32 write_enabled = columns.BooleanColumn(
33 verbose_name=_('Write Enabled')
34 )
35 created = columns.DateTimeColumn(
36 timespec='minutes',
37 verbose_name=_('Created'),
38 )
39 expires = columns.DateTimeColumn(
40 timespec='minutes',
41 verbose_name=_('Expires'),
42 )
43 last_used = columns.DateTimeColumn(
44 verbose_name=_('Last Used'),
45 )
46 allowed_ips = columns.ArrayColumn(
47 verbose_name=_('Allowed IPs'),
48 )
49 actions = columns.ActionsColumn(
50 actions=('edit', 'delete'),
51 )
53 class Meta(NetBoxTable.Meta):
54 model = Token
55 fields = (
56 'pk', 'id', 'token', 'version', 'pepper_id', 'user', 'description', 'enabled', 'write_enabled', 'created',
57 'expires', 'last_used', 'allowed_ips',
58 )
59 default_columns = ('token', 'version', 'user', 'enabled', 'write_enabled', 'description', 'allowed_ips')
62class UserTable(NetBoxTable):
63 username = tables.Column(
64 verbose_name=_('Username'),
65 linkify=True
66 )
67 groups = columns.ManyToManyColumn(
68 verbose_name=_('Groups'),
69 linkify_item=('users:group', {'pk': tables.A('pk')})
70 )
71 is_active = columns.BooleanColumn(
72 verbose_name=_('Is Active'),
73 )
74 is_superuser = columns.BooleanColumn(
75 verbose_name=_('Is Superuser'),
76 )
77 actions = columns.ActionsColumn(
78 actions=('edit', 'delete'),
79 )
81 class Meta(NetBoxTable.Meta):
82 model = User
83 fields = (
84 'pk', 'id', 'username', 'first_name', 'last_name', 'email', 'groups', 'is_active', 'is_superuser',
85 'last_login',
86 )
87 default_columns = ('pk', 'username', 'first_name', 'last_name', 'email', 'is_active')
90class GroupTable(NetBoxTable):
91 name = tables.Column(
92 verbose_name=_('Name'),
93 linkify=True
94 )
95 actions = columns.ActionsColumn(
96 actions=('edit', 'delete'),
97 )
99 class Meta(NetBoxTable.Meta):
100 model = Group
101 fields = ('pk', 'id', 'name', 'users_count', 'description')
104class ObjectPermissionTable(NetBoxTable):
105 name = tables.Column(
106 verbose_name=_('Name'),
107 linkify=True
108 )
109 object_types = columns.ContentTypesColumn(
110 verbose_name=_('Object Types'),
111 )
112 enabled = columns.BooleanColumn(
113 verbose_name=_('Enabled'),
114 )
115 can_view = columns.BooleanColumn(
116 verbose_name=_('Can View'),
117 orderable=False,
118 )
119 can_add = columns.BooleanColumn(
120 verbose_name=_('Can Add'),
121 orderable=False,
122 )
123 can_change = columns.BooleanColumn(
124 verbose_name=_('Can Change'),
125 orderable=False,
126 )
127 can_delete = columns.BooleanColumn(
128 verbose_name=_('Can Delete'),
129 orderable=False,
130 )
131 custom_actions = columns.ArrayColumn(
132 verbose_name=_('Custom Actions'),
133 accessor=tables.A('actions')
134 )
135 users = columns.ManyToManyColumn(
136 verbose_name=_('Users'),
137 linkify_item=('users:user', {'pk': tables.A('pk')})
138 )
139 groups = columns.ManyToManyColumn(
140 verbose_name=_('Groups'),
141 linkify_item=('users:group', {'pk': tables.A('pk')})
142 )
143 actions = columns.ActionsColumn(
144 actions=('edit', 'delete'),
145 )
147 class Meta(NetBoxTable.Meta):
148 model = ObjectPermission
149 fields = (
150 'pk', 'id', 'name', 'enabled', 'object_types', 'can_view', 'can_add', 'can_change', 'can_delete',
151 'custom_actions', 'users', 'groups', 'constraints', 'description',
152 )
153 default_columns = (
154 'pk', 'name', 'enabled', 'object_types', 'can_view', 'can_add', 'can_change', 'can_delete', 'description',
155 )
158class OwnerGroupTable(NetBoxTable):
159 name = tables.Column(
160 verbose_name=_('Name'),
161 linkify=True
162 )
163 owner_count = columns.LinkedCountColumn(
164 viewname='users:owner_list',
165 url_params={'group_id': 'pk'},
166 verbose_name=_('Owners')
167 )
168 actions = columns.ActionsColumn(
169 actions=('edit', 'delete'),
170 )
172 class Meta(NetBoxTable.Meta):
173 model = OwnerGroup
174 fields = (
175 'pk', 'id', 'name', 'description',
176 )
177 default_columns = ('pk', 'name', 'owner_count', 'description')
180class OwnerTable(NetBoxTable):
181 name = tables.Column(
182 verbose_name=_('Name'),
183 linkify=True
184 )
185 group = tables.Column(
186 verbose_name=_('Group'),
187 linkify=True,
188 )
189 user_groups = columns.ManyToManyColumn(
190 verbose_name=_('Groups'),
191 linkify_item=('users:group', {'pk': tables.A('pk')})
192 )
193 users = columns.ManyToManyColumn(
194 verbose_name=_('Users'),
195 linkify_item=('users:user', {'pk': tables.A('pk')})
196 )
197 actions = columns.ActionsColumn(
198 actions=('edit', 'delete'),
199 )
201 class Meta(NetBoxTable.Meta):
202 model = Owner
203 fields = (
204 'pk', 'id', 'name', 'group', 'description', 'user_groups', 'users',
205 )
206 default_columns = ('pk', 'name', 'group', 'description', 'user_groups', 'users')