1
0
mirror of https://github.com/netbox-community/netbox.git synced 2024-05-10 07:54:54 +00:00

Move TagFilter to PrimaryFilterSet

This commit is contained in:
jeremystretch
2022-01-25 16:11:49 -05:00
parent 497afcc1e4
commit acc9ca7d7d
7 changed files with 5 additions and 57 deletions

View File

@ -3,7 +3,6 @@ from django.db.models import Q
from dcim.filtersets import CableTerminationFilterSet from dcim.filtersets import CableTerminationFilterSet
from dcim.models import Region, Site, SiteGroup from dcim.models import Region, Site, SiteGroup
from extras.filters import TagFilter
from netbox.filtersets import ChangeLoggedModelFilterSet, OrganizationalModelFilterSet, PrimaryModelFilterSet from netbox.filtersets import ChangeLoggedModelFilterSet, OrganizationalModelFilterSet, PrimaryModelFilterSet
from tenancy.filtersets import TenancyFilterSet from tenancy.filtersets import TenancyFilterSet
from utilities.filters import TreeNodeMultipleChoiceFilter from utilities.filters import TreeNodeMultipleChoiceFilter
@ -61,7 +60,6 @@ class ProviderFilterSet(PrimaryModelFilterSet):
to_field_name='slug', to_field_name='slug',
label='Site (slug)', label='Site (slug)',
) )
tag = TagFilter()
class Meta: class Meta:
model = Provider model = Provider
@ -94,7 +92,6 @@ class ProviderNetworkFilterSet(PrimaryModelFilterSet):
to_field_name='slug', to_field_name='slug',
label='Provider (slug)', label='Provider (slug)',
) )
tag = TagFilter()
class Meta: class Meta:
model = ProviderNetwork model = ProviderNetwork
@ -112,7 +109,6 @@ class ProviderNetworkFilterSet(PrimaryModelFilterSet):
class CircuitTypeFilterSet(OrganizationalModelFilterSet): class CircuitTypeFilterSet(OrganizationalModelFilterSet):
tag = TagFilter()
class Meta: class Meta:
model = CircuitType model = CircuitType
@ -190,7 +186,6 @@ class CircuitFilterSet(PrimaryModelFilterSet, TenancyFilterSet):
to_field_name='slug', to_field_name='slug',
label='Site (slug)', label='Site (slug)',
) )
tag = TagFilter()
class Meta: class Meta:
model = Circuit model = Circuit

View File

