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

1from django import forms 

2from django.contrib.postgres.forms import SimpleArrayField 

3from django.utils.translation import gettext_lazy as _ 

4 

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 

12 

13__all__ = ( 

14 'GroupBulkEditForm', 

15 'ObjectPermissionBulkEditForm', 

16 'OwnerBulkEditForm', 

17 'OwnerGroupBulkEditForm', 

18 'TokenBulkEditForm', 

19 'UserBulkEditForm', 

20) 

21 

22 

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 ) 

48 

49 model = User 

50 fieldsets = ( 

51 FieldSet('first_name', 'last_name', 'is_active', 'is_superuser'), 

52 ) 

53 nullable_fields = ('first_name', 'last_name') 

54 

55 

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 ) 

66 

67 model = User 

68 fieldsets = ( 

69 FieldSet('description'), 

70 ) 

71 nullable_fields = ('description',) 

72 

73 

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 ) 

89 

90 model = ObjectPermission 

91 fieldsets = ( 

92 FieldSet('enabled', 'description'), 

93 ) 

94 nullable_fields = ('description',) 

95 

96 

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 ) 

127 

128 model = Token 

129 fieldsets = ( 

130 FieldSet('enabled', 'write_enabled', 'description', 'expires', 'allowed_ips'), 

131 ) 

132 nullable_fields = ( 

133 'expires', 'description', 'allowed_ips', 

134 ) 

135 

136 

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 ) 

147 

148 model = OwnerGroup 

149 fieldsets = ( 

150 FieldSet('description',), 

151 ) 

152 nullable_fields = ('description',) 

153 

154 

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 ) 

170 

171 model = Owner 

172 fieldsets = ( 

173 FieldSet('group', 'description'), 

174 ) 

175 nullable_fields = ('group', 'description',)