Skip to content

Commit b7c9ca7

Browse files
committed
Closes #7886: Introduce a base FilterForm class
1 parent 7072f20 commit b7c9ca7

File tree

9 files changed

+33
-309
lines changed

9 files changed

+33
-309
lines changed

netbox/circuits/forms/filtersets.py

Lines changed: 0 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -23,11 +23,6 @@ class ProviderFilterForm(CustomFieldModelFilterForm):
2323
['region_id', 'site_group_id', 'site_id'],
2424
['asn'],
2525
]
26-
q = forms.CharField(
27-
required=False,
28-
widget=forms.TextInput(attrs={'placeholder': _('All Fields')}),
29-
label=_('Search')
30-
)
3126
region_id = DynamicModelMultipleChoiceField(
3227
queryset=Region.objects.all(),
3328
required=False,
@@ -63,11 +58,6 @@ class ProviderNetworkFilterForm(CustomFieldModelFilterForm):
6358
('q', 'tag'),
6459
('provider_id',),
6560
)
66-
q = forms.CharField(
67-
required=False,
68-
widget=forms.TextInput(attrs={'placeholder': _('All Fields')}),
69-
label=_('Search')
70-
)
7161
provider_id = DynamicModelMultipleChoiceField(
7262
queryset=Provider.objects.all(),
7363
required=False,
@@ -79,11 +69,6 @@ class ProviderNetworkFilterForm(CustomFieldModelFilterForm):
7969

8070
class CircuitTypeFilterForm(CustomFieldModelFilterForm):
8171
model = CircuitType
82-
q = forms.CharField(
83-
required=False,
84-
widget=forms.TextInput(attrs={'placeholder': _('All Fields')}),
85-
label=_('Search')
86-
)
8772
tag = TagFilterField(model)
8873

8974

@@ -96,11 +81,6 @@ class CircuitFilterForm(TenancyFilterForm, CustomFieldModelFilterForm):
9681
['region_id', 'site_group_id', 'site_id'],
9782
['tenant_group_id', 'tenant_id'],
9883
]
99-
q = forms.CharField(
100-
required=False,
101-
widget=forms.TextInput(attrs={'placeholder': _('All Fields')}),
102-
label=_('Search')
103-
)
10484
type_id = DynamicModelMultipleChoiceField(
10585
queryset=CircuitType.objects.all(),
10686
required=False,

netbox/dcim/forms/filtersets.py

Lines changed: 4 additions & 104 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
from ipam.models import ASN
1010
from tenancy.forms import TenancyFilterForm
1111
from utilities.forms import (
12-
APISelectMultiple, add_blank_choice, BootstrapMixin, ColorField, DynamicModelMultipleChoiceField, StaticSelect,
12+
APISelectMultiple, add_blank_choice, ColorField, DynamicModelMultipleChoiceField, FilterForm, StaticSelect,
1313
StaticSelectMultiple, TagFilterField, BOOLEAN_WITH_BLANK_CHOICES,
1414
)
1515
from wireless.choices import *
@@ -51,11 +51,6 @@ class DeviceComponentFilterForm(CustomFieldModelFilterForm):
5151
field_order = [
5252
'q', 'name', 'label', 'region_id', 'site_group_id', 'site_id',
5353
]
54-
q = forms.CharField(
55-
required=False,
56-
widget=forms.TextInput(attrs={'placeholder': _('All Fields')}),
57-
label=_('Search')
58-
)
5954
name = forms.CharField(
6055
required=False
6156
)
@@ -114,11 +109,6 @@ class DeviceComponentFilterForm(CustomFieldModelFilterForm):
114109

115110
class RegionFilterForm(CustomFieldModelFilterForm):
116111
model = Region
117-
q = forms.CharField(
118-
required=False,
119-
widget=forms.TextInput(attrs={'placeholder': _('All Fields')}),
120-
label=_('Search')
121-
)
122112
parent_id = DynamicModelMultipleChoiceField(
123113
queryset=Region.objects.all(),
124114
required=False,
@@ -130,11 +120,6 @@ class RegionFilterForm(CustomFieldModelFilterForm):
130120

131121
class SiteGroupFilterForm(CustomFieldModelFilterForm):
132122
model = SiteGroup
133-
q = forms.CharField(
134-
required=False,
135-
widget=forms.TextInput(attrs={'placeholder': _('All Fields')}),
136-
label=_('Search')
137-
)
138123
parent_id = DynamicModelMultipleChoiceField(
139124
queryset=SiteGroup.objects.all(),
140125
required=False,
@@ -153,11 +138,6 @@ class SiteFilterForm(TenancyFilterForm, CustomFieldModelFilterForm):
153138
['tenant_group_id', 'tenant_id'],
154139
['asn_id']
155140
]
156-
q = forms.CharField(
157-
required=False,
158-
widget=forms.TextInput(attrs={'placeholder': _('All Fields')}),
159-
label=_('Search')
160-
)
161141
status = forms.MultipleChoiceField(
162142
choices=SiteStatusChoices,
163143
required=False,
@@ -191,11 +171,6 @@ class LocationFilterForm(TenancyFilterForm, CustomFieldModelFilterForm):
191171
['region_id', 'site_group_id', 'site_id', 'parent_id'],
192172
['tenant_group_id', 'tenant_id'],
193173
]
194-
q = forms.CharField(
195-
required=False,
196-
widget=forms.TextInput(attrs={'placeholder': _('All Fields')}),
197-
label=_('Search')
198-
)
199174
region_id = DynamicModelMultipleChoiceField(
200175
queryset=Region.objects.all(),
201176
required=False,
@@ -233,11 +208,6 @@ class LocationFilterForm(TenancyFilterForm, CustomFieldModelFilterForm):
233208

234209
class RackRoleFilterForm(CustomFieldModelFilterForm):
235210
model = RackRole
236-
q = forms.CharField(
237-
required=False,
238-
widget=forms.TextInput(attrs={'placeholder': _('All Fields')}),
239-
label=_('Search')
240-
)
241211
tag = TagFilterField(model)
242212

243213

@@ -251,11 +221,6 @@ class RackFilterForm(TenancyFilterForm, CustomFieldModelFilterForm):
251221
['type', 'width', 'serial', 'asset_tag'],
252222
['tenant_group_id', 'tenant_id'],
253223
]
254-
q = forms.CharField(
255-
required=False,
256-
widget=forms.TextInput(attrs={'placeholder': _('All Fields')}),
257-
label=_('Search')
258-
)
259224
region_id = DynamicModelMultipleChoiceField(
260225
queryset=Region.objects.all(),
261226
required=False,
@@ -338,11 +303,6 @@ class RackReservationFilterForm(TenancyFilterForm, CustomFieldModelFilterForm):
338303
['region_id', 'site_id', 'location_id'],
339304
['tenant_group_id', 'tenant_id'],
340305
]
341-
q = forms.CharField(
342-
required=False,
343-
widget=forms.TextInput(attrs={'placeholder': _('All Fields')}),
344-
label=_('Search')
345-
)
346306
region_id = DynamicModelMultipleChoiceField(
347307
queryset=Region.objects.all(),
348308
required=False,
@@ -379,11 +339,6 @@ class RackReservationFilterForm(TenancyFilterForm, CustomFieldModelFilterForm):
379339

380340
class ManufacturerFilterForm(CustomFieldModelFilterForm):
381341
model = Manufacturer
382-
q = forms.CharField(
383-
required=False,
384-
widget=forms.TextInput(attrs={'placeholder': _('All Fields')}),
385-
label=_('Search')
386-
)
387342
tag = TagFilterField(model)
388343

389344

@@ -394,11 +349,6 @@ class DeviceTypeFilterForm(CustomFieldModelFilterForm):
394349
['manufacturer_id', 'subdevice_role', 'airflow'],
395350
['console_ports', 'console_server_ports', 'power_ports', 'power_outlets', 'interfaces', 'pass_through_ports'],
396351
]
397-
q = forms.CharField(
398-
required=False,
399-
widget=forms.TextInput(attrs={'placeholder': _('All Fields')}),
400-
label=_('Search')
401-
)
402352
manufacturer_id = DynamicModelMultipleChoiceField(
403353
queryset=Manufacturer.objects.all(),
404354
required=False,
@@ -462,21 +412,11 @@ class DeviceTypeFilterForm(CustomFieldModelFilterForm):
462412

463413
class DeviceRoleFilterForm(CustomFieldModelFilterForm):
464414
model = DeviceRole
465-
q = forms.CharField(
466-
required=False,
467-
widget=forms.TextInput(attrs={'placeholder': _('All Fields')}),
468-
label=_('Search')
469-
)
470415
tag = TagFilterField(model)
471416

472417

473418
class PlatformFilterForm(CustomFieldModelFilterForm):
474419
model = Platform
475-
q = forms.CharField(
476-
required=False,
477-
widget=forms.TextInput(attrs={'placeholder': _('All Fields')}),
478-
label=_('Search')
479-
)
480420
manufacturer_id = DynamicModelMultipleChoiceField(
481421
queryset=Manufacturer.objects.all(),
482422
required=False,
@@ -503,11 +443,6 @@ class DeviceFilterForm(LocalConfigContextFilterForm, TenancyFilterForm, CustomFi
503443
'power_outlets', 'interfaces', 'pass_through_ports', 'local_context_data',
504444
],
505445
]
506-
q = forms.CharField(
507-
required=False,
508-
widget=forms.TextInput(attrs={'placeholder': _('All Fields')}),
509-
label=_('Search')
510-
)
511446
region_id = DynamicModelMultipleChoiceField(
512447
queryset=Region.objects.all(),
513448
required=False,
@@ -666,11 +601,6 @@ class VirtualChassisFilterForm(TenancyFilterForm, CustomFieldModelFilterForm):
666601
['region_id', 'site_group_id', 'site_id'],
667602
['tenant_group_id', 'tenant_id'],
668603
]
669-
q = forms.CharField(
670-
required=False,
671-
widget=forms.TextInput(attrs={'placeholder': _('All Fields')}),
672-
label=_('Search')
673-
)
674604
region_id = DynamicModelMultipleChoiceField(
675605
queryset=Region.objects.all(),
676606
required=False,
@@ -704,11 +634,6 @@ class CableFilterForm(TenancyFilterForm, CustomFieldModelFilterForm):
704634
['type', 'status', 'color'],
705635
['tenant_group_id', 'tenant_id'],
706636
]
707-
q = forms.CharField(
708-
required=False,
709-
widget=forms.TextInput(attrs={'placeholder': _('All Fields')}),
710-
label=_('Search')
711-
)
712637
region_id = DynamicModelMultipleChoiceField(
713638
queryset=Region.objects.all(),
714639
required=False,
@@ -767,11 +692,6 @@ class PowerPanelFilterForm(CustomFieldModelFilterForm):
767692
('q', 'tag'),
768693
('region_id', 'site_group_id', 'site_id', 'location_id')
769694
)
770-
q = forms.CharField(
771-
required=False,
772-
widget=forms.TextInput(attrs={'placeholder': _('All Fields')}),
773-
label=_('Search')
774-
)
775695
region_id = DynamicModelMultipleChoiceField(
776696
queryset=Region.objects.all(),
777697
required=False,
@@ -815,11 +735,6 @@ class PowerFeedFilterForm(CustomFieldModelFilterForm):
815735
['power_panel_id', 'rack_id'],
816736
['status', 'type', 'supply', 'phase', 'voltage', 'amperage', 'max_utilization'],
817737
]
818-
q = forms.CharField(
819-
required=False,
820-
widget=forms.TextInput(attrs={'placeholder': _('All Fields')}),
821-
label=_('Search')
822-
)
823738
region_id = DynamicModelMultipleChoiceField(
824739
queryset=Region.objects.all(),
825740
required=False,
@@ -1112,12 +1027,7 @@ class InventoryItemFilterForm(DeviceComponentFilterForm):
11121027
# Connections
11131028
#
11141029

1115-
class ConsoleConnectionFilterForm(BootstrapMixin, forms.Form):
1116-
q = forms.CharField(
1117-
required=False,
1118-
widget=forms.TextInput(attrs={'placeholder': _('All Fields')}),
1119-
label=_('Search')
1120-
)
1030+
class ConsoleConnectionFilterForm(FilterForm):
11211031
region_id = DynamicModelMultipleChoiceField(
11221032
queryset=Region.objects.all(),
11231033
required=False,
@@ -1144,12 +1054,7 @@ class ConsoleConnectionFilterForm(BootstrapMixin, forms.Form):
11441054
)
11451055

11461056

1147-
class PowerConnectionFilterForm(BootstrapMixin, forms.Form):
1148-
q = forms.CharField(
1149-
required=False,
1150-
widget=forms.TextInput(attrs={'placeholder': _('All Fields')}),
1151-
label=_('Search')
1152-
)
1057+
class PowerConnectionFilterForm(FilterForm):
11531058
region_id = DynamicModelMultipleChoiceField(
11541059
queryset=Region.objects.all(),
11551060
required=False,
@@ -1176,12 +1081,7 @@ class PowerConnectionFilterForm(BootstrapMixin, forms.Form):
11761081
)
11771082

11781083

1179-
class InterfaceConnectionFilterForm(BootstrapMixin, forms.Form):
1180-
q = forms.CharField(
1181-
required=False,
1182-
widget=forms.TextInput(attrs={'placeholder': _('All Fields')}),
1183-
label=_('Search')
1184-
)
1084+
class InterfaceConnectionFilterForm(FilterForm):
11851085
region_id = DynamicModelMultipleChoiceField(
11861086
queryset=Region.objects.all(),
11871087
required=False,

netbox/extras/forms/customfields.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
from extras.choices import *
66
from extras.models import *
7-
from utilities.forms import BootstrapMixin, BulkEditForm, CSVModelForm
7+
from utilities.forms import BootstrapMixin, BulkEditForm, CSVModelForm, FilterForm
88

99
__all__ = (
1010
'CustomFieldModelCSVForm',
@@ -105,7 +105,7 @@ def __init__(self, *args, **kwargs):
105105
self.custom_fields.append(cf.name)
106106

107107

108-
class CustomFieldModelFilterForm(BootstrapMixin, forms.Form):
108+
class CustomFieldModelFilterForm(FilterForm):
109109

110110
def __init__(self, *args, **kwargs):
111111

0 commit comments

Comments
 (0)