Skip to content

Commit f49d700

Browse files
committed
Add q filters for connection lists
1 parent 1fed564 commit f49d700

File tree

2 files changed

+28
-0
lines changed

2 files changed

+28
-0
lines changed

netbox/dcim/filtersets.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1394,6 +1394,10 @@ def search(self, queryset, name, value):
13941394
#
13951395

13961396
class ConnectionFilterSet(BaseFilterSet):
1397+
q = django_filters.CharFilter(
1398+
method='search',
1399+
label='Search',
1400+
)
13971401
site_id = MultiValueNumberFilter(
13981402
method='filter_connections',
13991403
field_name='device__site_id'
@@ -1416,6 +1420,15 @@ def filter_connections(self, queryset, name, value):
14161420
return queryset
14171421
return queryset.filter(**{f'{name}__in': value})
14181422

1423+
def search(self, queryset, name, value):
1424+
if not value.strip():
1425+
return queryset
1426+
qs_filter = (
1427+
Q(device__name__icontains=value) |
1428+
Q(cable__label__icontains=value)
1429+
)
1430+
return queryset.filter(qs_filter)
1431+
14191432

14201433
class ConsoleConnectionFilterSet(ConnectionFilterSet):
14211434

netbox/dcim/forms/filtersets.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1068,6 +1068,11 @@ class InventoryItemFilterForm(DeviceComponentFilterForm):
10681068
#
10691069

10701070
class ConsoleConnectionFilterForm(BootstrapMixin, forms.Form):
1071+
q = forms.CharField(
1072+
required=False,
1073+
widget=forms.TextInput(attrs={'placeholder': _('All Fields')}),
1074+
label=_('Search')
1075+
)
10711076
region_id = DynamicModelMultipleChoiceField(
10721077
queryset=Region.objects.all(),
10731078
required=False,
@@ -1095,6 +1100,11 @@ class ConsoleConnectionFilterForm(BootstrapMixin, forms.Form):
10951100

10961101

10971102
class PowerConnectionFilterForm(BootstrapMixin, forms.Form):
1103+
q = forms.CharField(
1104+
required=False,
1105+
widget=forms.TextInput(attrs={'placeholder': _('All Fields')}),
1106+
label=_('Search')
1107+
)
10981108
region_id = DynamicModelMultipleChoiceField(
10991109
queryset=Region.objects.all(),
11001110
required=False,
@@ -1122,6 +1132,11 @@ class PowerConnectionFilterForm(BootstrapMixin, forms.Form):
11221132

11231133

11241134
class InterfaceConnectionFilterForm(BootstrapMixin, forms.Form):
1135+
q = forms.CharField(
1136+
required=False,
1137+
widget=forms.TextInput(attrs={'placeholder': _('All Fields')}),
1138+
label=_('Search')
1139+
)
11251140
region_id = DynamicModelMultipleChoiceField(
11261141
queryset=Region.objects.all(),
11271142
required=False,

0 commit comments

Comments
 (0)