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

1from django import forms 

2from django.utils.translation import gettext_lazy as _ 

3 

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 

13 

14__all__ = ( 

15 'GroupFilterForm', 

16 'ObjectPermissionFilterForm', 

17 'OwnerFilterForm', 

18 'OwnerGroupFilterForm', 

19 'TokenFilterForm', 

20 'UserFilterForm', 

21) 

22 

23 

24class GroupFilterForm(NetBoxModelFilterSetForm): 

25 model = Group 

26 fieldsets = ( 

27 FieldSet('q', 'filter_id',), 

28 ) 

29 

30 

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 ) 

57 

58 

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 ) 

111 

112 

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 ) 

152 

153 

154class OwnerGroupFilterForm(NetBoxModelFilterSetForm): 

155 model = OwnerGroup 

156 fieldsets = ( 

157 FieldSet('q', 'filter_id',), 

158 ) 

159 

160 

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 )