Browse Source

Add q filters for connection lists

jeremystretch 4 years ago
parent
commit
f49d7008a0
2 changed files with 28 additions and 0 deletions
  1. 13 0
      netbox/dcim/filtersets.py
  2. 15 0
      netbox/dcim/forms/filtersets.py

+ 13 - 0
netbox/dcim/filtersets.py

@@ -1394,6 +1394,10 @@ class PowerFeedFilterSet(PrimaryModelFilterSet, CableTerminationFilterSet, PathE
 #
 #
 
 
 class ConnectionFilterSet(BaseFilterSet):
 class ConnectionFilterSet(BaseFilterSet):
+    q = django_filters.CharFilter(
+        method='search',
+        label='Search',
+    )
     site_id = MultiValueNumberFilter(
     site_id = MultiValueNumberFilter(
         method='filter_connections',
         method='filter_connections',
         field_name='device__site_id'
         field_name='device__site_id'
@@ -1416,6 +1420,15 @@ class ConnectionFilterSet(BaseFilterSet):
             return queryset
             return queryset
         return queryset.filter(**{f'{name}__in': value})
         return queryset.filter(**{f'{name}__in': value})
 
 
+    def search(self, queryset, name, value):
+        if not value.strip():
+            return queryset
+        qs_filter = (
+            Q(device__name__icontains=value) |
+            Q(cable__label__icontains=value)
+        )
+        return queryset.filter(qs_filter)
+
 
 
 class ConsoleConnectionFilterSet(ConnectionFilterSet):
 class ConsoleConnectionFilterSet(ConnectionFilterSet):
 
 

+ 15 - 0
netbox/dcim/forms/filtersets.py

@@ -1068,6 +1068,11 @@ class InventoryItemFilterForm(DeviceComponentFilterForm):
 #
 #
 
 
 class ConsoleConnectionFilterForm(BootstrapMixin, forms.Form):
 class ConsoleConnectionFilterForm(BootstrapMixin, forms.Form):
+    q = forms.CharField(
+        required=False,
+        widget=forms.TextInput(attrs={'placeholder': _('All Fields')}),
+        label=_('Search')
+    )
     region_id = DynamicModelMultipleChoiceField(
     region_id = DynamicModelMultipleChoiceField(
         queryset=Region.objects.all(),
         queryset=Region.objects.all(),
         required=False,
         required=False,
@@ -1095,6 +1100,11 @@ class ConsoleConnectionFilterForm(BootstrapMixin, forms.Form):
 
 
 
 
 class PowerConnectionFilterForm(BootstrapMixin, forms.Form):
 class PowerConnectionFilterForm(BootstrapMixin, forms.Form):
+    q = forms.CharField(
+        required=False,
+        widget=forms.TextInput(attrs={'placeholder': _('All Fields')}),
+        label=_('Search')
+    )
     region_id = DynamicModelMultipleChoiceField(
     region_id = DynamicModelMultipleChoiceField(
         queryset=Region.objects.all(),
         queryset=Region.objects.all(),
         required=False,
         required=False,
@@ -1122,6 +1132,11 @@ class PowerConnectionFilterForm(BootstrapMixin, forms.Form):
 
 
 
 
 class InterfaceConnectionFilterForm(BootstrapMixin, forms.Form):
 class InterfaceConnectionFilterForm(BootstrapMixin, forms.Form):
+    q = forms.CharField(
+        required=False,
+        widget=forms.TextInput(attrs={'placeholder': _('All Fields')}),
+        label=_('Search')
+    )
     region_id = DynamicModelMultipleChoiceField(
     region_id = DynamicModelMultipleChoiceField(
         queryset=Region.objects.all(),
         queryset=Region.objects.all(),
         required=False,
         required=False,