diff --git a/netbox/circuits/filtersets.py b/netbox/circuits/filtersets.py index ff10f4d63..65951d2e7 100644 --- a/netbox/circuits/filtersets.py +++ b/netbox/circuits/filtersets.py @@ -19,10 +19,6 @@ __all__ = ( class ProviderFilterSet(NetBoxModelFilterSet): - q = django_filters.CharFilter( - method='search', - label='Search', - ) region_id = TreeNodeMultipleChoiceFilter( queryset=Region.objects.all(), field_name='circuits__terminations__site__region', @@ -78,10 +74,6 @@ class ProviderFilterSet(NetBoxModelFilterSet): class ProviderNetworkFilterSet(NetBoxModelFilterSet): - q = django_filters.CharFilter( - method='search', - label='Search', - ) provider_id = django_filters.ModelMultipleChoiceFilter( queryset=Provider.objects.all(), label='Provider (ID)', @@ -116,10 +108,6 @@ class CircuitTypeFilterSet(OrganizationalModelFilterSet): class CircuitFilterSet(NetBoxModelFilterSet, TenancyFilterSet): - q = django_filters.CharFilter( - method='search', - label='Search', - ) provider_id = django_filters.ModelMultipleChoiceFilter( queryset=Provider.objects.all(), label='Provider (ID)', diff --git a/netbox/dcim/filtersets.py b/netbox/dcim/filtersets.py index 1a5ac1336..140955371 100644 --- a/netbox/dcim/filtersets.py +++ b/netbox/dcim/filtersets.py @@ -102,10 +102,6 @@ class SiteGroupFilterSet(OrganizationalModelFilterSet): class SiteFilterSet(NetBoxModelFilterSet, TenancyFilterSet): - q = django_filters.CharFilter( - method='search', - label='Search', - ) status = django_filters.MultipleChoiceFilter( choices=SiteStatusChoices, null_value=None @@ -243,10 +239,6 @@ class RackRoleFilterSet(OrganizationalModelFilterSet): class RackFilterSet(NetBoxModelFilterSet, TenancyFilterSet): - q = django_filters.CharFilter( - method='search', - label='Search', - ) region_id = TreeNodeMultipleChoiceFilter( queryset=Region.objects.all(), field_name='site__region', @@ -340,10 +332,6 @@ class RackFilterSet(NetBoxModelFilterSet, TenancyFilterSet): class RackReservationFilterSet(NetBoxModelFilterSet, TenancyFilterSet): - q = django_filters.CharFilter( - method='search', - label='Search', - ) rack_id = django_filters.ModelMultipleChoiceFilter( queryset=Rack.objects.all(), label='Rack (ID)', @@ -406,10 +394,6 @@ class ManufacturerFilterSet(OrganizationalModelFilterSet): class DeviceTypeFilterSet(NetBoxModelFilterSet): - q = django_filters.CharFilter( - method='search', - label='Search', - ) manufacturer_id = django_filters.ModelMultipleChoiceFilter( queryset=Manufacturer.objects.all(), label='Manufacturer (ID)', @@ -498,10 +482,6 @@ class DeviceTypeFilterSet(NetBoxModelFilterSet): class ModuleTypeFilterSet(NetBoxModelFilterSet): - q = django_filters.CharFilter( - method='search', - label='Search', - ) manufacturer_id = django_filters.ModelMultipleChoiceFilter( queryset=Manufacturer.objects.all(), label='Manufacturer (ID)', @@ -746,10 +726,6 @@ class PlatformFilterSet(OrganizationalModelFilterSet): class DeviceFilterSet(NetBoxModelFilterSet, TenancyFilterSet, LocalConfigContextFilterSet): - q = django_filters.CharFilter( - method='search', - label='Search', - ) manufacturer_id = django_filters.ModelMultipleChoiceFilter( field_name='device_type__manufacturer', queryset=Manufacturer.objects.all(), @@ -957,10 +933,6 @@ class DeviceFilterSet(NetBoxModelFilterSet, TenancyFilterSet, LocalConfigContext class ModuleFilterSet(NetBoxModelFilterSet): - q = django_filters.CharFilter( - method='search', - label='Search', - ) manufacturer_id = django_filters.ModelMultipleChoiceFilter( field_name='module_type__manufacturer', queryset=Manufacturer.objects.all(), @@ -1192,10 +1164,6 @@ class InterfaceFilterSet( CableTerminationFilterSet, PathEndpointFilterSet ): - q = django_filters.CharFilter( - method='search', - label='Search', - ) # Override device and device_id filters from DeviceComponentFilterSet to match against any peer virtual chassis # members device = MultiValueCharFilter( @@ -1363,10 +1331,6 @@ class DeviceBayFilterSet(NetBoxModelFilterSet, DeviceComponentFilterSet): class InventoryItemFilterSet(NetBoxModelFilterSet, DeviceComponentFilterSet): - q = django_filters.CharFilter( - method='search', - label='Search', - ) parent_id = django_filters.ModelMultipleChoiceFilter( queryset=InventoryItem.objects.all(), label='Parent inventory item (ID)', @@ -1422,10 +1386,6 @@ class InventoryItemRoleFilterSet(OrganizationalModelFilterSet): class VirtualChassisFilterSet(NetBoxModelFilterSet): - q = django_filters.CharFilter( - method='search', - label='Search', - ) master_id = django_filters.ModelMultipleChoiceFilter( queryset=Device.objects.all(), label='Master (ID)', @@ -1501,10 +1461,6 @@ class VirtualChassisFilterSet(NetBoxModelFilterSet): class CableFilterSet(TenancyFilterSet, NetBoxModelFilterSet): - q = django_filters.CharFilter( - method='search', - label='Search', - ) termination_a_type = ContentTypeFilter() termination_a_id = MultiValueNumberFilter() termination_b_type = ContentTypeFilter() @@ -1560,10 +1516,6 @@ class CableFilterSet(TenancyFilterSet, NetBoxModelFilterSet): class PowerPanelFilterSet(NetBoxModelFilterSet): - q = django_filters.CharFilter( - method='search', - label='Search', - ) region_id = TreeNodeMultipleChoiceFilter( queryset=Region.objects.all(), field_name='site__region', @@ -1621,10 +1573,6 @@ class PowerPanelFilterSet(NetBoxModelFilterSet): class PowerFeedFilterSet(NetBoxModelFilterSet, CableTerminationFilterSet, PathEndpointFilterSet): - q = django_filters.CharFilter( - method='search', - label='Search', - ) region_id = TreeNodeMultipleChoiceFilter( queryset=Region.objects.all(), field_name='power_panel__site__region', diff --git a/netbox/ipam/filtersets.py b/netbox/ipam/filtersets.py index 15cdceccb..ebe4aea2f 100644 --- a/netbox/ipam/filtersets.py +++ b/netbox/ipam/filtersets.py @@ -36,10 +36,6 @@ __all__ = ( class VRFFilterSet(NetBoxModelFilterSet, TenancyFilterSet): - q = django_filters.CharFilter( - method='search', - label='Search', - ) import_target_id = django_filters.ModelMultipleChoiceFilter( field_name='import_targets', queryset=RouteTarget.objects.all(), @@ -78,10 +74,6 @@ class VRFFilterSet(NetBoxModelFilterSet, TenancyFilterSet): class RouteTargetFilterSet(NetBoxModelFilterSet, TenancyFilterSet): - q = django_filters.CharFilter( - method='search', - label='Search', - ) importing_vrf_id = django_filters.ModelMultipleChoiceFilter( field_name='importing_vrfs', queryset=VRF.objects.all(), @@ -126,10 +118,6 @@ class RIRFilterSet(OrganizationalModelFilterSet): class AggregateFilterSet(NetBoxModelFilterSet, TenancyFilterSet): - q = django_filters.CharFilter( - method='search', - label='Search', - ) family = django_filters.NumberFilter( field_name='prefix', lookup_expr='family' @@ -213,10 +201,6 @@ class ASNFilterSet(OrganizationalModelFilterSet, TenancyFilterSet): class RoleFilterSet(OrganizationalModelFilterSet): - q = django_filters.CharFilter( - method='search', - label='Search', - ) class Meta: model = Role @@ -224,10 +208,6 @@ class RoleFilterSet(OrganizationalModelFilterSet): class PrefixFilterSet(NetBoxModelFilterSet, TenancyFilterSet): - q = django_filters.CharFilter( - method='search', - label='Search', - ) family = django_filters.NumberFilter( field_name='prefix', lookup_expr='family' @@ -414,10 +394,6 @@ class PrefixFilterSet(NetBoxModelFilterSet, TenancyFilterSet): class IPRangeFilterSet(TenancyFilterSet, NetBoxModelFilterSet): - q = django_filters.CharFilter( - method='search', - label='Search', - ) family = django_filters.NumberFilter( field_name='start_address', lookup_expr='family' @@ -480,10 +456,6 @@ class IPRangeFilterSet(TenancyFilterSet, NetBoxModelFilterSet): class IPAddressFilterSet(NetBoxModelFilterSet, TenancyFilterSet): - q = django_filters.CharFilter( - method='search', - label='Search', - ) family = django_filters.NumberFilter( field_name='address', lookup_expr='family' @@ -645,10 +617,6 @@ class IPAddressFilterSet(NetBoxModelFilterSet, TenancyFilterSet): class FHRPGroupFilterSet(NetBoxModelFilterSet): - q = django_filters.CharFilter( - method='search', - label='Search', - ) protocol = django_filters.MultipleChoiceFilter( choices=FHRPGroupProtocolChoices ) @@ -705,10 +673,6 @@ class FHRPGroupAssignmentFilterSet(ChangeLoggedModelFilterSet): class VLANGroupFilterSet(OrganizationalModelFilterSet): - q = django_filters.CharFilter( - method='search', - label='Search', - ) scope_type = ContentTypeFilter() region = django_filters.NumberFilter( method='filter_scope' @@ -753,10 +717,6 @@ class VLANGroupFilterSet(OrganizationalModelFilterSet): class VLANFilterSet(NetBoxModelFilterSet, TenancyFilterSet): - q = django_filters.CharFilter( - method='search', - label='Search', - ) region_id = TreeNodeMultipleChoiceFilter( queryset=Region.objects.all(), field_name='site__region', @@ -848,10 +808,6 @@ class VLANFilterSet(NetBoxModelFilterSet, TenancyFilterSet): class ServiceTemplateFilterSet(NetBoxModelFilterSet): - q = django_filters.CharFilter( - method='search', - label='Search', - ) port = NumericArrayFilter( field_name='ports', lookup_expr='contains' @@ -869,10 +825,6 @@ class ServiceTemplateFilterSet(NetBoxModelFilterSet): class ServiceFilterSet(NetBoxModelFilterSet): - q = django_filters.CharFilter( - method='search', - label='Search', - ) device_id = django_filters.ModelMultipleChoiceFilter( queryset=Device.objects.all(), label='Device (ID)', diff --git a/netbox/netbox/filtersets.py b/netbox/netbox/filtersets.py index 3cfd226b0..1a72d8159 100644 --- a/netbox/netbox/filtersets.py +++ b/netbox/netbox/filtersets.py @@ -221,6 +221,10 @@ class NetBoxModelFilterSet(ChangeLoggedModelFilterSet): """ Provides additional filtering functionality (e.g. tags, custom fields) for core NetBox models. """ + q = django_filters.CharFilter( + method='search', + label='Search', + ) tag = TagFilter() def __init__(self, *args, **kwargs): @@ -246,16 +250,17 @@ class NetBoxModelFilterSet(ChangeLoggedModelFilterSet): self.filters.update(custom_field_filters) + def search(self, queryset, name, value): + """ + Override this method to apply a general-purpose search logic. + """ + return queryset + class OrganizationalModelFilterSet(NetBoxModelFilterSet): """ A base class for adding the search method to models which only expose the `name` and `slug` fields """ - q = django_filters.CharFilter( - method='search', - label='Search', - ) - def search(self, queryset, name, value): if not value.strip(): return queryset diff --git a/netbox/tenancy/filtersets.py b/netbox/tenancy/filtersets.py index 5ab7b0e98..a29e08863 100644 --- a/netbox/tenancy/filtersets.py +++ b/netbox/tenancy/filtersets.py @@ -39,10 +39,6 @@ class TenantGroupFilterSet(OrganizationalModelFilterSet): class TenantFilterSet(NetBoxModelFilterSet): - q = django_filters.CharFilter( - method='search', - label='Search', - ) group_id = TreeNodeMultipleChoiceFilter( queryset=TenantGroup.objects.all(), field_name='group', @@ -130,10 +126,6 @@ class ContactRoleFilterSet(OrganizationalModelFilterSet): class ContactFilterSet(NetBoxModelFilterSet): - q = django_filters.CharFilter( - method='search', - label='Search', - ) group_id = TreeNodeMultipleChoiceFilter( queryset=ContactGroup.objects.all(), field_name='group', diff --git a/netbox/virtualization/filtersets.py b/netbox/virtualization/filtersets.py index a09ed8286..70effe863 100644 --- a/netbox/virtualization/filtersets.py +++ b/netbox/virtualization/filtersets.py @@ -34,10 +34,6 @@ class ClusterGroupFilterSet(OrganizationalModelFilterSet): class ClusterFilterSet(NetBoxModelFilterSet, TenancyFilterSet): - q = django_filters.CharFilter( - method='search', - label='Search', - ) region_id = TreeNodeMultipleChoiceFilter( queryset=Region.objects.all(), field_name='site__region', @@ -109,10 +105,6 @@ class ClusterFilterSet(NetBoxModelFilterSet, TenancyFilterSet): class VirtualMachineFilterSet(NetBoxModelFilterSet, TenancyFilterSet, LocalConfigContextFilterSet): - q = django_filters.CharFilter( - method='search', - label='Search', - ) status = django_filters.MultipleChoiceFilter( choices=VirtualMachineStatusChoices, null_value=None @@ -235,10 +227,6 @@ class VirtualMachineFilterSet(NetBoxModelFilterSet, TenancyFilterSet, LocalConfi class VMInterfaceFilterSet(NetBoxModelFilterSet): - q = django_filters.CharFilter( - method='search', - label='Search', - ) cluster_id = django_filters.ModelMultipleChoiceFilter( field_name='virtual_machine__cluster', queryset=Cluster.objects.all(), diff --git a/netbox/wireless/filtersets.py b/netbox/wireless/filtersets.py index 28c9e823b..7b0be857b 100644 --- a/netbox/wireless/filtersets.py +++ b/netbox/wireless/filtersets.py @@ -31,10 +31,6 @@ class WirelessLANGroupFilterSet(OrganizationalModelFilterSet): class WirelessLANFilterSet(NetBoxModelFilterSet): - q = django_filters.CharFilter( - method='search', - label='Search', - ) group_id = TreeNodeMultipleChoiceFilter( queryset=WirelessLANGroup.objects.all(), field_name='group', @@ -71,10 +67,6 @@ class WirelessLANFilterSet(NetBoxModelFilterSet): class WirelessLinkFilterSet(NetBoxModelFilterSet): - q = django_filters.CharFilter( - method='search', - label='Search', - ) interface_a_id = MultiValueNumberFilter() interface_b_id = MultiValueNumberFilter() status = django_filters.MultipleChoiceFilter(