@ -1,7 +1,6 @@
import django_filters import django_filters
from django.contrib.auth.models import User from django.contrib.auth.models import User
from extras.filters import TagFilter
from extras.filtersets import LocalConfigContextFilterSet from extras.filtersets import LocalConfigContextFilterSet
from ipam.models import ASN, VRF from ipam.models import ASN, VRF
from netbox.filtersets import ( from netbox.filtersets import (
@ -79,7 +78,6 @@ class RegionFilterSet(OrganizationalModelFilterSet):
to_field_name='slug', to_field_name='slug',
label='Parent region (slug)', label='Parent region (slug)',
) )
tag = TagFilter()
class Meta: class Meta:
model = Region model = Region
@ -97,7 +95,6 @@ class SiteGroupFilterSet(OrganizationalModelFilterSet):
to_field_name='slug', to_field_name='slug',
label='Parent site group (slug)', label='Parent site group (slug)',
) )
tag = TagFilter()
class Meta: class Meta:
model = SiteGroup model = SiteGroup
@ -148,7 +145,6 @@ class SiteFilterSet(PrimaryModelFilterSet, TenancyFilterSet):
queryset=ASN.objects.all(), queryset=ASN.objects.all(),
label='AS (ID)', label='AS (ID)',
) )
tag = TagFilter()
class Meta: class Meta:
model = Site model = Site
@ -225,7 +221,6 @@ class LocationFilterSet(TenancyFilterSet, OrganizationalModelFilterSet):
to_field_name='slug', to_field_name='slug',
label='Location (slug)', label='Location (slug)',
) )
tag = TagFilter()
class Meta: class Meta:
model = Location model = Location
@ -241,7 +236,6 @@ class LocationFilterSet(TenancyFilterSet, OrganizationalModelFilterSet):
class RackRoleFilterSet(OrganizationalModelFilterSet): class RackRoleFilterSet(OrganizationalModelFilterSet):
tag = TagFilter()
class Meta: class Meta:
model = RackRole model = RackRole
@ -325,7 +319,6 @@ class RackFilterSet(PrimaryModelFilterSet, TenancyFilterSet):
serial = django_filters.CharFilter( serial = django_filters.CharFilter(
lookup_expr='iexact' lookup_expr='iexact'
) )
tag = TagFilter()
class Meta: class Meta:
model = Rack model = Rack
@ -389,7 +382,6 @@ class RackReservationFilterSet(PrimaryModelFilterSet, TenancyFilterSet):
to_field_name='username', to_field_name='username',
label='User (name)', label='User (name)',
) )
tag = TagFilter()
class Meta: class Meta:
model = RackReservation model = RackReservation
@ -407,7 +399,6 @@ class RackReservationFilterSet(PrimaryModelFilterSet, TenancyFilterSet):
class ManufacturerFilterSet(OrganizationalModelFilterSet): class ManufacturerFilterSet(OrganizationalModelFilterSet):
tag = TagFilter()
class Meta: class Meta:
model = Manufacturer model = Manufacturer
@ -461,7 +452,6 @@ class DeviceTypeFilterSet(PrimaryModelFilterSet):
method='_device_bays', method='_device_bays',
label='Has device bays', label='Has device bays',
) )
tag = TagFilter()
class Meta: class Meta:
model = DeviceType model = DeviceType
@ -546,7 +536,6 @@ class ModuleTypeFilterSet(PrimaryModelFilterSet):
method='_pass_through_ports', method='_pass_through_ports',
label='Has pass-through ports', label='Has pass-through ports',
) )
tag = TagFilter()
class Meta: class Meta:
model = ModuleType model = ModuleType
@ -732,7 +721,6 @@ class InventoryItemTemplateFilterSet(ChangeLoggedModelFilterSet, DeviceTypeCompo
class DeviceRoleFilterSet(OrganizationalModelFilterSet): class DeviceRoleFilterSet(OrganizationalModelFilterSet):
tag = TagFilter()
class Meta: class Meta:
model = DeviceRole model = DeviceRole
@ -751,7 +739,6 @@ class PlatformFilterSet(OrganizationalModelFilterSet):
to_field_name='slug', to_field_name='slug',
label='Manufacturer (slug)', label='Manufacturer (slug)',
) )
tag = TagFilter()
class Meta: class Meta:
model = Platform model = Platform
@ -916,7 +903,6 @@ class DeviceFilterSet(PrimaryModelFilterSet, TenancyFilterSet, LocalConfigContex
method='_device_bays', method='_device_bays',
label='Has device bays', label='Has device bays',
) )
tag = TagFilter()
class Meta: class Meta:
model = Device model = Device
@ -990,7 +976,6 @@ class ModuleFilterSet(PrimaryModelFilterSet):
queryset=Device.objects.all(), queryset=Device.objects.all(),
label='Device (ID)', label='Device (ID)',
) )
tag = TagFilter()
class Meta: class Meta:
model = Module model = Module
@ -1080,7 +1065,6 @@ class DeviceComponentFilterSet(django_filters.FilterSet):
to_field_name='name', to_field_name='name',
label='Virtual Chassis', label='Virtual Chassis',
) )
tag = TagFilter()
def search(self, queryset, name, value): def search(self, queryset, name, value):
if not value.strip(): if not value.strip():
@ -1202,7 +1186,6 @@ class InterfaceFilterSet(PrimaryModelFilterSet, DeviceComponentFilterSet, CableT
) )
mac_address = MultiValueMACAddressFilter() mac_address = MultiValueMACAddressFilter()
wwn = MultiValueWWNFilter() wwn = MultiValueWWNFilter()
tag = TagFilter()
vlan_id = django_filters.CharFilter( vlan_id = django_filters.CharFilter(
method='filter_vlan_id', method='filter_vlan_id',
label='Assigned VLAN' label='Assigned VLAN'
@ -1377,7 +1360,6 @@ class InventoryItemFilterSet(PrimaryModelFilterSet, DeviceComponentFilterSet):
class InventoryItemRoleFilterSet(OrganizationalModelFilterSet): class InventoryItemRoleFilterSet(OrganizationalModelFilterSet):
tag = TagFilter()
class Meta: class Meta:
model = InventoryItemRole model = InventoryItemRole
@ -1447,7 +1429,6 @@ class VirtualChassisFilterSet(PrimaryModelFilterSet):
to_field_name='slug', to_field_name='slug',
label='Tenant (slug)', label='Tenant (slug)',
) )
tag = TagFilter()
class Meta: class Meta:
model = VirtualChassis model = VirtualChassis
@ -1505,7 +1486,6 @@ class CableFilterSet(TenancyFilterSet, PrimaryModelFilterSet):
method='filter_device', method='filter_device',
field_name='device__site__slug' field_name='device__site__slug'
) )
tag = TagFilter()
class Meta: class Meta:
model = Cable model = Cable
@ -1571,7 +1551,6 @@ class PowerPanelFilterSet(PrimaryModelFilterSet):
lookup_expr='in', lookup_expr='in',
label='Location (ID)', label='Location (ID)',
) )
tag = TagFilter()
class Meta: class Meta:
model = PowerPanel model = PowerPanel
@ -1641,7 +1620,6 @@ class PowerFeedFilterSet(PrimaryModelFilterSet, CableTerminationFilterSet, PathE
choices=PowerFeedStatusChoices, choices=PowerFeedStatusChoices,
null_value=None null_value=None
) )
tag = TagFilter()
class Meta: class Meta:
model = PowerFeed model = PowerFeed

