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

1from django import forms 

2from django.contrib.contenttypes.models import ContentType 

3from django.utils.translation import gettext as _ 

4 

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 * 

21 

22__all__ = ( 

23 'IKEPolicyFilterForm', 

24 'IKEProposalFilterForm', 

25 'IPSecPolicyFilterForm', 

26 'IPSecProfileFilterForm', 

27 'IPSecProposalFilterForm', 

28 'L2VPNFilterForm', 

29 'L2VPNTerminationFilterForm', 

30 'TunnelFilterForm', 

31 'TunnelGroupFilterForm', 

32 'TunnelTerminationFilterForm', 

33) 

34 

35 

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) 

44 

45 

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) 

81 

82 

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) 

100 

101 

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) 

132 

133 

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) 

157 

158 

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) 

177 

178 

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) 

197 

198 

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) 

222 

223 

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) 

254 

255 

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)