1
1
"""
2
2
Defines each django model's GUI filter/search options.
3
3
"""
4
- from django . utils . translation import gettext_lazy as _
4
+
5
5
from dcim .models import Device , Interface , Region , Site , SiteGroup , VirtualChassis
6
6
from django import forms
7
- from django .utils .translation import gettext as _
7
+ from django .utils .translation import gettext_lazy as _
8
8
from ipam .models import Prefix
9
9
from netbox .forms import NetBoxModelFilterSetForm
10
- from utilities .forms .rendering import FieldSet
11
10
from utilities .forms .fields import (
12
11
DynamicModelChoiceField ,
13
12
DynamicModelMultipleChoiceField ,
14
13
TagFilterField ,
15
14
)
15
+ from utilities .forms .rendering import FieldSet
16
16
from utilities .forms .utils import add_blank_choice
17
17
from virtualization .models import VirtualMachine , VMInterface
18
18
19
-
20
19
from ..choices import (
21
20
ACLActionChoices ,
22
21
ACLAssignmentDirectionChoices ,
@@ -45,124 +44,155 @@ class AccessListFilterForm(NetBoxModelFilterSetForm):
45
44
"""
46
45
47
46
model = AccessList
48
- region = DynamicModelChoiceField (
47
+ fieldsets = (
48
+ FieldSet ("q" , "tag" , name = None ),
49
+ FieldSet ("type" , "default_action" , name = _ ("ACL Details" )),
50
+ FieldSet ("region_id" , "site_group_id" , "site_id" , "device_id" , name = _ ("Device Details" )),
51
+ FieldSet ("virtual_chassis_id" , name = _ ("Virtual Chassis Details" )),
52
+ FieldSet ("virtual_machine_id" , name = _ ("Virtual Machine Details" )),
53
+ )
54
+
55
+ # ACL
56
+ type = forms .ChoiceField (
57
+ choices = add_blank_choice (ACLTypeChoices ),
58
+ required = False ,
59
+ )
60
+ default_action = forms .ChoiceField (
61
+ choices = add_blank_choice (ACLActionChoices ),
62
+ required = False ,
63
+ label = _ ("Default Action" ),
64
+ )
65
+
66
+ # Device selector
67
+ region_id = DynamicModelChoiceField (
49
68
queryset = Region .objects .all (),
50
69
required = False ,
70
+ label = _ ("Region" ),
51
71
)
52
- site_group = DynamicModelChoiceField (
72
+ site_group_id = DynamicModelChoiceField (
53
73
queryset = SiteGroup .objects .all (),
54
74
required = False ,
55
- label = "Site Group" ,
75
+ label = _ ( "Site Group" ) ,
56
76
)
57
- site = DynamicModelChoiceField (
77
+ site_id = DynamicModelChoiceField (
58
78
queryset = Site .objects .all (),
59
79
required = False ,
60
- query_params = {"region_id" : "$region" , "group_id" : "$site_group" },
80
+ query_params = {
81
+ "region_id" : "$region_id" ,
82
+ "group_id" : "$site_group_id" ,
83
+ },
84
+ label = _ ("Site" ),
61
85
)
62
86
device_id = DynamicModelChoiceField (
63
87
queryset = Device .objects .all (),
64
88
query_params = {
65
- "region_id" : "$region " ,
66
- "group_id" : "$site_group " ,
67
- "site_id" : "$site " ,
89
+ "region_id" : "$region_id " ,
90
+ "group_id" : "$site_group_id " ,
91
+ "site_id" : "$site_id " ,
68
92
},
69
93
required = False ,
70
- label = _ ("Device" ,),
71
- )
72
- virtual_machine_id = DynamicModelChoiceField (
73
- queryset = VirtualMachine .objects .all (),
74
- required = False ,
75
- label = _ ("Virtual Machine" ,)
94
+ label = _ ("Device" ),
76
95
)
96
+
97
+ # Virtual Chassis selector
77
98
virtual_chassis_id = DynamicModelChoiceField (
78
99
queryset = VirtualChassis .objects .all (),
79
100
required = False ,
80
- label = _ ("Virtual Chassis" ,)
101
+ label = _ ("Virtual Chassis" ),
81
102
)
82
- type = forms .ChoiceField (
83
- choices = add_blank_choice (ACLTypeChoices ),
84
- required = False ,
85
- )
86
- default_action = forms .ChoiceField (
87
- choices = add_blank_choice (ACLActionChoices ),
103
+
104
+ # Virtual Machine selector
105
+ virtual_machine_id = DynamicModelChoiceField (
106
+ queryset = VirtualMachine .objects .all (),
88
107
required = False ,
89
- label = "Default Action" ,
108
+ label = _ ( "Virtual Machine" ) ,
90
109
)
110
+
111
+ # Tag selector
91
112
tag = TagFilterField (model )
92
113
93
- fieldsets = (
94
- FieldSet ("region" , "site_group" , "site" , "device_id" , "virtual_chassis_id" , "virtual_machine_id" , name = _ ("Host Details" )),
95
- FieldSet ("type" , "default_action" , name = _ ('ACL Details' )),
96
- FieldSet ("q" , "tag" ,name = None )
97
- )
98
114
99
115
class ACLInterfaceAssignmentFilterForm (NetBoxModelFilterSetForm ):
100
116
"""
101
117
GUI filter form to search the django AccessList model.
102
118
"""
103
119
104
120
model = ACLInterfaceAssignment
105
- region = DynamicModelChoiceField (
121
+ fieldsets = (
122
+ FieldSet ("q" , "tag" , name = None ),
123
+ FieldSet ("access_list_id" , "direction" , name = _ ("ACL Details" )),
124
+ FieldSet ("region_id" , "site_group_id" , "site_id" , "device_id" , "interface_id" , name = _ ("Device Details" )),
125
+ FieldSet ("virtual_machine_id" , "vminterface_id" , name = _ ("Virtual Machine Details" )),
126
+ )
127
+
128
+ # ACL selector
129
+ access_list_id = DynamicModelChoiceField (
130
+ queryset = AccessList .objects .all (),
131
+ required = False ,
132
+ label = _ ("Access List" ),
133
+ )
134
+ direction = forms .ChoiceField (
135
+ choices = add_blank_choice (ACLAssignmentDirectionChoices ),
136
+ required = False ,
137
+ label = _ ("Direction" ),
138
+ )
139
+
140
+ # Device Interface selector
141
+ region_id = DynamicModelChoiceField (
106
142
queryset = Region .objects .all (),
107
143
required = False ,
144
+ label = _ ("Region" ),
108
145
)
109
- site_group = DynamicModelChoiceField (
146
+ site_group_id = DynamicModelChoiceField (
110
147
queryset = SiteGroup .objects .all (),
111
148
required = False ,
112
- label = "Site Group" ,
149
+ label = _ ( "Site Group" ) ,
113
150
)
114
- site = DynamicModelChoiceField (
151
+ site_id = DynamicModelChoiceField (
115
152
queryset = Site .objects .all (),
116
153
required = False ,
117
- query_params = {"region_id" : "$region" , "group_id" : "$site_group" },
154
+ query_params = {
155
+ "region_id" : "$region_id" ,
156
+ "group_id" : "$site_group_id" ,
157
+ },
158
+ label = _ ("Site" ),
118
159
)
119
- device = DynamicModelChoiceField (
160
+ device_id = DynamicModelChoiceField (
120
161
queryset = Device .objects .all (),
121
162
query_params = {
122
- "region_id" : "$region " ,
123
- "group_id" : "$site_group " ,
124
- "site_id" : "$site " ,
163
+ "region_id" : "$region_id " ,
164
+ "group_id" : "$site_group_id " ,
165
+ "site_id" : "$site_id " ,
125
166
},
126
167
required = False ,
168
+ label = _ ("Device" ),
127
169
)
128
- interface = DynamicModelChoiceField (
170
+ interface_id = DynamicModelChoiceField (
129
171
queryset = Interface .objects .all (),
130
172
required = False ,
131
173
query_params = {
132
- "device_id" : "$device " ,
174
+ "device_id" : "$device_id " ,
133
175
},
176
+ label = _ ("Device Interface" ),
134
177
)
135
- virtual_machine = DynamicModelChoiceField (
178
+
179
+ # Virtual Machine Interface selector
180
+ virtual_machine_id = DynamicModelChoiceField (
136
181
queryset = VirtualMachine .objects .all (),
137
182
required = False ,
138
- label = "Virtual Machine" ,
183
+ label = _ ( "Virtual Machine" ) ,
139
184
)
140
- vminterface = DynamicModelChoiceField (
185
+ vminterface_id = DynamicModelChoiceField (
141
186
queryset = VMInterface .objects .all (),
142
187
required = False ,
143
188
query_params = {
144
- "virtual_machine_id" : "$virtual_machine" ,
145
- },
146
- label = "Interface" ,
147
- )
148
- access_list = DynamicModelChoiceField (
149
- queryset = AccessList .objects .all (),
150
- query_params = {
151
- "assigned_object" : "$device" ,
189
+ "virtual_machine_id" : "$virtual_machine_id" ,
152
190
},
153
- label = "Access List" ,
191
+ label = _ ( "VM Interface" ) ,
154
192
)
155
- direction = forms .ChoiceField (
156
- choices = add_blank_choice (ACLAssignmentDirectionChoices ),
157
- required = False ,
158
- )
159
- tag = TagFilterField (model )
160
193
161
- # fieldsets = (
162
- # (None, ('q', 'tag')),
163
- # ('Host Details', ('region', 'site_group', 'site', 'device')),
164
- # ('ACL Details', ('type', 'default_action')),
165
- # )
194
+ # Tag selector
195
+ tag = TagFilterField (model )
166
196
167
197
168
198
class ACLStandardRuleFilterForm (NetBoxModelFilterSetForm ):
@@ -171,59 +201,90 @@ class ACLStandardRuleFilterForm(NetBoxModelFilterSetForm):
171
201
"""
172
202
173
203
model = ACLStandardRule
174
- tag = TagFilterField (model )
175
- access_list = DynamicModelMultipleChoiceField (
204
+ fieldsets = (
205
+ FieldSet ("q" , "tag" , name = None ),
206
+ FieldSet ("access_list_id" , "index" , "action" , name = _ ("ACL Details" )),
207
+ FieldSet ("source_prefix_id" , name = _ ("Source Details" )),
208
+ )
209
+
210
+ access_list_id = DynamicModelMultipleChoiceField (
176
211
queryset = AccessList .objects .all (),
212
+ query_params = {
213
+ "type" : ACLTypeChoices .TYPE_STANDARD ,
214
+ },
177
215
required = False ,
216
+ label = _ ("Access List" ),
178
217
)
179
- source_prefix = DynamicModelMultipleChoiceField (
180
- queryset = Prefix .objects .all (),
218
+ index = forms .IntegerField (
181
219
required = False ,
182
- label = "Source Prefix" ,
220
+ label = _ ( "Index" ) ,
183
221
)
184
222
action = forms .ChoiceField (
185
223
choices = add_blank_choice (ACLRuleActionChoices ),
186
224
required = False ,
225
+ label = _ ("Action" ),
187
226
)
188
227
189
- fieldsets = (
190
- FieldSet ("access_list" , "action" , "source_prefix" , name = _ ('Rule Details' )),
191
- FieldSet ("q" , "tag" ,name = None )
228
+ # Source selectors
229
+ source_prefix_id = DynamicModelMultipleChoiceField (
230
+ queryset = Prefix .objects .all (),
231
+ required = False ,
232
+ label = _ ("Source Prefix" ),
192
233
)
234
+
235
+ # Tag selector
236
+ tag = TagFilterField (model )
237
+
238
+
193
239
class ACLExtendedRuleFilterForm (NetBoxModelFilterSetForm ):
194
240
"""
195
241
GUI filter form to search the django ACLExtendedRule model.
196
242
"""
197
243
198
244
model = ACLExtendedRule
199
- index = forms .IntegerField (
200
- required = False ,
245
+ fieldsets = (
246
+ FieldSet ("q" , "tag" , name = None ),
247
+ FieldSet ("access_list_id" , "index" , "action" , "protocol" , name = _ ("ACL Details" )),
248
+ FieldSet ("source_prefix_id" , name = _ ("Source Details" )),
249
+ FieldSet ("destination_prefix_id" , name = _ ("Destination Details" )),
201
250
)
202
- tag = TagFilterField ( model )
203
- access_list = DynamicModelMultipleChoiceField (
251
+
252
+ access_list_id = DynamicModelMultipleChoiceField (
204
253
queryset = AccessList .objects .all (),
254
+ query_params = {
255
+ "type" : ACLTypeChoices .TYPE_EXTENDED ,
256
+ },
257
+ required = False ,
258
+ label = _ ("Access List" ),
259
+ )
260
+ index = forms .IntegerField (
205
261
required = False ,
262
+ label = _ ("Index" ),
206
263
)
207
264
action = forms .ChoiceField (
208
265
choices = add_blank_choice (ACLRuleActionChoices ),
209
266
required = False ,
267
+ label = _ ("Action" ),
210
268
)
211
- source_prefix = DynamicModelMultipleChoiceField (
212
- queryset = Prefix . objects . all ( ),
269
+ protocol = forms . ChoiceField (
270
+ choices = add_blank_choice ( ACLProtocolChoices ),
213
271
required = False ,
214
- label = "Source Prefix" ,
272
+ label = _ ( "Protocol" ) ,
215
273
)
216
- desintation_prefix = DynamicModelMultipleChoiceField (
274
+
275
+ # Source selectors
276
+ source_prefix_id = DynamicModelMultipleChoiceField (
217
277
queryset = Prefix .objects .all (),
218
278
required = False ,
219
- label = "Destination Prefix" ,
279
+ label = _ ( "Source Prefix") ,
220
280
)
221
- protocol = forms .ChoiceField (
222
- choices = add_blank_choice (ACLProtocolChoices ),
281
+
282
+ # Destination selectors
283
+ destination_prefix_id = DynamicModelMultipleChoiceField (
284
+ queryset = Prefix .objects .all (),
223
285
required = False ,
286
+ label = _ ("Destination Prefix" ),
224
287
)
225
288
226
- fieldsets = (
227
- FieldSet ("access_list" , "action" , "source_prefix" , "desintation_prefix" , "protocol" , name = _ ('Rule Details' )),
228
- FieldSet ("q" , "tag" ,name = None )
229
- )
289
+ # Tag selector
290
+ tag = TagFilterField (model )
0 commit comments