View File

@ -6,7 +6,6 @@ from django.db.models import Q
from netaddr.core import AddrFormatError from netaddr.core import AddrFormatError
from dcim.models import Device, Interface, Region, Site, SiteGroup from dcim.models import Device, Interface, Region, Site, SiteGroup
from extras.filters import TagFilter
from netbox.filtersets import ChangeLoggedModelFilterSet, OrganizationalModelFilterSet, PrimaryModelFilterSet from netbox.filtersets import ChangeLoggedModelFilterSet, OrganizationalModelFilterSet, PrimaryModelFilterSet
from tenancy.filtersets import TenancyFilterSet from tenancy.filtersets import TenancyFilterSet
from utilities.filters import ( from utilities.filters import (
@ -63,7 +62,6 @@ class VRFFilterSet(PrimaryModelFilterSet, TenancyFilterSet):
to_field_name='name', to_field_name='name',
label='Export target (name)', label='Export target (name)',
) )
tag = TagFilter()
def search(self, queryset, name, value): def search(self, queryset, name, value):
if not value.strip(): if not value.strip():
@ -106,7 +104,6 @@ class RouteTargetFilterSet(PrimaryModelFilterSet, TenancyFilterSet):
to_field_name='rd', to_field_name='rd',
label='Export VRF (RD)', label='Export VRF (RD)',
) )
tag = TagFilter()
def search(self, queryset, name, value): def search(self, queryset, name, value):
if not value.strip(): if not value.strip():
@ -122,7 +119,6 @@ class RouteTargetFilterSet(PrimaryModelFilterSet, TenancyFilterSet):
class RIRFilterSet(OrganizationalModelFilterSet): class RIRFilterSet(OrganizationalModelFilterSet):
tag = TagFilter()
class Meta: class Meta:
model = RIR model = RIR
@ -152,7 +148,6 @@ class AggregateFilterSet(PrimaryModelFilterSet, TenancyFilterSet):
to_field_name='slug', to_field_name='slug',
label='RIR (slug)', label='RIR (slug)',
) )
tag = TagFilter()
class Meta: class Meta:
model = Aggregate model = Aggregate
@ -218,7 +213,6 @@ class RoleFilterSet(OrganizationalModelFilterSet):
method='search', method='search',
label='Search', label='Search',
) )
tag = TagFilter()
class Meta: class Meta:
model = Role model = Role
@ -347,7 +341,6 @@ class PrefixFilterSet(PrimaryModelFilterSet, TenancyFilterSet):
choices=PrefixStatusChoices, choices=PrefixStatusChoices,
null_value=None null_value=None
) )
tag = TagFilter()
class Meta: class Meta:
model = Prefix model = Prefix
@ -453,7 +446,6 @@ class IPRangeFilterSet(TenancyFilterSet, PrimaryModelFilterSet):
choices=IPRangeStatusChoices, choices=IPRangeStatusChoices,
null_value=None null_value=None
) )
tag = TagFilter()
class Meta: class Meta:
model = IPRange model = IPRange
@ -578,7 +570,6 @@ class IPAddressFilterSet(PrimaryModelFilterSet, TenancyFilterSet):
role = django_filters.MultipleChoiceFilter( role = django_filters.MultipleChoiceFilter(
choices=IPAddressRoleChoices choices=IPAddressRoleChoices
) )
tag = TagFilter()
class Meta: class Meta:
model = IPAddress model = IPAddress
@ -664,7 +655,6 @@ class FHRPGroupFilterSet(PrimaryModelFilterSet):
queryset=IPAddress.objects.all(), queryset=IPAddress.objects.all(),
method='filter_related_ip' method='filter_related_ip'
) )
tag = TagFilter()
class Meta: class Meta:
model = FHRPGroup model = FHRPGroup
@ -737,7 +727,6 @@ class VLANGroupFilterSet(OrganizationalModelFilterSet):
cluster = django_filters.NumberFilter( cluster = django_filters.NumberFilter(
method='filter_scope' method='filter_scope'
) )
tag = TagFilter()
class Meta: class Meta:
model = VLANGroup model = VLANGroup
@ -832,7 +821,6 @@ class VLANFilterSet(PrimaryModelFilterSet, TenancyFilterSet):
queryset=VirtualMachine.objects.all(), queryset=VirtualMachine.objects.all(),
method='get_for_virtualmachine' method='get_for_virtualmachine'
) )
tag = TagFilter()
class Meta: class Meta:
model = VLAN model = VLAN
@ -864,7 +852,6 @@ class ServiceTemplateFilterSet(PrimaryModelFilterSet):
field_name='ports', field_name='ports',
lookup_expr='contains' lookup_expr='contains'
) )
tag = TagFilter()
class Meta: class Meta:
model = ServiceTemplate model = ServiceTemplate
@ -906,7 +893,6 @@ class ServiceFilterSet(PrimaryModelFilterSet):
field_name='ports', field_name='ports',
lookup_expr='contains' lookup_expr='contains'
) )
tag = TagFilter()
class Meta: class Meta:
model = Service model = Service

