Coverage for users/forms/filtersets.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
1from django import forms
2from django.utils.translation import gettext_lazy as _
4from netbox.forms import NetBoxModelFilterSetForm
5from netbox.forms.mixins import SavedFiltersMixin
6from users.choices import TokenVersionChoices
7from users.models import Group, ObjectPermission, Owner, OwnerGroup, Token, User
8from utilities.forms import BOOLEAN_WITH_BLANK_CHOICES, FilterForm
9from utilities.forms.fields import DynamicModelMultipleChoiceField
10from utilities.forms.rendering import FieldSet
11from utilities.forms.utils import add_blank_choice
12from utilities.forms.widgets import DateTimePicker
14__all__ = (
15 'GroupFilterForm',
16 'ObjectPermissionFilterForm',
17 'OwnerFilterForm',
18 'OwnerGroupFilterForm',
19 'TokenFilterForm',
20 'UserFilterForm',
21)
24class GroupFilterForm(NetBoxModelFilterSetForm):
25 model = Group
26 fieldsets = (
27 FieldSet('q', 'filter_id',),
28 )
31class UserFilterForm(NetBoxModelFilterSetForm):
32 model = User
33 fieldsets = (
34 FieldSet('q', 'filter_id',),
35 FieldSet('group_id', name=_('Group')),
36 FieldSet('is_active', 'is_superuser', name=_('Status')),
37 )
38 group_id = DynamicModelMultipleChoiceField(
39 queryset=Group.objects.all(),
40 required=False,
41 label=_('Group')
42 )
43 is_active = forms.NullBooleanField(
44 required=False,
45 widget=forms.Select(
46 choices=BOOLEAN_WITH_BLANK_CHOICES
47 ),
48 label=_('Is Active'),
49 )
50 is_superuser = forms.NullBooleanField(
51 required=False,
52 widget=forms.Select(
53 choices=BOOLEAN_WITH_BLANK_CHOICES
54 ),
55 label=_('Is Superuser'),
56 )
59class ObjectPermissionFilterForm(NetBoxModelFilterSetForm):
60 model = ObjectPermission
61 fieldsets = (
62 FieldSet('q', 'filter_id',),
63 FieldSet('enabled', 'group_id', 'user_id', name=_('Permission')),
64 FieldSet('can_view', 'can_add', 'can_change', 'can_delete', name=_('Actions')),
65 )
66 enabled = forms.NullBooleanField(
67 label=_('Enabled'),
68 required=False,
69 widget=forms.Select(
70 choices=BOOLEAN_WITH_BLANK_CHOICES
71 )
72 )
73 group_id = DynamicModelMultipleChoiceField(
74 queryset=Group.objects.all(),
75 required=False,
76 label=_('Group')
77 )
78 user_id = DynamicModelMultipleChoiceField(
79 queryset=User.objects.all(),
80 required=False,
81 label=_('User')
82 )
83 can_view = forms.NullBooleanField(
84 required=False,
85 widget=forms.Select(
86 choices=BOOLEAN_WITH_BLANK_CHOICES
87 ),
88 label=_('Can View'),
89 )
90 can_add = forms.NullBooleanField(
91 required=False,
92 widget=forms.Select(
93 choices=BOOLEAN_WITH_BLANK_CHOICES
94 ),
95 label=_('Can Add'),
96 )
97 can_change = forms.NullBooleanField(
98 required=False,
99 widget=forms.Select(
100 choices=BOOLEAN_WITH_BLANK_CHOICES
101 ),
102 label=_('Can Change'),
103 )
104 can_delete = forms.NullBooleanField(
105 required=False,
106 widget=forms.Select(
107 choices=BOOLEAN_WITH_BLANK_CHOICES
108 ),
109 label=_('Can Delete'),
110 )
113class TokenFilterForm(SavedFiltersMixin, FilterForm):
114 model = Token
115 fieldsets = (
116 FieldSet('q', 'filter_id',),
117 FieldSet('version', 'user_id', 'enabled', 'write_enabled', 'expires', 'last_used', name=_('Token')),
118 )
119 version = forms.ChoiceField(
120 choices=add_blank_choice(TokenVersionChoices),
121 required=False,
122 )
123 user_id = DynamicModelMultipleChoiceField(
124 queryset=User.objects.all(),
125 required=False,
126 label=_('User')
127 )
128 enabled = forms.NullBooleanField(
129 required=False,
130 widget=forms.Select(
131 choices=BOOLEAN_WITH_BLANK_CHOICES
132 ),
133 label=_('Enabled'),
134 )
135 write_enabled = forms.NullBooleanField(
136 required=False,
137 widget=forms.Select(
138 choices=BOOLEAN_WITH_BLANK_CHOICES
139 ),
140 label=_('Write Enabled'),
141 )
142 expires = forms.DateTimeField(
143 required=False,
144 label=_('Expires'),
145 widget=DateTimePicker()
146 )
147 last_used = forms.DateTimeField(
148 required=False,
149 label=_('Last Used'),
150 widget=DateTimePicker()
151 )
154class OwnerGroupFilterForm(NetBoxModelFilterSetForm):
155 model = OwnerGroup
156 fieldsets = (
157 FieldSet('q', 'filter_id',),
158 )
161class OwnerFilterForm(NetBoxModelFilterSetForm):
162 model = Owner
163 fieldsets = (
164 FieldSet('q', 'filter_id',),
165 FieldSet('group_id', name=_('Group')),
166 FieldSet('user_group_id', 'user_id', name=_('Membership')),
167 )
168 group_id = DynamicModelMultipleChoiceField(
169 queryset=OwnerGroup.objects.all(),
170 required=False,
171 label=_('Group')
172 )
173 user_group_id = DynamicModelMultipleChoiceField(
174 queryset=Group.objects.all(),
175 required=False,
176 label=_('Groups')
177 )
178 user_id = DynamicModelMultipleChoiceField(
179 queryset=User.objects.all(),
180 required=False,
181 label=_('Users')
182 )