Coverage for vpn/forms/filtersets.py: 100%
87 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.contenttypes.models import ContentType
3from django.utils.translation import gettext as _
5from dcim.models import Device, Region, Site
6from ipam.models import VLAN, RouteTarget
7from netbox.forms import NetBoxModelFilterSetForm, OrganizationalModelFilterSetForm, PrimaryModelFilterSetForm
8from tenancy.forms import ContactModelFilterForm, TenancyFilterForm
9from utilities.forms.fields import (
10 ContentTypeMultipleChoiceField,
11 DynamicModelChoiceField,
12 DynamicModelMultipleChoiceField,
13 TagFilterField,
14)
15from utilities.forms.rendering import FieldSet
16from utilities.forms.utils import add_blank_choice
17from virtualization.models import VirtualMachine
18from vpn.choices import *
19from vpn.constants import L2VPN_ASSIGNMENT_MODELS
20from vpn.models import *
22__all__ = (
23 'IKEPolicyFilterForm',
24 'IKEProposalFilterForm',
25 'IPSecPolicyFilterForm',
26 'IPSecProfileFilterForm',
27 'IPSecProposalFilterForm',
28 'L2VPNFilterForm',
29 'L2VPNTerminationFilterForm',
30 'TunnelFilterForm',
31 'TunnelGroupFilterForm',
32 'TunnelTerminationFilterForm',
33)
36class TunnelGroupFilterForm(ContactModelFilterForm, OrganizationalModelFilterSetForm):
37 model = TunnelGroup
38 fieldsets = (
39 FieldSet('q', 'filter_id', 'tag'),
40 FieldSet('owner_group_id', 'owner_id', name=_('Ownership')),
41 FieldSet('contact', 'contact_role', 'contact_group', name=_('Contacts')),
42 )
43 tag = TagFilterField(model)
46class TunnelFilterForm(ContactModelFilterForm, TenancyFilterForm, PrimaryModelFilterSetForm):
47 model = Tunnel
48 fieldsets = (
49 FieldSet('q', 'filter_id', 'tag'),
50 FieldSet('status', 'encapsulation', 'tunnel_id', name=_('Tunnel')),
51 FieldSet('ipsec_profile_id', name=_('Security')),
52 FieldSet('tenant_group_id', 'tenant_id', name=_('Tenancy')),
53 FieldSet('owner_group_id', 'owner_id', name=_('Ownership')),
54 FieldSet('contact', 'contact_role', 'contact_group', name=_('Contacts')),
55 )
56 status = forms.MultipleChoiceField(
57 label=_('Status'),
58 choices=TunnelStatusChoices,
59 required=False
60 )
61 group_id = DynamicModelMultipleChoiceField(
62 queryset=TunnelGroup.objects.all(),
63 required=False,
64 label=_('Tunnel group')
65 )
66 encapsulation = forms.MultipleChoiceField(
67 label=_('Encapsulation'),
68 choices=TunnelEncapsulationChoices,
69 required=False
70 )
71 ipsec_profile_id = DynamicModelMultipleChoiceField(
72 queryset=IPSecProfile.objects.all(),
73 required=False,
74 label=_('IPSec profile')
75 )
76 tunnel_id = forms.IntegerField(
77 required=False,
78 label=_('Tunnel ID')
79 )
80 tag = TagFilterField(model)
83class TunnelTerminationFilterForm(NetBoxModelFilterSetForm):
84 model = TunnelTermination
85 fieldsets = (
86 FieldSet('q', 'filter_id', 'tag'),
87 FieldSet('tunnel_id', 'role', name=_('Termination')),
88 )
89 tunnel_id = DynamicModelMultipleChoiceField(
90 queryset=Tunnel.objects.all(),
91 required=False,
92 label=_('Tunnel')
93 )
94 role = forms.MultipleChoiceField(
95 label=_('Role'),
96 choices=TunnelTerminationRoleChoices,
97 required=False
98 )
99 tag = TagFilterField(model)
102class IKEProposalFilterForm(PrimaryModelFilterSetForm):
103 model = IKEProposal
104 fieldsets = (
105 FieldSet('q', 'filter_id', 'tag'),
106 FieldSet(
107 'authentication_method', 'encryption_algorithm', 'authentication_algorithm', 'group', name=_('Parameters')
108 ),
109 FieldSet('owner_group_id', 'owner_id', name=_('Ownership')),
110 )
111 authentication_method = forms.MultipleChoiceField(
112 label=_('Authentication method'),
113 choices=AuthenticationMethodChoices,
114 required=False
115 )
116 encryption_algorithm = forms.MultipleChoiceField(
117 label=_('Encryption algorithm'),
118 choices=EncryptionAlgorithmChoices,
119 required=False
120 )
121 authentication_algorithm = forms.MultipleChoiceField(
122 label=_('Authentication algorithm'),
123 choices=AuthenticationAlgorithmChoices,
124 required=False
125 )
126 group = forms.MultipleChoiceField(
127 label=_('Group'),
128 choices=DHGroupChoices,
129 required=False
130 )
131 tag = TagFilterField(model)
134class IKEPolicyFilterForm(PrimaryModelFilterSetForm):
135 model = IKEPolicy
136 fieldsets = (
137 FieldSet('q', 'filter_id', 'tag'),
138 FieldSet('version', 'mode', 'proposal_id', name=_('Parameters')),
139 FieldSet('owner_group_id', 'owner_id', name=_('Ownership')),
140 )
141 version = forms.MultipleChoiceField(
142 label=_('IKE version'),
143 choices=IKEVersionChoices,
144 required=False
145 )
146 mode = forms.MultipleChoiceField(
147 label=_('Mode'),
148 choices=IKEModeChoices,
149 required=False
150 )
151 proposal_id = DynamicModelMultipleChoiceField(
152 queryset=IKEProposal.objects.all(),
153 required=False,
154 label=_('Proposal')
155 )
156 tag = TagFilterField(model)
159class IPSecProposalFilterForm(PrimaryModelFilterSetForm):
160 model = IPSecProposal
161 fieldsets = (
162 FieldSet('q', 'filter_id', 'tag'),
163 FieldSet('encryption_algorithm', 'authentication_algorithm', name=_('Parameters')),
164 FieldSet('owner_group_id', 'owner_id', name=_('Ownership')),
165 )
166 encryption_algorithm = forms.MultipleChoiceField(
167 label=_('Encryption algorithm'),
168 choices=EncryptionAlgorithmChoices,
169 required=False
170 )
171 authentication_algorithm = forms.MultipleChoiceField(
172 label=_('Authentication algorithm'),
173 choices=AuthenticationAlgorithmChoices,
174 required=False
175 )
176 tag = TagFilterField(model)
179class IPSecPolicyFilterForm(PrimaryModelFilterSetForm):
180 model = IPSecPolicy
181 fieldsets = (
182 FieldSet('q', 'filter_id', 'tag'),
183 FieldSet('proposal_id', 'pfs_group', name=_('Parameters')),
184 FieldSet('owner_group_id', 'owner_id', name=_('Ownership')),
185 )
186 proposal_id = DynamicModelMultipleChoiceField(
187 queryset=IKEProposal.objects.all(),
188 required=False,
189 label=_('Proposal')
190 )
191 pfs_group = forms.MultipleChoiceField(
192 label=_('Mode'),
193 choices=DHGroupChoices,
194 required=False
195 )
196 tag = TagFilterField(model)
199class IPSecProfileFilterForm(PrimaryModelFilterSetForm):
200 model = IPSecProfile
201 fieldsets = (
202 FieldSet('q', 'filter_id', 'tag'),
203 FieldSet('mode', 'ike_policy_id', 'ipsec_policy_id', name=_('Profile')),
204 FieldSet('owner_group_id', 'owner_id', name=_('Ownership')),
205 )
206 mode = forms.MultipleChoiceField(
207 label=_('Mode'),
208 choices=IPSecModeChoices,
209 required=False
210 )
211 ike_policy_id = DynamicModelMultipleChoiceField(
212 queryset=IKEPolicy.objects.all(),
213 required=False,
214 label=_('IKE policy')
215 )
216 ipsec_policy_id = DynamicModelMultipleChoiceField(
217 queryset=IPSecPolicy.objects.all(),
218 required=False,
219 label=_('IPSec policy')
220 )
221 tag = TagFilterField(model)
224class L2VPNFilterForm(ContactModelFilterForm, TenancyFilterForm, PrimaryModelFilterSetForm):
225 model = L2VPN
226 fieldsets = (
227 FieldSet('q', 'filter_id', 'tag'),
228 FieldSet('type', 'status', 'import_target_id', 'export_target_id', name=_('Attributes')),
229 FieldSet('tenant_group_id', 'tenant_id', name=_('Tenant')),
230 FieldSet('owner_group_id', 'owner_id', name=_('Ownership')),
231 FieldSet('contact', 'contact_role', 'contact_group', name=_('Contacts')),
232 )
233 status = forms.MultipleChoiceField(
234 label=_('Status'),
235 choices=L2VPNStatusChoices,
236 required=False
237 )
238 type = forms.ChoiceField(
239 label=_('Type'),
240 choices=add_blank_choice(L2VPNTypeChoices),
241 required=False
242 )
243 import_target_id = DynamicModelMultipleChoiceField(
244 queryset=RouteTarget.objects.all(),
245 required=False,
246 label=_('Import targets')
247 )
248 export_target_id = DynamicModelMultipleChoiceField(
249 queryset=RouteTarget.objects.all(),
250 required=False,
251 label=_('Export targets')
252 )
253 tag = TagFilterField(model)
256class L2VPNTerminationFilterForm(NetBoxModelFilterSetForm):
257 model = L2VPNTermination
258 fieldsets = (
259 FieldSet('filter_id', 'tag', 'l2vpn_id'),
260 FieldSet(
261 'assigned_object_type_id', 'region_id', 'site_id', 'device_id', 'virtual_machine_id', 'vlan_id',
262 name=_('Assigned Object')
263 ),
264 )
265 l2vpn_id = DynamicModelChoiceField(
266 queryset=L2VPN.objects.all(),
267 required=False,
268 label=_('L2VPN')
269 )
270 assigned_object_type_id = ContentTypeMultipleChoiceField(
271 queryset=ContentType.objects.filter(L2VPN_ASSIGNMENT_MODELS),
272 required=False,
273 label=_('Assigned Object Type'),
274 limit_choices_to=L2VPN_ASSIGNMENT_MODELS
275 )
276 region_id = DynamicModelMultipleChoiceField(
277 queryset=Region.objects.all(),
278 required=False,
279 label=_('Region')
280 )
281 site_id = DynamicModelMultipleChoiceField(
282 queryset=Site.objects.all(),
283 required=False,
284 null_option='None',
285 query_params={
286 'region_id': '$region_id'
287 },
288 label=_('Site')
289 )
290 device_id = DynamicModelMultipleChoiceField(
291 queryset=Device.objects.all(),
292 required=False,
293 null_option='None',
294 query_params={
295 'site_id': '$site_id'
296 },
297 label=_('Device')
298 )
299 vlan_id = DynamicModelMultipleChoiceField(
300 queryset=VLAN.objects.all(),
301 required=False,
302 null_option='None',
303 query_params={
304 'site_id': '$site_id'
305 },
306 label=_('VLAN')
307 )
308 virtual_machine_id = DynamicModelMultipleChoiceField(
309 queryset=VirtualMachine.objects.all(),
310 required=False,
311 null_option='None',
312 query_params={
313 'site_id': '$site_id'
314 },
315 label=_('Virtual Machine')
316 )
317 tag = TagFilterField(model)