Переглянути джерело

Remove NumericInFilter and id__in filters

Jeremy Stretch 6 роки тому
батько
коміт
3d616baf75

+ 3 - 11
netbox/circuits/filters.py

@@ -4,16 +4,12 @@ from django.db.models import Q
 from dcim.models import Site
 from dcim.models import Site
 from extras.filters import CustomFieldFilterSet
 from extras.filters import CustomFieldFilterSet
 from tenancy.models import Tenant
 from tenancy.models import Tenant
-from utilities.filters import NameSlugSearchFilterSet, NumericInFilter, TagFilter
+from utilities.filters import NameSlugSearchFilterSet, TagFilter
 from .constants import CIRCUIT_STATUS_CHOICES
 from .constants import CIRCUIT_STATUS_CHOICES
 from .models import Provider, Circuit, CircuitTermination, CircuitType
 from .models import Provider, Circuit, CircuitTermination, CircuitType
 
 
 
 
 class ProviderFilter(CustomFieldFilterSet):
 class ProviderFilter(CustomFieldFilterSet):
-    id__in = NumericInFilter(
-        field_name='id',
-        lookup_expr='in'
-    )
     q = django_filters.CharFilter(
     q = django_filters.CharFilter(
         method='search',
         method='search',
         label='Search',
         label='Search',
@@ -33,7 +29,7 @@ class ProviderFilter(CustomFieldFilterSet):
 
 
     class Meta:
     class Meta:
         model = Provider
         model = Provider
-        fields = ['name', 'slug', 'asn', 'account']
+        fields = ['id', 'name', 'slug', 'asn', 'account']
 
 
     def search(self, queryset, name, value):
     def search(self, queryset, name, value):
         if not value.strip():
         if not value.strip():
@@ -55,10 +51,6 @@ class CircuitTypeFilter(NameSlugSearchFilterSet):
 
 
 
 
 class CircuitFilter(CustomFieldFilterSet):
 class CircuitFilter(CustomFieldFilterSet):
-    id__in = NumericInFilter(
-        field_name='id',
-        lookup_expr='in'
-    )
     q = django_filters.CharFilter(
     q = django_filters.CharFilter(
         method='search',
         method='search',
         label='Search',
         label='Search',
@@ -112,7 +104,7 @@ class CircuitFilter(CustomFieldFilterSet):
 
 
     class Meta:
     class Meta:
         model = Circuit
         model = Circuit
-        fields = ['cid', 'install_date', 'commit_rate']
+        fields = ['id', 'cid', 'install_date', 'commit_rate']
 
 
     def search(self, queryset, name, value):
     def search(self, queryset, name, value):
         if not value.strip():
         if not value.strip():

+ 9 - 38
netbox/dcim/filters.py

@@ -1,6 +1,5 @@
 import django_filters
 import django_filters
 from django.contrib.auth.models import User
 from django.contrib.auth.models import User
-from django.contrib.contenttypes.models import ContentType
 from django.core.exceptions import ObjectDoesNotExist
 from django.core.exceptions import ObjectDoesNotExist
 from django.db.models import Q
 from django.db.models import Q
 from netaddr import EUI
 from netaddr import EUI
@@ -10,7 +9,7 @@ from extras.filters import CustomFieldFilterSet
 from tenancy.models import Tenant
 from tenancy.models import Tenant
 from utilities.constants import COLOR_CHOICES
 from utilities.constants import COLOR_CHOICES
 from utilities.filters import (
 from utilities.filters import (
-    NameSlugSearchFilterSet, NullableCharFieldFilter, NumericInFilter, TagFilter, TreeNodeMultipleChoiceFilter
+    NameSlugSearchFilterSet, NullableCharFieldFilter, TagFilter, TreeNodeMultipleChoiceFilter
 )
 )
 from virtualization.models import Cluster
 from virtualization.models import Cluster
 from .constants import *
 from .constants import *
@@ -41,10 +40,6 @@ class RegionFilter(NameSlugSearchFilterSet):
 
 
 
 
 class SiteFilter(CustomFieldFilterSet):
 class SiteFilter(CustomFieldFilterSet):
-    id__in = NumericInFilter(
-        field_name='id',
-        lookup_expr='in'
-    )
     q = django_filters.CharFilter(
     q = django_filters.CharFilter(
         method='search',
         method='search',
         label='Search',
         label='Search',
@@ -78,7 +73,7 @@ class SiteFilter(CustomFieldFilterSet):
 
 
     class Meta:
     class Meta:
         model = Site
         model = Site
-        fields = ['q', 'name', 'slug', 'facility', 'asn', 'contact_name', 'contact_phone', 'contact_email']
+        fields = ['id', 'name', 'slug', 'facility', 'asn', 'contact_name', 'contact_phone', 'contact_email']
 
 
     def search(self, queryset, name, value):
     def search(self, queryset, name, value):
         if not value.strip():
         if not value.strip():
@@ -126,10 +121,6 @@ class RackRoleFilter(NameSlugSearchFilterSet):
 
 
 
 
 class RackFilter(CustomFieldFilterSet):
 class RackFilter(CustomFieldFilterSet):
-    id__in = NumericInFilter(
-        field_name='id',
-        lookup_expr='in'
-    )
     q = django_filters.CharFilter(
     q = django_filters.CharFilter(
         method='search',
         method='search',
         label='Search',
         label='Search',
@@ -185,8 +176,8 @@ class RackFilter(CustomFieldFilterSet):
     class Meta:
     class Meta:
         model = Rack
         model = Rack
         fields = [
         fields = [
-            'name', 'serial', 'asset_tag', 'type', 'width', 'u_height', 'desc_units', 'outer_width', 'outer_depth',
-            'outer_unit',
+            'id', 'name', 'serial', 'asset_tag', 'type', 'width', 'u_height', 'desc_units', 'outer_width',
+            'outer_depth', 'outer_unit',
         ]
         ]
 
 
     def search(self, queryset, name, value):
     def search(self, queryset, name, value):
@@ -202,10 +193,6 @@ class RackFilter(CustomFieldFilterSet):
 
 
 
 
 class RackReservationFilter(django_filters.FilterSet):
 class RackReservationFilter(django_filters.FilterSet):
-    id__in = NumericInFilter(
-        field_name='id',
-        lookup_expr='in'
-    )
     q = django_filters.CharFilter(
     q = django_filters.CharFilter(
         method='search',
         method='search',
         label='Search',
         label='Search',
@@ -259,7 +246,7 @@ class RackReservationFilter(django_filters.FilterSet):
 
 
     class Meta:
     class Meta:
         model = RackReservation
         model = RackReservation
-        fields = ['created']
+        fields = ['id', 'created']
 
 
     def search(self, queryset, name, value):
     def search(self, queryset, name, value):
         if not value.strip():
         if not value.strip():
@@ -280,10 +267,6 @@ class ManufacturerFilter(NameSlugSearchFilterSet):
 
 
 
 
 class DeviceTypeFilter(CustomFieldFilterSet):
 class DeviceTypeFilter(CustomFieldFilterSet):
-    id__in = NumericInFilter(
-        field_name='id',
-        lookup_expr='in'
-    )
     q = django_filters.CharFilter(
     q = django_filters.CharFilter(
         method='search',
         method='search',
         label='Search',
         label='Search',
@@ -327,7 +310,7 @@ class DeviceTypeFilter(CustomFieldFilterSet):
     class Meta:
     class Meta:
         model = DeviceType
         model = DeviceType
         fields = [
         fields = [
-            'model', 'slug', 'part_number', 'u_height', 'is_full_depth', 'subdevice_role',
+            'id', 'model', 'slug', 'part_number', 'u_height', 'is_full_depth', 'subdevice_role',
         ]
         ]
 
 
     def search(self, queryset, name, value):
     def search(self, queryset, name, value):
@@ -452,10 +435,6 @@ class PlatformFilter(NameSlugSearchFilterSet):
 
 
 
 
 class DeviceFilter(CustomFieldFilterSet):
 class DeviceFilter(CustomFieldFilterSet):
-    id__in = NumericInFilter(
-        field_name='id',
-        lookup_expr='in'
-    )
     q = django_filters.CharFilter(
     q = django_filters.CharFilter(
         method='search',
         method='search',
         label='Search',
         label='Search',
@@ -602,7 +581,7 @@ class DeviceFilter(CustomFieldFilterSet):
 
 
     class Meta:
     class Meta:
         model = Device
         model = Device
-        fields = ['serial', 'face']
+        fields = ['id', 'serial', 'face']
 
 
     def search(self, queryset, name, value):
     def search(self, queryset, name, value):
         if not value.strip():
         if not value.strip():
@@ -1088,10 +1067,6 @@ class InterfaceConnectionFilter(django_filters.FilterSet):
 
 
 
 
 class PowerPanelFilter(django_filters.FilterSet):
 class PowerPanelFilter(django_filters.FilterSet):
-    id__in = NumericInFilter(
-        field_name='id',
-        lookup_expr='in'
-    )
     q = django_filters.CharFilter(
     q = django_filters.CharFilter(
         method='search',
         method='search',
         label='Search',
         label='Search',
@@ -1114,7 +1089,7 @@ class PowerPanelFilter(django_filters.FilterSet):
 
 
     class Meta:
     class Meta:
         model = PowerPanel
         model = PowerPanel
-        fields = ['name']
+        fields = ['id', 'name']
 
 
     def search(self, queryset, name, value):
     def search(self, queryset, name, value):
         if not value.strip():
         if not value.strip():
@@ -1126,10 +1101,6 @@ class PowerPanelFilter(django_filters.FilterSet):
 
 
 
 
 class PowerFeedFilter(CustomFieldFilterSet):
 class PowerFeedFilter(CustomFieldFilterSet):
-    id__in = NumericInFilter(
-        field_name='id',
-        lookup_expr='in'
-    )
     q = django_filters.CharFilter(
     q = django_filters.CharFilter(
         method='search',
         method='search',
         label='Search',
         label='Search',
@@ -1158,7 +1129,7 @@ class PowerFeedFilter(CustomFieldFilterSet):
 
 
     class Meta:
     class Meta:
         model = PowerFeed
         model = PowerFeed
-        fields = ['name', 'status', 'type', 'supply', 'phase', 'voltage', 'amperage', 'power_factor']
+        fields = ['id', 'name', 'status', 'type', 'supply', 'phase', 'voltage', 'amperage', 'power_factor']
 
 
     def search(self, queryset, name, value):
     def search(self, queryset, name, value):
         if not value.strip():
         if not value.strip():

+ 10 - 34
netbox/ipam/filters.py

@@ -7,17 +7,13 @@ from netaddr.core import AddrFormatError
 from dcim.models import Site, Device, Interface
 from dcim.models import Site, Device, Interface
 from extras.filters import CustomFieldFilterSet
 from extras.filters import CustomFieldFilterSet
 from tenancy.models import Tenant
 from tenancy.models import Tenant
-from utilities.filters import NameSlugSearchFilterSet, NumericInFilter, TagFilter
+from utilities.filters import NameSlugSearchFilterSet, TagFilter
 from virtualization.models import VirtualMachine
 from virtualization.models import VirtualMachine
 from .constants import IPADDRESS_ROLE_CHOICES, IPADDRESS_STATUS_CHOICES, PREFIX_STATUS_CHOICES, VLAN_STATUS_CHOICES
 from .constants import IPADDRESS_ROLE_CHOICES, IPADDRESS_STATUS_CHOICES, PREFIX_STATUS_CHOICES, VLAN_STATUS_CHOICES
 from .models import Aggregate, IPAddress, Prefix, RIR, Role, Service, VLAN, VLANGroup, VRF
 from .models import Aggregate, IPAddress, Prefix, RIR, Role, Service, VLAN, VLANGroup, VRF
 
 
 
 
 class VRFFilter(CustomFieldFilterSet):
 class VRFFilter(CustomFieldFilterSet):
-    id__in = NumericInFilter(
-        field_name='id',
-        lookup_expr='in'
-    )
     q = django_filters.CharFilter(
     q = django_filters.CharFilter(
         method='search',
         method='search',
         label='Search',
         label='Search',
@@ -34,6 +30,10 @@ class VRFFilter(CustomFieldFilterSet):
     )
     )
     tag = TagFilter()
     tag = TagFilter()
 
 
+    class Meta:
+        model = VRF
+        fields = ['id', 'name', 'rd', 'enforce_unique']
+
     def search(self, queryset, name, value):
     def search(self, queryset, name, value):
         if not value.strip():
         if not value.strip():
             return queryset
             return queryset
@@ -43,27 +43,15 @@ class VRFFilter(CustomFieldFilterSet):
             Q(description__icontains=value)
             Q(description__icontains=value)
         )
         )
 
 
-    class Meta:
-        model = VRF
-        fields = ['name', 'rd', 'enforce_unique']
-
 
 
 class RIRFilter(NameSlugSearchFilterSet):
 class RIRFilter(NameSlugSearchFilterSet):
-    id__in = NumericInFilter(
-        field_name='id',
-        lookup_expr='in'
-    )
 
 
     class Meta:
     class Meta:
         model = RIR
         model = RIR
-        fields = ['name', 'slug', 'is_private']
+        fields = ['id', 'name', 'slug', 'is_private']
 
 
 
 
 class AggregateFilter(CustomFieldFilterSet):
 class AggregateFilter(CustomFieldFilterSet):
-    id__in = NumericInFilter(
-        field_name='id',
-        lookup_expr='in'
-    )
     q = django_filters.CharFilter(
     q = django_filters.CharFilter(
         method='search',
         method='search',
         label='Search',
         label='Search',
@@ -82,7 +70,7 @@ class AggregateFilter(CustomFieldFilterSet):
 
 
     class Meta:
     class Meta:
         model = Aggregate
         model = Aggregate
-        fields = ['family', 'date_added']
+        fields = ['id', 'family', 'date_added']
 
 
     def search(self, queryset, name, value):
     def search(self, queryset, name, value):
         if not value.strip():
         if not value.strip():
@@ -108,10 +96,6 @@ class RoleFilter(NameSlugSearchFilterSet):
 
 
 
 
 class PrefixFilter(CustomFieldFilterSet):
 class PrefixFilter(CustomFieldFilterSet):
-    id__in = NumericInFilter(
-        field_name='id',
-        lookup_expr='in'
-    )
     q = django_filters.CharFilter(
     q = django_filters.CharFilter(
         method='search',
         method='search',
         label='Search',
         label='Search',
@@ -192,7 +176,7 @@ class PrefixFilter(CustomFieldFilterSet):
 
 
     class Meta:
     class Meta:
         model = Prefix
         model = Prefix
-        fields = ['family', 'is_pool']
+        fields = ['id', 'family', 'is_pool']
 
 
     def search(self, queryset, name, value):
     def search(self, queryset, name, value):
         if not value.strip():
         if not value.strip():
@@ -255,10 +239,6 @@ class PrefixFilter(CustomFieldFilterSet):
 
 
 
 
 class IPAddressFilter(CustomFieldFilterSet):
 class IPAddressFilter(CustomFieldFilterSet):
-    id__in = NumericInFilter(
-        field_name='id',
-        lookup_expr='in'
-    )
     q = django_filters.CharFilter(
     q = django_filters.CharFilter(
         method='search',
         method='search',
         label='Search',
         label='Search',
@@ -331,7 +311,7 @@ class IPAddressFilter(CustomFieldFilterSet):
 
 
     class Meta:
     class Meta:
         model = IPAddress
         model = IPAddress
-        fields = ['family', 'dns_name']
+        fields = ['id', 'family', 'dns_name']
 
 
     def search(self, queryset, name, value):
     def search(self, queryset, name, value):
         if not value.strip():
         if not value.strip():
@@ -396,10 +376,6 @@ class VLANGroupFilter(NameSlugSearchFilterSet):
 
 
 
 
 class VLANFilter(CustomFieldFilterSet):
 class VLANFilter(CustomFieldFilterSet):
-    id__in = NumericInFilter(
-        field_name='id',
-        lookup_expr='in'
-    )
     q = django_filters.CharFilter(
     q = django_filters.CharFilter(
         method='search',
         method='search',
         label='Search',
         label='Search',
@@ -452,7 +428,7 @@ class VLANFilter(CustomFieldFilterSet):
 
 
     class Meta:
     class Meta:
         model = VLAN
         model = VLAN
-        fields = ['vid', 'name']
+        fields = ['id', 'vid', 'name']
 
 
     def search(self, queryset, name, value):
     def search(self, queryset, name, value):
         if not value.strip():
         if not value.strip():

+ 2 - 6
netbox/secrets/filters.py

@@ -3,7 +3,7 @@ from django.db.models import Q
 
 
 from dcim.models import Device
 from dcim.models import Device
 from extras.filters import CustomFieldFilterSet
 from extras.filters import CustomFieldFilterSet
-from utilities.filters import NameSlugSearchFilterSet, NumericInFilter, TagFilter
+from utilities.filters import NameSlugSearchFilterSet, TagFilter
 from .models import Secret, SecretRole
 from .models import Secret, SecretRole
 
 
 
 
@@ -15,10 +15,6 @@ class SecretRoleFilter(NameSlugSearchFilterSet):
 
 
 
 
 class SecretFilter(CustomFieldFilterSet):
 class SecretFilter(CustomFieldFilterSet):
-    id__in = NumericInFilter(
-        field_name='id',
-        lookup_expr='in'
-    )
     q = django_filters.CharFilter(
     q = django_filters.CharFilter(
         method='search',
         method='search',
         label='Search',
         label='Search',
@@ -47,7 +43,7 @@ class SecretFilter(CustomFieldFilterSet):
 
 
     class Meta:
     class Meta:
         model = Secret
         model = Secret
-        fields = ['name']
+        fields = ['id', 'name']
 
 
     def search(self, queryset, name, value):
     def search(self, queryset, name, value):
         if not value.strip():
         if not value.strip():

+ 2 - 6
netbox/tenancy/filters.py

@@ -2,7 +2,7 @@ import django_filters
 from django.db.models import Q
 from django.db.models import Q
 
 
 from extras.filters import CustomFieldFilterSet
 from extras.filters import CustomFieldFilterSet
-from utilities.filters import NameSlugSearchFilterSet, NumericInFilter, TagFilter
+from utilities.filters import NameSlugSearchFilterSet, TagFilter
 from .models import Tenant, TenantGroup
 from .models import Tenant, TenantGroup
 
 
 
 
@@ -14,10 +14,6 @@ class TenantGroupFilter(NameSlugSearchFilterSet):
 
 
 
 
 class TenantFilter(CustomFieldFilterSet):
 class TenantFilter(CustomFieldFilterSet):
-    id__in = NumericInFilter(
-        field_name='id',
-        lookup_expr='in'
-    )
     q = django_filters.CharFilter(
     q = django_filters.CharFilter(
         method='search',
         method='search',
         label='Search',
         label='Search',
@@ -36,7 +32,7 @@ class TenantFilter(CustomFieldFilterSet):
 
 
     class Meta:
     class Meta:
         model = Tenant
         model = Tenant
-        fields = ['name', 'slug']
+        fields = ['id', 'name', 'slug']
 
 
     def search(self, queryset, name, value):
     def search(self, queryset, name, value):
         if not value.strip():
         if not value.strip():

+ 0 - 7
netbox/utilities/filters.py

@@ -55,13 +55,6 @@ class TreeNodeMultipleChoiceFilter(django_filters.ModelMultipleChoiceFilter):
         return super().filter(qs, value)
         return super().filter(qs, value)
 
 
 
 
-class NumericInFilter(django_filters.BaseInFilter, django_filters.NumberFilter):
-    """
-    Filters for a set of numeric values. Example: id__in=100,200,300
-    """
-    pass
-
-
 class NullableCharFieldFilter(django_filters.CharFilter):
 class NullableCharFieldFilter(django_filters.CharFilter):
     """
     """
     Allow matching on null field values by passing a special string used to signify NULL.
     Allow matching on null field values by passing a special string used to signify NULL.

+ 3 - 11
netbox/virtualization/filters.py

@@ -7,7 +7,7 @@ from netaddr.core import AddrFormatError
 from dcim.models import DeviceRole, Interface, Platform, Region, Site
 from dcim.models import DeviceRole, Interface, Platform, Region, Site
 from extras.filters import CustomFieldFilterSet
 from extras.filters import CustomFieldFilterSet
 from tenancy.models import Tenant
 from tenancy.models import Tenant
-from utilities.filters import NameSlugSearchFilterSet, NumericInFilter, TagFilter, TreeNodeMultipleChoiceFilter
+from utilities.filters import NameSlugSearchFilterSet, TagFilter, TreeNodeMultipleChoiceFilter
 from .constants import VM_STATUS_CHOICES
 from .constants import VM_STATUS_CHOICES
 from .models import Cluster, ClusterGroup, ClusterType, VirtualMachine
 from .models import Cluster, ClusterGroup, ClusterType, VirtualMachine
 
 
@@ -27,10 +27,6 @@ class ClusterGroupFilter(NameSlugSearchFilterSet):
 
 
 
 
 class ClusterFilter(CustomFieldFilterSet):
 class ClusterFilter(CustomFieldFilterSet):
-    id__in = NumericInFilter(
-        field_name='id',
-        lookup_expr='in'
-    )
     q = django_filters.CharFilter(
     q = django_filters.CharFilter(
         method='search',
         method='search',
         label='Search',
         label='Search',
@@ -69,7 +65,7 @@ class ClusterFilter(CustomFieldFilterSet):
 
 
     class Meta:
     class Meta:
         model = Cluster
         model = Cluster
-        fields = ['name']
+        fields = ['id', 'name']
 
 
     def search(self, queryset, name, value):
     def search(self, queryset, name, value):
         if not value.strip():
         if not value.strip():
@@ -81,10 +77,6 @@ class ClusterFilter(CustomFieldFilterSet):
 
 
 
 
 class VirtualMachineFilter(CustomFieldFilterSet):
 class VirtualMachineFilter(CustomFieldFilterSet):
-    id__in = NumericInFilter(
-        field_name='id',
-        lookup_expr='in'
-    )
     q = django_filters.CharFilter(
     q = django_filters.CharFilter(
         method='search',
         method='search',
         label='Search',
         label='Search',
@@ -175,7 +167,7 @@ class VirtualMachineFilter(CustomFieldFilterSet):
 
 
     class Meta:
     class Meta:
         model = VirtualMachine
         model = VirtualMachine
-        fields = ['name', 'cluster']
+        fields = ['id', 'name', 'cluster']
 
 
     def search(self, queryset, name, value):
     def search(self, queryset, name, value):
         if not value.strip():
         if not value.strip():