Skip to content

Commit ec53e1c

Browse files
Merge pull request #4136 from netbox-community/3912-remove-chained-fields
Closes #3912: Remove chained form fields
2 parents a54fcda + 7177fcf commit ec53e1c

File tree

8 files changed

+588
-556
lines changed

8 files changed

+588
-556
lines changed

netbox/circuits/forms.py

Lines changed: 27 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,8 @@
99
from tenancy.models import Tenant
1010
from utilities.forms import (
1111
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,
1314
)
1415
from .choices import CircuitStatusChoices
1516
from .models import Circuit, CircuitTermination, CircuitType, Provider
@@ -107,7 +108,7 @@ class ProviderFilterForm(BootstrapMixin, CustomFieldFilterForm):
107108
required=False,
108109
label='Search'
109110
)
110-
region = FilterChoiceField(
111+
region = DynamicModelMultipleChoiceField(
111112
queryset=Region.objects.all(),
112113
to_field_name='slug',
113114
required=False,
@@ -119,9 +120,10 @@ class ProviderFilterForm(BootstrapMixin, CustomFieldFilterForm):
119120
}
120121
)
121122
)
122-
site = FilterChoiceField(
123+
site = DynamicModelMultipleChoiceField(
123124
queryset=Site.objects.all(),
124125
to_field_name='slug',
126+
required=False,
125127
widget=APISelectMultiple(
126128
api_url="/api/dcim/sites/",
127129
value_field="slug",
@@ -164,6 +166,18 @@ class Meta:
164166
#
165167

166168
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+
)
167181
comments = CommentField()
168182
tags = TagField(
169183
required=False
@@ -180,12 +194,6 @@ class Meta:
180194
'commit_rate': "Committed rate",
181195
}
182196
widgets = {
183-
'provider': APISelect(
184-
api_url="/api/circuits/providers/"
185-
),
186-
'type': APISelect(
187-
api_url="/api/circuits/circuit-types/"
188-
),
189197
'status': StaticSelect2(),
190198
'install_date': DatePicker(),
191199
}
@@ -235,14 +243,14 @@ class CircuitBulkEditForm(BootstrapMixin, AddRemoveTagsForm, CustomFieldBulkEdit
235243
queryset=Circuit.objects.all(),
236244
widget=forms.MultipleHiddenInput
237245
)
238-
type = forms.ModelChoiceField(
246+
type = DynamicModelChoiceField(
239247
queryset=CircuitType.objects.all(),
240248
required=False,
241249
widget=APISelect(
242250
api_url="/api/circuits/circuit-types/"
243251
)
244252
)
245-
provider = forms.ModelChoiceField(
253+
provider = DynamicModelChoiceField(
246254
queryset=Provider.objects.all(),
247255
required=False,
248256
widget=APISelect(
@@ -255,7 +263,7 @@ class CircuitBulkEditForm(BootstrapMixin, AddRemoveTagsForm, CustomFieldBulkEdit
255263
initial='',
256264
widget=StaticSelect2()
257265
)
258-
tenant = forms.ModelChoiceField(
266+
tenant = DynamicModelChoiceField(
259267
queryset=Tenant.objects.all(),
260268
required=False,
261269
widget=APISelect(
@@ -290,17 +298,19 @@ class CircuitFilterForm(BootstrapMixin, TenancyFilterForm, CustomFieldFilterForm
290298
required=False,
291299
label='Search'
292300
)
293-
type = FilterChoiceField(
301+
type = DynamicModelMultipleChoiceField(
294302
queryset=CircuitType.objects.all(),
295303
to_field_name='slug',
304+
required=False,
296305
widget=APISelectMultiple(
297306
api_url="/api/circuits/circuit-types/",
298307
value_field="slug",
299308
)
300309
)
301-
provider = FilterChoiceField(
310+
provider = DynamicModelMultipleChoiceField(
302311
queryset=Provider.objects.all(),
303312
to_field_name='slug',
313+
required=False,
304314
widget=APISelectMultiple(
305315
api_url="/api/circuits/providers/",
306316
value_field="slug",
@@ -311,7 +321,7 @@ class CircuitFilterForm(BootstrapMixin, TenancyFilterForm, CustomFieldFilterForm
311321
required=False,
312322
widget=StaticSelect2Multiple()
313323
)
314-
region = FilterChoiceField(
324+
region = DynamicModelMultipleChoiceField(
315325
queryset=Region.objects.all(),
316326
to_field_name='slug',
317327
required=False,
@@ -323,9 +333,10 @@ class CircuitFilterForm(BootstrapMixin, TenancyFilterForm, CustomFieldFilterForm
323333
}
324334
)
325335
)
326-
site = FilterChoiceField(
336+
site = DynamicModelMultipleChoiceField(
327337
queryset=Site.objects.all(),
328338
to_field_name='slug',
339+
required=False,
329340
widget=APISelectMultiple(
330341
api_url="/api/dcim/sites/",
331342
value_field="slug",

0 commit comments

Comments
 (0)