Move q filter to NetBoxModelFilterSet

This commit is contained in:
jeremystretch 2022-03-11 16:16:58 -05:00
parent 59aba52b03
commit 245cff887c
7 changed files with 10 additions and 145 deletions

View File

@ -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)',

View File

@ -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',

View File

@ -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)',

View File

@ -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

View File

@ -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',

View File

@ -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(),

View File

@ -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(