9
9
from tenancy .models import Tenant
10
10
from utilities .forms import (
11
11
APISelect , APISelectMultiple , add_blank_choice , BootstrapMixin , CommentField , CSVChoiceField , DatePicker ,
12
- FilterChoiceField , SmallTextarea , SlugField , StaticSelect2 , StaticSelect2Multiple , TagFilterField
12
+ DynamicModelChoiceField , DynamicModelMultipleChoiceField , SmallTextarea , SlugField , StaticSelect2 ,
13
+ StaticSelect2Multiple , TagFilterField ,
13
14
)
14
15
from .choices import CircuitStatusChoices
15
16
from .models import Circuit , CircuitTermination , CircuitType , Provider
@@ -107,7 +108,7 @@ class ProviderFilterForm(BootstrapMixin, CustomFieldFilterForm):
107
108
required = False ,
108
109
label = 'Search'
109
110
)
110
- region = FilterChoiceField (
111
+ region = DynamicModelMultipleChoiceField (
111
112
queryset = Region .objects .all (),
112
113
to_field_name = 'slug' ,
113
114
required = False ,
@@ -119,9 +120,10 @@ class ProviderFilterForm(BootstrapMixin, CustomFieldFilterForm):
119
120
}
120
121
)
121
122
)
122
- site = FilterChoiceField (
123
+ site = DynamicModelMultipleChoiceField (
123
124
queryset = Site .objects .all (),
124
125
to_field_name = 'slug' ,
126
+ required = False ,
125
127
widget = APISelectMultiple (
126
128
api_url = "/api/dcim/sites/" ,
127
129
value_field = "slug" ,
@@ -164,6 +166,18 @@ class Meta:
164
166
#
165
167
166
168
class CircuitForm (BootstrapMixin , TenancyForm , CustomFieldModelForm ):
169
+ provider = DynamicModelChoiceField (
170
+ queryset = Provider .objects .all (),
171
+ widget = APISelect (
172
+ api_url = "/api/circuits/providers/"
173
+ )
174
+ )
175
+ type = DynamicModelChoiceField (
176
+ queryset = CircuitType .objects .all (),
177
+ widget = APISelect (
178
+ api_url = "/api/circuits/circuit-types/"
179
+ )
180
+ )
167
181
comments = CommentField ()
168
182
tags = TagField (
169
183
required = False
@@ -180,12 +194,6 @@ class Meta:
180
194
'commit_rate' : "Committed rate" ,
181
195
}
182
196
widgets = {
183
- 'provider' : APISelect (
184
- api_url = "/api/circuits/providers/"
185
- ),
186
- 'type' : APISelect (
187
- api_url = "/api/circuits/circuit-types/"
188
- ),
189
197
'status' : StaticSelect2 (),
190
198
'install_date' : DatePicker (),
191
199
}
@@ -235,14 +243,14 @@ class CircuitBulkEditForm(BootstrapMixin, AddRemoveTagsForm, CustomFieldBulkEdit
235
243
queryset = Circuit .objects .all (),
236
244
widget = forms .MultipleHiddenInput
237
245
)
238
- type = forms . ModelChoiceField (
246
+ type = DynamicModelChoiceField (
239
247
queryset = CircuitType .objects .all (),
240
248
required = False ,
241
249
widget = APISelect (
242
250
api_url = "/api/circuits/circuit-types/"
243
251
)
244
252
)
245
- provider = forms . ModelChoiceField (
253
+ provider = DynamicModelChoiceField (
246
254
queryset = Provider .objects .all (),
247
255
required = False ,
248
256
widget = APISelect (
@@ -255,7 +263,7 @@ class CircuitBulkEditForm(BootstrapMixin, AddRemoveTagsForm, CustomFieldBulkEdit
255
263
initial = '' ,
256
264
widget = StaticSelect2 ()
257
265
)
258
- tenant = forms . ModelChoiceField (
266
+ tenant = DynamicModelChoiceField (
259
267
queryset = Tenant .objects .all (),
260
268
required = False ,
261
269
widget = APISelect (
@@ -290,17 +298,19 @@ class CircuitFilterForm(BootstrapMixin, TenancyFilterForm, CustomFieldFilterForm
290
298
required = False ,
291
299
label = 'Search'
292
300
)
293
- type = FilterChoiceField (
301
+ type = DynamicModelMultipleChoiceField (
294
302
queryset = CircuitType .objects .all (),
295
303
to_field_name = 'slug' ,
304
+ required = False ,
296
305
widget = APISelectMultiple (
297
306
api_url = "/api/circuits/circuit-types/" ,
298
307
value_field = "slug" ,
299
308
)
300
309
)
301
- provider = FilterChoiceField (
310
+ provider = DynamicModelMultipleChoiceField (
302
311
queryset = Provider .objects .all (),
303
312
to_field_name = 'slug' ,
313
+ required = False ,
304
314
widget = APISelectMultiple (
305
315
api_url = "/api/circuits/providers/" ,
306
316
value_field = "slug" ,
@@ -311,7 +321,7 @@ class CircuitFilterForm(BootstrapMixin, TenancyFilterForm, CustomFieldFilterForm
311
321
required = False ,
312
322
widget = StaticSelect2Multiple ()
313
323
)
314
- region = FilterChoiceField (
324
+ region = DynamicModelMultipleChoiceField (
315
325
queryset = Region .objects .all (),
316
326
to_field_name = 'slug' ,
317
327
required = False ,
@@ -323,9 +333,10 @@ class CircuitFilterForm(BootstrapMixin, TenancyFilterForm, CustomFieldFilterForm
323
333
}
324
334
)
325
335
)
326
- site = FilterChoiceField (
336
+ site = DynamicModelMultipleChoiceField (
327
337
queryset = Site .objects .all (),
328
338
to_field_name = 'slug' ,
339
+ required = False ,
329
340
widget = APISelectMultiple (
330
341
api_url = "/api/dcim/sites/" ,
331
342
value_field = "slug" ,
0 commit comments