View File

@ -120,6 +120,10 @@ class BaseFilterSet(django_filters.FilterSet):
def get_additional_lookups(cls, existing_filter_name, existing_filter): def get_additional_lookups(cls, existing_filter_name, existing_filter):
new_filters = {} new_filters = {}
# Skip on abstract models
if not cls._meta.model:
return {}
# Skip nonstandard lookup expressions # Skip nonstandard lookup expressions
if existing_filter.method is not None or existing_filter.lookup_expr not in ['exact', 'in']: if existing_filter.method is not None or existing_filter.lookup_expr not in ['exact', 'in']:
return {} return {}
@ -214,6 +218,7 @@ class ChangeLoggedModelFilterSet(BaseFilterSet):
class PrimaryModelFilterSet(ChangeLoggedModelFilterSet): class PrimaryModelFilterSet(ChangeLoggedModelFilterSet):
tag = TagFilter()
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs) super().__init__(*args, **kwargs)

View File

@ -1,7 +1,6 @@
import django_filters import django_filters
from django.db.models import Q from django.db.models import Q
from extras.filters import TagFilter
from netbox.filtersets import ChangeLoggedModelFilterSet, OrganizationalModelFilterSet, PrimaryModelFilterSet from netbox.filtersets import ChangeLoggedModelFilterSet, OrganizationalModelFilterSet, PrimaryModelFilterSet
from utilities.filters import ContentTypeFilter, TreeNodeMultipleChoiceFilter from utilities.filters import ContentTypeFilter, TreeNodeMultipleChoiceFilter
from .models import * from .models import *
@ -33,7 +32,6 @@ class TenantGroupFilterSet(OrganizationalModelFilterSet):
to_field_name='slug', to_field_name='slug',
label='Tenant group (slug)', label='Tenant group (slug)',
) )
tag = TagFilter()
class Meta: class Meta:
model = TenantGroup model = TenantGroup
@ -58,7 +56,6 @@ class TenantFilterSet(PrimaryModelFilterSet):
to_field_name='slug', to_field_name='slug',
label='Tenant group (slug)', label='Tenant group (slug)',
) )
tag = TagFilter()
class Meta: class Meta:
model = Tenant model = Tenant
@ -119,7 +116,6 @@ class ContactGroupFilterSet(OrganizationalModelFilterSet):
to_field_name='slug', to_field_name='slug',
label='Contact group (slug)', label='Contact group (slug)',
) )
tag = TagFilter()
class Meta: class Meta:
model = ContactGroup model = ContactGroup
@ -127,7 +123,6 @@ class ContactGroupFilterSet(OrganizationalModelFilterSet):
class ContactRoleFilterSet(OrganizationalModelFilterSet): class ContactRoleFilterSet(OrganizationalModelFilterSet):
tag = TagFilter()
class Meta: class Meta:
model = ContactRole model = ContactRole
@ -152,7 +147,6 @@ class ContactFilterSet(PrimaryModelFilterSet):
to_field_name='slug', to_field_name='slug',
label='Contact group (slug)', label='Contact group (slug)',
) )
tag = TagFilter()
class Meta: class Meta:
model = Contact model = Contact

