Просмотр исходного кода

Move q filter to NetBoxModelFilterSet

jeremystretch 3 лет назад
Родитель
Сommit
245cff887c

+ 0 - 12
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)',

+ 0 - 52
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',

+ 0 - 48
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)',

+ 10 - 5
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

+ 0 - 8
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',

+ 0 - 12
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(),

+ 0 - 8
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(