Coverage for users/forms/bulk_edit.py: 100%
56 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.contrib.postgres.forms import SimpleArrayField
3from django.utils.translation import gettext_lazy as _
5from ipam.formfields import IPNetworkFormField
6from ipam.validators import prefix_validator
7from users.models import *
8from utilities.forms import BulkEditForm
9from utilities.forms.fields import DynamicModelChoiceField
10from utilities.forms.rendering import FieldSet
11from utilities.forms.widgets import BulkEditNullBooleanSelect, DateTimePicker
13__all__ = (
14 'GroupBulkEditForm',
15 'ObjectPermissionBulkEditForm',
16 'OwnerBulkEditForm',
17 'OwnerGroupBulkEditForm',
18 'TokenBulkEditForm',
19 'UserBulkEditForm',
20)
23class UserBulkEditForm(BulkEditForm):
24 pk = forms.ModelMultipleChoiceField(
25 queryset=User.objects.all(),
26 widget=forms.MultipleHiddenInput
27 )
28 first_name = forms.CharField(
29 label=_('First name'),
30 max_length=150,
31 required=False
32 )
33 last_name = forms.CharField(
34 label=_('Last name'),
35 max_length=150,
36 required=False
37 )
38 is_active = forms.NullBooleanField(
39 required=False,
40 widget=BulkEditNullBooleanSelect,
41 label=_('Active')
42 )
43 is_superuser = forms.NullBooleanField(
44 required=False,
45 widget=BulkEditNullBooleanSelect,
46 label=_('Superuser status')
47 )
49 model = User
50 fieldsets = (
51 FieldSet('first_name', 'last_name', 'is_active', 'is_superuser'),
52 )
53 nullable_fields = ('first_name', 'last_name')
56class GroupBulkEditForm(BulkEditForm):
57 pk = forms.ModelMultipleChoiceField(
58 queryset=Group.objects.all(),
59 widget=forms.MultipleHiddenInput
60 )
61 description = forms.CharField(
62 label=_('Description'),
63 max_length=200,
64 required=False
65 )
67 model = User
68 fieldsets = (
69 FieldSet('description'),
70 )
71 nullable_fields = ('description',)
74class ObjectPermissionBulkEditForm(BulkEditForm):
75 pk = forms.ModelMultipleChoiceField(
76 queryset=ObjectPermission.objects.all(),
77 widget=forms.MultipleHiddenInput
78 )
79 description = forms.CharField(
80 label=_('Description'),
81 max_length=200,
82 required=False
83 )
84 enabled = forms.NullBooleanField(
85 required=False,
86 widget=BulkEditNullBooleanSelect,
87 label=_('Enabled')
88 )
90 model = ObjectPermission
91 fieldsets = (
92 FieldSet('enabled', 'description'),
93 )
94 nullable_fields = ('description',)
97class TokenBulkEditForm(BulkEditForm):
98 pk = forms.ModelMultipleChoiceField(
99 queryset=Token.objects.all(),
100 widget=forms.MultipleHiddenInput
101 )
102 enabled = forms.NullBooleanField(
103 required=False,
104 widget=BulkEditNullBooleanSelect,
105 label=_('Enabled')
106 )
107 write_enabled = forms.NullBooleanField(
108 required=False,
109 widget=BulkEditNullBooleanSelect,
110 label=_('Write enabled')
111 )
112 description = forms.CharField(
113 max_length=200,
114 required=False,
115 label=_('Description')
116 )
117 expires = forms.DateTimeField(
118 required=False,
119 widget=DateTimePicker(),
120 label=_('Expires')
121 )
122 allowed_ips = SimpleArrayField(
123 base_field=IPNetworkFormField(validators=[prefix_validator]),
124 required=False,
125 label=_('Allowed IPs')
126 )
128 model = Token
129 fieldsets = (
130 FieldSet('enabled', 'write_enabled', 'description', 'expires', 'allowed_ips'),
131 )
132 nullable_fields = (
133 'expires', 'description', 'allowed_ips',
134 )
137class OwnerGroupBulkEditForm(BulkEditForm):
138 pk = forms.ModelMultipleChoiceField(
139 queryset=OwnerGroup.objects.all(),
140 widget=forms.MultipleHiddenInput
141 )
142 description = forms.CharField(
143 label=_('Description'),
144 max_length=200,
145 required=False
146 )
148 model = OwnerGroup
149 fieldsets = (
150 FieldSet('description',),
151 )
152 nullable_fields = ('description',)
155class OwnerBulkEditForm(BulkEditForm):
156 pk = forms.ModelMultipleChoiceField(
157 queryset=Owner.objects.all(),
158 widget=forms.MultipleHiddenInput
159 )
160 group = DynamicModelChoiceField(
161 label=_('Group'),
162 queryset=OwnerGroup.objects.all(),
163 required=False
164 )
165 description = forms.CharField(
166 label=_('Description'),
167 max_length=200,
168 required=False
169 )
171 model = Owner
172 fieldsets = (
173 FieldSet('group', 'description'),
174 )
175 nullable_fields = ('group', 'description',)