View File

@ -2,7 +2,6 @@ import django_filters
from django.db.models import Q from django.db.models import Q
from dcim.models import DeviceRole, Platform, Region, Site, SiteGroup from dcim.models import DeviceRole, Platform, Region, Site, SiteGroup
from extras.filters import TagFilter
from extras.filtersets import LocalConfigContextFilterSet from extras.filtersets import LocalConfigContextFilterSet
from netbox.filtersets import OrganizationalModelFilterSet, PrimaryModelFilterSet from netbox.filtersets import OrganizationalModelFilterSet, PrimaryModelFilterSet
from tenancy.filtersets import TenancyFilterSet from tenancy.filtersets import TenancyFilterSet
@ -20,7 +19,6 @@ __all__ = (
class ClusterTypeFilterSet(OrganizationalModelFilterSet): class ClusterTypeFilterSet(OrganizationalModelFilterSet):
tag = TagFilter()
class Meta: class Meta:
model = ClusterType model = ClusterType
@ -28,7 +26,6 @@ class ClusterTypeFilterSet(OrganizationalModelFilterSet):
class ClusterGroupFilterSet(OrganizationalModelFilterSet): class ClusterGroupFilterSet(OrganizationalModelFilterSet):
tag = TagFilter()
class Meta: class Meta:
model = ClusterGroup model = ClusterGroup
@ -96,7 +93,6 @@ class ClusterFilterSet(PrimaryModelFilterSet, TenancyFilterSet):
to_field_name='slug', to_field_name='slug',
label='Cluster type (slug)', label='Cluster type (slug)',
) )
tag = TagFilter()
class Meta: class Meta:
model = Cluster model = Cluster
@ -217,7 +213,6 @@ class VirtualMachineFilterSet(PrimaryModelFilterSet, TenancyFilterSet, LocalConf
method='_has_primary_ip', method='_has_primary_ip',
label='Has a primary IP', label='Has a primary IP',
) )
tag = TagFilter()
class Meta: class Meta:
model = VirtualMachine model = VirtualMachine
@ -278,7 +273,6 @@ class VMInterfaceFilterSet(PrimaryModelFilterSet):
mac_address = MultiValueMACAddressFilter( mac_address = MultiValueMACAddressFilter(
label='MAC address', label='MAC address',
) )
tag = TagFilter()
class Meta: class Meta:
model = VMInterface model = VMInterface

View File

@ -2,7 +2,6 @@ import django_filters
from django.db.models import Q from django.db.models import Q
from dcim.choices import LinkStatusChoices from dcim.choices import LinkStatusChoices
from extras.filters import TagFilter
from ipam.models import VLAN from ipam.models import VLAN
from netbox.filtersets import OrganizationalModelFilterSet, PrimaryModelFilterSet from netbox.filtersets import OrganizationalModelFilterSet, PrimaryModelFilterSet
from utilities.filters import MultiValueNumberFilter, TreeNodeMultipleChoiceFilter from utilities.filters import MultiValueNumberFilter, TreeNodeMultipleChoiceFilter
@ -25,7 +24,6 @@ class WirelessLANGroupFilterSet(OrganizationalModelFilterSet):
queryset=WirelessLANGroup.objects.all(), queryset=WirelessLANGroup.objects.all(),
to_field_name='slug' to_field_name='slug'
) )
tag = TagFilter()
class Meta: class Meta:
model = WirelessLANGroup model = WirelessLANGroup
@ -57,7 +55,6 @@ class WirelessLANFilterSet(PrimaryModelFilterSet):
auth_cipher = django_filters.MultipleChoiceFilter( auth_cipher = django_filters.MultipleChoiceFilter(
choices=WirelessAuthCipherChoices choices=WirelessAuthCipherChoices
) )
tag = TagFilter()
class Meta: class Meta:
model = WirelessLAN model = WirelessLAN
@ -89,7 +86,6 @@ class WirelessLinkFilterSet(PrimaryModelFilterSet):
auth_cipher = django_filters.MultipleChoiceFilter( auth_cipher = django_filters.MultipleChoiceFilter(
choices=WirelessAuthCipherChoices choices=WirelessAuthCipherChoices
) )
tag = TagFilter()
class Meta: class Meta:
model = WirelessLink model = WirelessLink