55from dcim .models import Device , Interface , Region , Site , SiteGroup , VirtualChassis
66from django import forms
77from django .utils .translation import gettext_lazy as _
8- from ipam .models import Prefix
8+ from ipam .models import Aggregate , IPAddress , IPRange , Prefix
99from netbox .forms import NetBoxModelFilterSetForm
1010from utilities .forms .fields import (
1111 DynamicModelChoiceField ,
@@ -45,17 +45,38 @@ class AccessListFilterForm(NetBoxModelFilterSetForm):
4545
4646 model = AccessList
4747 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" )),
48+ FieldSet (
49+ "q" ,
50+ "tag" ,
51+ name = None ,
52+ ),
53+ FieldSet (
54+ "type" ,
55+ "default_action" ,
56+ name = _ ("ACL Details" ),
57+ ),
58+ FieldSet (
59+ "region_id" ,
60+ "site_group_id" ,
61+ "site_id" ,
62+ "device_id" ,
63+ name = _ ("Device Details" ),
64+ ),
65+ FieldSet (
66+ "virtual_chassis_id" ,
67+ name = _ ("Virtual Chassis Details" ),
68+ ),
69+ FieldSet (
70+ "virtual_machine_id" ,
71+ name = _ ("Virtual Machine Details" ),
72+ ),
5373 )
5474
55- # ACL
75+ # ACL selector
5676 type = forms .ChoiceField (
5777 choices = add_blank_choice (ACLTypeChoices ),
5878 required = False ,
79+ label = _ ("Type" ),
5980 )
6081 default_action = forms .ChoiceField (
6182 choices = add_blank_choice (ACLActionChoices ),
@@ -119,10 +140,29 @@ class ACLInterfaceAssignmentFilterForm(NetBoxModelFilterSetForm):
119140
120141 model = ACLInterfaceAssignment
121142 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" )),
143+ FieldSet (
144+ "q" ,
145+ "tag" ,
146+ name = None ,
147+ ),
148+ FieldSet (
149+ "access_list_id" ,
150+ "direction" ,
151+ name = _ ("ACL Details" ),
152+ ),
153+ FieldSet (
154+ "region_id" ,
155+ "site_group_id" ,
156+ "site_id" ,
157+ "device_id" ,
158+ "interface_id" ,
159+ name = _ ("Device Details" ),
160+ ),
161+ FieldSet (
162+ "virtual_machine_id" ,
163+ "vminterface_id" ,
164+ name = _ ("Virtual Machine Details" ),
165+ ),
126166 )
127167
128168 # ACL selector
@@ -202,9 +242,24 @@ class ACLStandardRuleFilterForm(NetBoxModelFilterSetForm):
202242
203243 model = ACLStandardRule
204244 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" )),
245+ FieldSet (
246+ "q" ,
247+ "tag" ,
248+ name = None ,
249+ ),
250+ FieldSet (
251+ "access_list_id" ,
252+ "index" ,
253+ "action" ,
254+ name = _ ("ACL Details" ),
255+ ),
256+ FieldSet (
257+ "source_aggregate_id" ,
258+ "source_ipaddress_id" ,
259+ "source_iprange_id" ,
260+ "source_prefix_id" ,
261+ name = _ ("Source Details" ),
262+ ),
208263 )
209264
210265 access_list_id = DynamicModelMultipleChoiceField (
@@ -226,6 +281,21 @@ class ACLStandardRuleFilterForm(NetBoxModelFilterSetForm):
226281 )
227282
228283 # Source selectors
284+ source_aggregate_id = DynamicModelMultipleChoiceField (
285+ queryset = Aggregate .objects .all (),
286+ required = False ,
287+ label = _ ("Source Aggregate" ),
288+ )
289+ source_ipaddress_id = DynamicModelMultipleChoiceField (
290+ queryset = IPAddress .objects .all (),
291+ required = False ,
292+ label = _ ("Source IP-Address" ),
293+ )
294+ source_iprange_id = DynamicModelMultipleChoiceField (
295+ queryset = IPRange .objects .all (),
296+ required = False ,
297+ label = _ ("Source IP-Range" ),
298+ )
229299 source_prefix_id = DynamicModelMultipleChoiceField (
230300 queryset = Prefix .objects .all (),
231301 required = False ,
@@ -243,10 +313,32 @@ class ACLExtendedRuleFilterForm(NetBoxModelFilterSetForm):
243313
244314 model = ACLExtendedRule
245315 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" )),
316+ FieldSet (
317+ "q" ,
318+ "tag" ,
319+ name = None ,
320+ ),
321+ FieldSet (
322+ "access_list_id" ,
323+ "index" ,
324+ "action" ,
325+ "protocol" ,
326+ name = _ ("ACL Details" ),
327+ ),
328+ FieldSet (
329+ "source_aggregate_id" ,
330+ "source_ipaddress_id" ,
331+ "source_iprange_id" ,
332+ "source_prefix_id" ,
333+ name = _ ("Source Details" ),
334+ ),
335+ FieldSet (
336+ "destination_aggregate_id" ,
337+ "destination_ipaddress_id" ,
338+ "destination_iprange_id" ,
339+ "destination_prefix_id" ,
340+ name = _ ("Destination Details" ),
341+ ),
250342 )
251343
252344 access_list_id = DynamicModelMultipleChoiceField (
@@ -273,13 +365,43 @@ class ACLExtendedRuleFilterForm(NetBoxModelFilterSetForm):
273365 )
274366
275367 # Source selectors
368+ source_aggregate_id = DynamicModelMultipleChoiceField (
369+ queryset = Aggregate .objects .all (),
370+ required = False ,
371+ label = _ ("Source Aggregate" ),
372+ )
373+ source_ipaddress_id = DynamicModelMultipleChoiceField (
374+ queryset = IPAddress .objects .all (),
375+ required = False ,
376+ label = _ ("Source IP-Address" ),
377+ )
378+ source_iprange_id = DynamicModelMultipleChoiceField (
379+ queryset = IPRange .objects .all (),
380+ required = False ,
381+ label = _ ("Source IP-Range" ),
382+ )
276383 source_prefix_id = DynamicModelMultipleChoiceField (
277384 queryset = Prefix .objects .all (),
278385 required = False ,
279386 label = _ ("Source Prefix" ),
280387 )
281388
282389 # Destination selectors
390+ destination_aggregate_id = DynamicModelMultipleChoiceField (
391+ queryset = Aggregate .objects .all (),
392+ required = False ,
393+ label = _ ("Destination Aggregate" ),
394+ )
395+ destination_ipaddress_id = DynamicModelMultipleChoiceField (
396+ queryset = IPAddress .objects .all (),
397+ required = False ,
398+ label = _ ("Destination IP-Address" ),
399+ )
400+ destination_iprange_id = DynamicModelMultipleChoiceField (
401+ queryset = IPRange .objects .all (),
402+ required = False ,
403+ label = _ ("Destination IP-Range" ),
404+ )
283405 destination_prefix_id = DynamicModelMultipleChoiceField (
284406 queryset = Prefix .objects .all (),
285407 required = False ,
0 commit comments