Jeremy Stretch 6 лет назад
Родитель
Сommit
83c0d1ef44
5 измененных файлов с 64 добавлено и 64 удалено
  1. 9 9
      netbox/ipam/api/views.py
  2. 18 18
      netbox/ipam/filters.py
  3. 9 9
      netbox/ipam/tests/test_filters.py
  4. 22 22
      netbox/ipam/views.py
  5. 6 6
      netbox/netbox/views.py

+ 9 - 9
netbox/ipam/api/views.py

@@ -38,7 +38,7 @@ class VRFViewSet(CustomFieldModelViewSet):
         prefix_count=get_subquery(Prefix, 'vrf')
         prefix_count=get_subquery(Prefix, 'vrf')
     )
     )
     serializer_class = serializers.VRFSerializer
     serializer_class = serializers.VRFSerializer
-    filterset_class = filters.VRFFilter
+    filterset_class = filters.VRFFilterSet
 
 
 
 
 #
 #
@@ -50,7 +50,7 @@ class RIRViewSet(ModelViewSet):
         aggregate_count=Count('aggregates')
         aggregate_count=Count('aggregates')
     )
     )
     serializer_class = serializers.RIRSerializer
     serializer_class = serializers.RIRSerializer
-    filterset_class = filters.RIRFilter
+    filterset_class = filters.RIRFilterSet
 
 
 
 
 #
 #
@@ -60,7 +60,7 @@ class RIRViewSet(ModelViewSet):
 class AggregateViewSet(CustomFieldModelViewSet):
 class AggregateViewSet(CustomFieldModelViewSet):
     queryset = Aggregate.objects.prefetch_related('rir').prefetch_related('tags')
     queryset = Aggregate.objects.prefetch_related('rir').prefetch_related('tags')
     serializer_class = serializers.AggregateSerializer
     serializer_class = serializers.AggregateSerializer
-    filterset_class = filters.AggregateFilter
+    filterset_class = filters.AggregateFilterSet
 
 
 
 
 #
 #
@@ -73,7 +73,7 @@ class RoleViewSet(ModelViewSet):
         vlan_count=get_subquery(VLAN, 'role')
         vlan_count=get_subquery(VLAN, 'role')
     )
     )
     serializer_class = serializers.RoleSerializer
     serializer_class = serializers.RoleSerializer
-    filterset_class = filters.RoleFilter
+    filterset_class = filters.RoleFilterSet
 
 
 
 
 #
 #
@@ -83,7 +83,7 @@ class RoleViewSet(ModelViewSet):
 class PrefixViewSet(CustomFieldModelViewSet):
 class PrefixViewSet(CustomFieldModelViewSet):
     queryset = Prefix.objects.prefetch_related('site', 'vrf__tenant', 'tenant', 'vlan', 'role', 'tags')
     queryset = Prefix.objects.prefetch_related('site', 'vrf__tenant', 'tenant', 'vlan', 'role', 'tags')
     serializer_class = serializers.PrefixSerializer
     serializer_class = serializers.PrefixSerializer
-    filterset_class = filters.PrefixFilter
+    filterset_class = filters.PrefixFilterSet
 
 
     @action(detail=True, url_path='available-prefixes', methods=['get', 'post'])
     @action(detail=True, url_path='available-prefixes', methods=['get', 'post'])
     def available_prefixes(self, request, pk=None):
     def available_prefixes(self, request, pk=None):
@@ -264,7 +264,7 @@ class IPAddressViewSet(CustomFieldModelViewSet):
         'nat_outside', 'tags',
         'nat_outside', 'tags',
     )
     )
     serializer_class = serializers.IPAddressSerializer
     serializer_class = serializers.IPAddressSerializer
-    filterset_class = filters.IPAddressFilter
+    filterset_class = filters.IPAddressFilterSet
 
 
 
 
 #
 #
@@ -276,7 +276,7 @@ class VLANGroupViewSet(ModelViewSet):
         vlan_count=Count('vlans')
         vlan_count=Count('vlans')
     )
     )
     serializer_class = serializers.VLANGroupSerializer
     serializer_class = serializers.VLANGroupSerializer
-    filterset_class = filters.VLANGroupFilter
+    filterset_class = filters.VLANGroupFilterSet
 
 
 
 
 #
 #
@@ -290,7 +290,7 @@ class VLANViewSet(CustomFieldModelViewSet):
         prefix_count=get_subquery(Prefix, 'role')
         prefix_count=get_subquery(Prefix, 'role')
     )
     )
     serializer_class = serializers.VLANSerializer
     serializer_class = serializers.VLANSerializer
-    filterset_class = filters.VLANFilter
+    filterset_class = filters.VLANFilterSet
 
 
 
 
 #
 #
@@ -300,4 +300,4 @@ class VLANViewSet(CustomFieldModelViewSet):
 class ServiceViewSet(ModelViewSet):
 class ServiceViewSet(ModelViewSet):
     queryset = Service.objects.prefetch_related('device').prefetch_related('tags')
     queryset = Service.objects.prefetch_related('device').prefetch_related('tags')
     serializer_class = serializers.ServiceSerializer
     serializer_class = serializers.ServiceSerializer
-    filterset_class = filters.ServiceFilter
+    filterset_class = filters.ServiceFilterSet

+ 18 - 18
netbox/ipam/filters.py

@@ -14,19 +14,19 @@ from .models import Aggregate, IPAddress, Prefix, RIR, Role, Service, VLAN, VLAN
 
 
 
 
 __all__ = (
 __all__ = (
-    'AggregateFilter',
-    'IPAddressFilter',
-    'PrefixFilter',
-    'RIRFilter',
-    'RoleFilter',
-    'ServiceFilter',
-    'VLANFilter',
-    'VLANGroupFilter',
-    'VRFFilter',
+    'AggregateFilterSet',
+    'IPAddressFilterSet',
+    'PrefixFilterSet',
+    'RIRFilterSet',
+    'RoleFilterSet',
+    'ServiceFilterSet',
+    'VLANFilterSet',
+    'VLANGroupFilterSet',
+    'VRFFilterSet',
 )
 )
 
 
 
 
-class VRFFilter(TenancyFilterSet, CustomFieldFilterSet, CreatedUpdatedFilterSet):
+class VRFFilterSet(TenancyFilterSet, CustomFieldFilterSet, CreatedUpdatedFilterSet):
     id__in = NumericInFilter(
     id__in = NumericInFilter(
         field_name='id',
         field_name='id',
         lookup_expr='in'
         lookup_expr='in'
@@ -51,7 +51,7 @@ class VRFFilter(TenancyFilterSet, CustomFieldFilterSet, CreatedUpdatedFilterSet)
         fields = ['name', 'rd', 'enforce_unique']
         fields = ['name', 'rd', 'enforce_unique']
 
 
 
 
-class RIRFilter(NameSlugSearchFilterSet):
+class RIRFilterSet(NameSlugSearchFilterSet):
     id__in = NumericInFilter(
     id__in = NumericInFilter(
         field_name='id',
         field_name='id',
         lookup_expr='in'
         lookup_expr='in'
@@ -62,7 +62,7 @@ class RIRFilter(NameSlugSearchFilterSet):
         fields = ['name', 'slug', 'is_private']
         fields = ['name', 'slug', 'is_private']
 
 
 
 
-class AggregateFilter(CustomFieldFilterSet, CreatedUpdatedFilterSet):
+class AggregateFilterSet(CustomFieldFilterSet, CreatedUpdatedFilterSet):
     id__in = NumericInFilter(
     id__in = NumericInFilter(
         field_name='id',
         field_name='id',
         lookup_expr='in'
         lookup_expr='in'
@@ -112,7 +112,7 @@ class AggregateFilter(CustomFieldFilterSet, CreatedUpdatedFilterSet):
             return queryset.none()
             return queryset.none()
 
 
 
 
-class RoleFilter(NameSlugSearchFilterSet):
+class RoleFilterSet(NameSlugSearchFilterSet):
     q = django_filters.CharFilter(
     q = django_filters.CharFilter(
         method='search',
         method='search',
         label='Search',
         label='Search',
@@ -123,7 +123,7 @@ class RoleFilter(NameSlugSearchFilterSet):
         fields = ['id', 'name', 'slug']
         fields = ['id', 'name', 'slug']
 
 
 
 
-class PrefixFilter(TenancyFilterSet, CustomFieldFilterSet, CreatedUpdatedFilterSet):
+class PrefixFilterSet(TenancyFilterSet, CustomFieldFilterSet, CreatedUpdatedFilterSet):
     id__in = NumericInFilter(
     id__in = NumericInFilter(
         field_name='id',
         field_name='id',
         lookup_expr='in'
         lookup_expr='in'
@@ -271,7 +271,7 @@ class PrefixFilter(TenancyFilterSet, CustomFieldFilterSet, CreatedUpdatedFilterS
         return queryset.filter(prefix__net_mask_length=value)
         return queryset.filter(prefix__net_mask_length=value)
 
 
 
 
-class IPAddressFilter(TenancyFilterSet, CustomFieldFilterSet, CreatedUpdatedFilterSet):
+class IPAddressFilterSet(TenancyFilterSet, CustomFieldFilterSet, CreatedUpdatedFilterSet):
     id__in = NumericInFilter(
     id__in = NumericInFilter(
         field_name='id',
         field_name='id',
         lookup_expr='in'
         lookup_expr='in'
@@ -398,7 +398,7 @@ class IPAddressFilter(TenancyFilterSet, CustomFieldFilterSet, CreatedUpdatedFilt
         return queryset.exclude(interface__isnull=value)
         return queryset.exclude(interface__isnull=value)
 
 
 
 
-class VLANGroupFilter(NameSlugSearchFilterSet):
+class VLANGroupFilterSet(NameSlugSearchFilterSet):
     region_id = TreeNodeMultipleChoiceFilter(
     region_id = TreeNodeMultipleChoiceFilter(
         queryset=Region.objects.all(),
         queryset=Region.objects.all(),
         field_name='site__region__in',
         field_name='site__region__in',
@@ -426,7 +426,7 @@ class VLANGroupFilter(NameSlugSearchFilterSet):
         fields = ['id', 'name', 'slug']
         fields = ['id', 'name', 'slug']
 
 
 
 
-class VLANFilter(TenancyFilterSet, CustomFieldFilterSet, CreatedUpdatedFilterSet):
+class VLANFilterSet(TenancyFilterSet, CustomFieldFilterSet, CreatedUpdatedFilterSet):
     id__in = NumericInFilter(
     id__in = NumericInFilter(
         field_name='id',
         field_name='id',
         lookup_expr='in'
         lookup_expr='in'
@@ -497,7 +497,7 @@ class VLANFilter(TenancyFilterSet, CustomFieldFilterSet, CreatedUpdatedFilterSet
         return queryset.filter(qs_filter)
         return queryset.filter(qs_filter)
 
 
 
 
-class ServiceFilter(CreatedUpdatedFilterSet):
+class ServiceFilterSet(CreatedUpdatedFilterSet):
     q = django_filters.CharFilter(
     q = django_filters.CharFilter(
         method='search',
         method='search',
         label='Search',
         label='Search',

+ 9 - 9
netbox/ipam/tests/test_filters.py

@@ -9,7 +9,7 @@ from virtualization.models import Cluster, ClusterType, VirtualMachine
 
 
 class VRFTestCase(TestCase):
 class VRFTestCase(TestCase):
     queryset = VRF.objects.all()
     queryset = VRF.objects.all()
-    filterset = VRFFilter
+    filterset = VRFFilterSet
 
 
     @classmethod
     @classmethod
     def setUpTestData(cls):
     def setUpTestData(cls):
@@ -46,7 +46,7 @@ class VRFTestCase(TestCase):
 
 
 class RIRTestCase(TestCase):
 class RIRTestCase(TestCase):
     queryset = RIR.objects.all()
     queryset = RIR.objects.all()
-    filterset = RIRFilter
+    filterset = RIRFilterSet
 
 
     @classmethod
     @classmethod
     def setUpTestData(cls):
     def setUpTestData(cls):
@@ -83,7 +83,7 @@ class RIRTestCase(TestCase):
 
 
 class AggregateTestCase(TestCase):
 class AggregateTestCase(TestCase):
     queryset = Aggregate.objects.all()
     queryset = Aggregate.objects.all()
-    filterset = AggregateFilter
+    filterset = AggregateFilterSet
 
 
     @classmethod
     @classmethod
     def setUpTestData(cls):
     def setUpTestData(cls):
@@ -128,7 +128,7 @@ class AggregateTestCase(TestCase):
 
 
 class RoleTestCase(TestCase):
 class RoleTestCase(TestCase):
     queryset = Role.objects.all()
     queryset = Role.objects.all()
-    filterset = RoleFilter
+    filterset = RoleFilterSet
 
 
     @classmethod
     @classmethod
     def setUpTestData(cls):
     def setUpTestData(cls):
@@ -156,7 +156,7 @@ class RoleTestCase(TestCase):
 
 
 class PrefixTestCase(TestCase):
 class PrefixTestCase(TestCase):
     queryset = Prefix.objects.all()
     queryset = Prefix.objects.all()
-    filterset = PrefixFilter
+    filterset = PrefixFilterSet
 
 
     @classmethod
     @classmethod
     def setUpTestData(cls):
     def setUpTestData(cls):
@@ -288,7 +288,7 @@ class PrefixTestCase(TestCase):
 
 
 class IPAddressTestCase(TestCase):
 class IPAddressTestCase(TestCase):
     queryset = IPAddress.objects.all()
     queryset = IPAddress.objects.all()
-    filterset = IPAddressFilter
+    filterset = IPAddressFilterSet
 
 
     @classmethod
     @classmethod
     def setUpTestData(cls):
     def setUpTestData(cls):
@@ -424,7 +424,7 @@ class IPAddressTestCase(TestCase):
 
 
 class VLANGroupTestCase(TestCase):
 class VLANGroupTestCase(TestCase):
     queryset = VLANGroup.objects.all()
     queryset = VLANGroup.objects.all()
-    filterset = VLANGroupFilter
+    filterset = VLANGroupFilterSet
 
 
     @classmethod
     @classmethod
     def setUpTestData(cls):
     def setUpTestData(cls):
@@ -483,7 +483,7 @@ class VLANGroupTestCase(TestCase):
 
 
 class VLANTestCase(TestCase):
 class VLANTestCase(TestCase):
     queryset = VLAN.objects.all()
     queryset = VLAN.objects.all()
-    filterset = VLANFilter
+    filterset = VLANFilterSet
 
 
     @classmethod
     @classmethod
     def setUpTestData(cls):
     def setUpTestData(cls):
@@ -576,7 +576,7 @@ class VLANTestCase(TestCase):
 
 
 class ServiceTestCase(TestCase):
 class ServiceTestCase(TestCase):
     queryset = Service.objects.all()
     queryset = Service.objects.all()
-    filterset = ServiceFilter
+    filterset = ServiceFilterSet
 
 
     @classmethod
     @classmethod
     def setUpTestData(cls):
     def setUpTestData(cls):

+ 22 - 22
netbox/ipam/views.py

@@ -117,7 +117,7 @@ def add_available_vlans(vlan_group, vlans):
 class VRFListView(PermissionRequiredMixin, ObjectListView):
 class VRFListView(PermissionRequiredMixin, ObjectListView):
     permission_required = 'ipam.view_vrf'
     permission_required = 'ipam.view_vrf'
     queryset = VRF.objects.prefetch_related('tenant')
     queryset = VRF.objects.prefetch_related('tenant')
-    filter = filters.VRFFilter
+    filter = filters.VRFFilterSet
     filter_form = forms.VRFFilterForm
     filter_form = forms.VRFFilterForm
     table = tables.VRFTable
     table = tables.VRFTable
     template_name = 'ipam/vrf_list.html'
     template_name = 'ipam/vrf_list.html'
@@ -165,7 +165,7 @@ class VRFBulkImportView(PermissionRequiredMixin, BulkImportView):
 class VRFBulkEditView(PermissionRequiredMixin, BulkEditView):
 class VRFBulkEditView(PermissionRequiredMixin, BulkEditView):
     permission_required = 'ipam.change_vrf'
     permission_required = 'ipam.change_vrf'
     queryset = VRF.objects.prefetch_related('tenant')
     queryset = VRF.objects.prefetch_related('tenant')
-    filter = filters.VRFFilter
+    filter = filters.VRFFilterSet
     table = tables.VRFTable
     table = tables.VRFTable
     form = forms.VRFBulkEditForm
     form = forms.VRFBulkEditForm
     default_return_url = 'ipam:vrf_list'
     default_return_url = 'ipam:vrf_list'
@@ -174,7 +174,7 @@ class VRFBulkEditView(PermissionRequiredMixin, BulkEditView):
 class VRFBulkDeleteView(PermissionRequiredMixin, BulkDeleteView):
 class VRFBulkDeleteView(PermissionRequiredMixin, BulkDeleteView):
     permission_required = 'ipam.delete_vrf'
     permission_required = 'ipam.delete_vrf'
     queryset = VRF.objects.prefetch_related('tenant')
     queryset = VRF.objects.prefetch_related('tenant')
-    filter = filters.VRFFilter
+    filter = filters.VRFFilterSet
     table = tables.VRFTable
     table = tables.VRFTable
     default_return_url = 'ipam:vrf_list'
     default_return_url = 'ipam:vrf_list'
 
 
@@ -186,7 +186,7 @@ class VRFBulkDeleteView(PermissionRequiredMixin, BulkDeleteView):
 class RIRListView(PermissionRequiredMixin, ObjectListView):
 class RIRListView(PermissionRequiredMixin, ObjectListView):
     permission_required = 'ipam.view_rir'
     permission_required = 'ipam.view_rir'
     queryset = RIR.objects.annotate(aggregate_count=Count('aggregates'))
     queryset = RIR.objects.annotate(aggregate_count=Count('aggregates'))
-    filter = filters.RIRFilter
+    filter = filters.RIRFilterSet
     filter_form = forms.RIRFilterForm
     filter_form = forms.RIRFilterForm
     table = tables.RIRDetailTable
     table = tables.RIRDetailTable
     template_name = 'ipam/rir_list.html'
     template_name = 'ipam/rir_list.html'
@@ -281,7 +281,7 @@ class RIRBulkImportView(PermissionRequiredMixin, BulkImportView):
 class RIRBulkDeleteView(PermissionRequiredMixin, BulkDeleteView):
 class RIRBulkDeleteView(PermissionRequiredMixin, BulkDeleteView):
     permission_required = 'ipam.delete_rir'
     permission_required = 'ipam.delete_rir'
     queryset = RIR.objects.annotate(aggregate_count=Count('aggregates'))
     queryset = RIR.objects.annotate(aggregate_count=Count('aggregates'))
-    filter = filters.RIRFilter
+    filter = filters.RIRFilterSet
     table = tables.RIRTable
     table = tables.RIRTable
     default_return_url = 'ipam:rir_list'
     default_return_url = 'ipam:rir_list'
 
 
@@ -296,7 +296,7 @@ class AggregateListView(PermissionRequiredMixin, ObjectListView):
         child_count=RawSQL('SELECT COUNT(*) FROM ipam_prefix WHERE ipam_prefix.prefix <<= ipam_aggregate.prefix', ())
         child_count=RawSQL('SELECT COUNT(*) FROM ipam_prefix WHERE ipam_prefix.prefix <<= ipam_aggregate.prefix', ())
     )
     )
 
 
-    filter = filters.AggregateFilter
+    filter = filters.AggregateFilterSet
     filter_form = forms.AggregateFilterForm
     filter_form = forms.AggregateFilterForm
     table = tables.AggregateDetailTable
     table = tables.AggregateDetailTable
     template_name = 'ipam/aggregate_list.html'
     template_name = 'ipam/aggregate_list.html'
@@ -391,7 +391,7 @@ class AggregateBulkImportView(PermissionRequiredMixin, BulkImportView):
 class AggregateBulkEditView(PermissionRequiredMixin, BulkEditView):
 class AggregateBulkEditView(PermissionRequiredMixin, BulkEditView):
     permission_required = 'ipam.change_aggregate'
     permission_required = 'ipam.change_aggregate'
     queryset = Aggregate.objects.prefetch_related('rir')
     queryset = Aggregate.objects.prefetch_related('rir')
-    filter = filters.AggregateFilter
+    filter = filters.AggregateFilterSet
     table = tables.AggregateTable
     table = tables.AggregateTable
     form = forms.AggregateBulkEditForm
     form = forms.AggregateBulkEditForm
     default_return_url = 'ipam:aggregate_list'
     default_return_url = 'ipam:aggregate_list'
@@ -400,7 +400,7 @@ class AggregateBulkEditView(PermissionRequiredMixin, BulkEditView):
 class AggregateBulkDeleteView(PermissionRequiredMixin, BulkDeleteView):
 class AggregateBulkDeleteView(PermissionRequiredMixin, BulkDeleteView):
     permission_required = 'ipam.delete_aggregate'
     permission_required = 'ipam.delete_aggregate'
     queryset = Aggregate.objects.prefetch_related('rir')
     queryset = Aggregate.objects.prefetch_related('rir')
-    filter = filters.AggregateFilter
+    filter = filters.AggregateFilterSet
     table = tables.AggregateTable
     table = tables.AggregateTable
     default_return_url = 'ipam:aggregate_list'
     default_return_url = 'ipam:aggregate_list'
 
 
@@ -448,7 +448,7 @@ class RoleBulkDeleteView(PermissionRequiredMixin, BulkDeleteView):
 class PrefixListView(PermissionRequiredMixin, ObjectListView):
 class PrefixListView(PermissionRequiredMixin, ObjectListView):
     permission_required = 'ipam.view_prefix'
     permission_required = 'ipam.view_prefix'
     queryset = Prefix.objects.prefetch_related('site', 'vrf__tenant', 'tenant', 'vlan', 'role')
     queryset = Prefix.objects.prefetch_related('site', 'vrf__tenant', 'tenant', 'vlan', 'role')
-    filter = filters.PrefixFilter
+    filter = filters.PrefixFilterSet
     filter_form = forms.PrefixFilterForm
     filter_form = forms.PrefixFilterForm
     table = tables.PrefixDetailTable
     table = tables.PrefixDetailTable
     template_name = 'ipam/prefix_list.html'
     template_name = 'ipam/prefix_list.html'
@@ -620,7 +620,7 @@ class PrefixBulkImportView(PermissionRequiredMixin, BulkImportView):
 class PrefixBulkEditView(PermissionRequiredMixin, BulkEditView):
 class PrefixBulkEditView(PermissionRequiredMixin, BulkEditView):
     permission_required = 'ipam.change_prefix'
     permission_required = 'ipam.change_prefix'
     queryset = Prefix.objects.prefetch_related('site', 'vrf__tenant', 'tenant', 'vlan', 'role')
     queryset = Prefix.objects.prefetch_related('site', 'vrf__tenant', 'tenant', 'vlan', 'role')
-    filter = filters.PrefixFilter
+    filter = filters.PrefixFilterSet
     table = tables.PrefixTable
     table = tables.PrefixTable
     form = forms.PrefixBulkEditForm
     form = forms.PrefixBulkEditForm
     default_return_url = 'ipam:prefix_list'
     default_return_url = 'ipam:prefix_list'
@@ -629,7 +629,7 @@ class PrefixBulkEditView(PermissionRequiredMixin, BulkEditView):
 class PrefixBulkDeleteView(PermissionRequiredMixin, BulkDeleteView):
 class PrefixBulkDeleteView(PermissionRequiredMixin, BulkDeleteView):
     permission_required = 'ipam.delete_prefix'
     permission_required = 'ipam.delete_prefix'
     queryset = Prefix.objects.prefetch_related('site', 'vrf__tenant', 'tenant', 'vlan', 'role')
     queryset = Prefix.objects.prefetch_related('site', 'vrf__tenant', 'tenant', 'vlan', 'role')
-    filter = filters.PrefixFilter
+    filter = filters.PrefixFilterSet
     table = tables.PrefixTable
     table = tables.PrefixTable
     default_return_url = 'ipam:prefix_list'
     default_return_url = 'ipam:prefix_list'
 
 
@@ -643,7 +643,7 @@ class IPAddressListView(PermissionRequiredMixin, ObjectListView):
     queryset = IPAddress.objects.prefetch_related(
     queryset = IPAddress.objects.prefetch_related(
         'vrf__tenant', 'tenant', 'nat_inside', 'interface__device', 'interface__virtual_machine'
         'vrf__tenant', 'tenant', 'nat_inside', 'interface__device', 'interface__virtual_machine'
     )
     )
-    filter = filters.IPAddressFilter
+    filter = filters.IPAddressFilterSet
     filter_form = forms.IPAddressFilterForm
     filter_form = forms.IPAddressFilterForm
     table = tables.IPAddressDetailTable
     table = tables.IPAddressDetailTable
     template_name = 'ipam/ipaddress_list.html'
     template_name = 'ipam/ipaddress_list.html'
@@ -796,7 +796,7 @@ class IPAddressBulkImportView(PermissionRequiredMixin, BulkImportView):
 class IPAddressBulkEditView(PermissionRequiredMixin, BulkEditView):
 class IPAddressBulkEditView(PermissionRequiredMixin, BulkEditView):
     permission_required = 'ipam.change_ipaddress'
     permission_required = 'ipam.change_ipaddress'
     queryset = IPAddress.objects.prefetch_related('vrf__tenant', 'tenant').prefetch_related('interface__device')
     queryset = IPAddress.objects.prefetch_related('vrf__tenant', 'tenant').prefetch_related('interface__device')
-    filter = filters.IPAddressFilter
+    filter = filters.IPAddressFilterSet
     table = tables.IPAddressTable
     table = tables.IPAddressTable
     form = forms.IPAddressBulkEditForm
     form = forms.IPAddressBulkEditForm
     default_return_url = 'ipam:ipaddress_list'
     default_return_url = 'ipam:ipaddress_list'
@@ -805,7 +805,7 @@ class IPAddressBulkEditView(PermissionRequiredMixin, BulkEditView):
 class IPAddressBulkDeleteView(PermissionRequiredMixin, BulkDeleteView):
 class IPAddressBulkDeleteView(PermissionRequiredMixin, BulkDeleteView):
     permission_required = 'ipam.delete_ipaddress'
     permission_required = 'ipam.delete_ipaddress'
     queryset = IPAddress.objects.prefetch_related('vrf__tenant', 'tenant').prefetch_related('interface__device')
     queryset = IPAddress.objects.prefetch_related('vrf__tenant', 'tenant').prefetch_related('interface__device')
-    filter = filters.IPAddressFilter
+    filter = filters.IPAddressFilterSet
     table = tables.IPAddressTable
     table = tables.IPAddressTable
     default_return_url = 'ipam:ipaddress_list'
     default_return_url = 'ipam:ipaddress_list'
 
 
@@ -817,7 +817,7 @@ class IPAddressBulkDeleteView(PermissionRequiredMixin, BulkDeleteView):
 class VLANGroupListView(PermissionRequiredMixin, ObjectListView):
 class VLANGroupListView(PermissionRequiredMixin, ObjectListView):
     permission_required = 'ipam.view_vlangroup'
     permission_required = 'ipam.view_vlangroup'
     queryset = VLANGroup.objects.prefetch_related('site').annotate(vlan_count=Count('vlans'))
     queryset = VLANGroup.objects.prefetch_related('site').annotate(vlan_count=Count('vlans'))
-    filter = filters.VLANGroupFilter
+    filter = filters.VLANGroupFilterSet
     filter_form = forms.VLANGroupFilterForm
     filter_form = forms.VLANGroupFilterForm
     table = tables.VLANGroupTable
     table = tables.VLANGroupTable
     template_name = 'ipam/vlangroup_list.html'
     template_name = 'ipam/vlangroup_list.html'
@@ -844,7 +844,7 @@ class VLANGroupBulkImportView(PermissionRequiredMixin, BulkImportView):
 class VLANGroupBulkDeleteView(PermissionRequiredMixin, BulkDeleteView):
 class VLANGroupBulkDeleteView(PermissionRequiredMixin, BulkDeleteView):
     permission_required = 'ipam.delete_vlangroup'
     permission_required = 'ipam.delete_vlangroup'
     queryset = VLANGroup.objects.prefetch_related('site').annotate(vlan_count=Count('vlans'))
     queryset = VLANGroup.objects.prefetch_related('site').annotate(vlan_count=Count('vlans'))
-    filter = filters.VLANGroupFilter
+    filter = filters.VLANGroupFilterSet
     table = tables.VLANGroupTable
     table = tables.VLANGroupTable
     default_return_url = 'ipam:vlangroup_list'
     default_return_url = 'ipam:vlangroup_list'
 
 
@@ -893,7 +893,7 @@ class VLANGroupVLANsView(PermissionRequiredMixin, View):
 class VLANListView(PermissionRequiredMixin, ObjectListView):
 class VLANListView(PermissionRequiredMixin, ObjectListView):
     permission_required = 'ipam.view_vlan'
     permission_required = 'ipam.view_vlan'
     queryset = VLAN.objects.prefetch_related('site', 'group', 'tenant', 'role').prefetch_related('prefixes')
     queryset = VLAN.objects.prefetch_related('site', 'group', 'tenant', 'role').prefetch_related('prefixes')
-    filter = filters.VLANFilter
+    filter = filters.VLANFilterSet
     filter_form = forms.VLANFilterForm
     filter_form = forms.VLANFilterForm
     table = tables.VLANDetailTable
     table = tables.VLANDetailTable
     template_name = 'ipam/vlan_list.html'
     template_name = 'ipam/vlan_list.html'
@@ -968,7 +968,7 @@ class VLANBulkImportView(PermissionRequiredMixin, BulkImportView):
 class VLANBulkEditView(PermissionRequiredMixin, BulkEditView):
 class VLANBulkEditView(PermissionRequiredMixin, BulkEditView):
     permission_required = 'ipam.change_vlan'
     permission_required = 'ipam.change_vlan'
     queryset = VLAN.objects.prefetch_related('site', 'group', 'tenant', 'role')
     queryset = VLAN.objects.prefetch_related('site', 'group', 'tenant', 'role')
-    filter = filters.VLANFilter
+    filter = filters.VLANFilterSet
     table = tables.VLANTable
     table = tables.VLANTable
     form = forms.VLANBulkEditForm
     form = forms.VLANBulkEditForm
     default_return_url = 'ipam:vlan_list'
     default_return_url = 'ipam:vlan_list'
@@ -977,7 +977,7 @@ class VLANBulkEditView(PermissionRequiredMixin, BulkEditView):
 class VLANBulkDeleteView(PermissionRequiredMixin, BulkDeleteView):
 class VLANBulkDeleteView(PermissionRequiredMixin, BulkDeleteView):
     permission_required = 'ipam.delete_vlan'
     permission_required = 'ipam.delete_vlan'
     queryset = VLAN.objects.prefetch_related('site', 'group', 'tenant', 'role')
     queryset = VLAN.objects.prefetch_related('site', 'group', 'tenant', 'role')
-    filter = filters.VLANFilter
+    filter = filters.VLANFilterSet
     table = tables.VLANTable
     table = tables.VLANTable
     default_return_url = 'ipam:vlan_list'
     default_return_url = 'ipam:vlan_list'
 
 
@@ -989,7 +989,7 @@ class VLANBulkDeleteView(PermissionRequiredMixin, BulkDeleteView):
 class ServiceListView(PermissionRequiredMixin, ObjectListView):
 class ServiceListView(PermissionRequiredMixin, ObjectListView):
     permission_required = 'ipam.view_service'
     permission_required = 'ipam.view_service'
     queryset = Service.objects.prefetch_related('device', 'virtual_machine')
     queryset = Service.objects.prefetch_related('device', 'virtual_machine')
-    filter = filters.ServiceFilter
+    filter = filters.ServiceFilterSet
     filter_form = forms.ServiceFilterForm
     filter_form = forms.ServiceFilterForm
     table = tables.ServiceTable
     table = tables.ServiceTable
     template_name = 'ipam/service_list.html'
     template_name = 'ipam/service_list.html'
@@ -1036,7 +1036,7 @@ class ServiceDeleteView(PermissionRequiredMixin, ObjectDeleteView):
 class ServiceBulkEditView(PermissionRequiredMixin, BulkEditView):
 class ServiceBulkEditView(PermissionRequiredMixin, BulkEditView):
     permission_required = 'ipam.change_service'
     permission_required = 'ipam.change_service'
     queryset = Service.objects.prefetch_related('device', 'virtual_machine')
     queryset = Service.objects.prefetch_related('device', 'virtual_machine')
-    filter = filters.ServiceFilter
+    filter = filters.ServiceFilterSet
     table = tables.ServiceTable
     table = tables.ServiceTable
     form = forms.ServiceBulkEditForm
     form = forms.ServiceBulkEditForm
     default_return_url = 'ipam:service_list'
     default_return_url = 'ipam:service_list'
@@ -1045,6 +1045,6 @@ class ServiceBulkEditView(PermissionRequiredMixin, BulkEditView):
 class ServiceBulkDeleteView(PermissionRequiredMixin, BulkDeleteView):
 class ServiceBulkDeleteView(PermissionRequiredMixin, BulkDeleteView):
     permission_required = 'ipam.delete_service'
     permission_required = 'ipam.delete_service'
     queryset = Service.objects.prefetch_related('device', 'virtual_machine')
     queryset = Service.objects.prefetch_related('device', 'virtual_machine')
-    filter = filters.ServiceFilter
+    filter = filters.ServiceFilterSet
     table = tables.ServiceTable
     table = tables.ServiceTable
     default_return_url = 'ipam:service_list'
     default_return_url = 'ipam:service_list'

+ 6 - 6
netbox/netbox/views.py

@@ -22,7 +22,7 @@ from dcim.tables import (
     VirtualChassisTable,
     VirtualChassisTable,
 )
 )
 from extras.models import ObjectChange, ReportResult
 from extras.models import ObjectChange, ReportResult
-from ipam.filters import AggregateFilter, IPAddressFilter, PrefixFilter, VLANFilter, VRFFilter
+from ipam.filters import AggregateFilterSet, IPAddressFilterSet, PrefixFilterSet, VLANFilterSet, VRFFilterSet
 from ipam.models import Aggregate, IPAddress, Prefix, VLAN, VRF
 from ipam.models import Aggregate, IPAddress, Prefix, VLAN, VRF
 from ipam.tables import AggregateTable, IPAddressTable, PrefixTable, VLANTable, VRFTable
 from ipam.tables import AggregateTable, IPAddressTable, PrefixTable, VLANTable, VRFTable
 from secrets.filters import SecretFilter
 from secrets.filters import SecretFilter
@@ -143,35 +143,35 @@ SEARCH_TYPES = OrderedDict((
     ('vrf', {
     ('vrf', {
         'permission': 'ipam.view_vrf',
         'permission': 'ipam.view_vrf',
         'queryset': VRF.objects.prefetch_related('tenant'),
         'queryset': VRF.objects.prefetch_related('tenant'),
-        'filter': VRFFilter,
+        'filter': VRFFilterSet,
         'table': VRFTable,
         'table': VRFTable,
         'url': 'ipam:vrf_list',
         'url': 'ipam:vrf_list',
     }),
     }),
     ('aggregate', {
     ('aggregate', {
         'permission': 'ipam.view_aggregate',
         'permission': 'ipam.view_aggregate',
         'queryset': Aggregate.objects.prefetch_related('rir'),
         'queryset': Aggregate.objects.prefetch_related('rir'),
-        'filter': AggregateFilter,
+        'filter': AggregateFilterSet,
         'table': AggregateTable,
         'table': AggregateTable,
         'url': 'ipam:aggregate_list',
         'url': 'ipam:aggregate_list',
     }),
     }),
     ('prefix', {
     ('prefix', {
         'permission': 'ipam.view_prefix',
         'permission': 'ipam.view_prefix',
         'queryset': Prefix.objects.prefetch_related('site', 'vrf__tenant', 'tenant', 'vlan', 'role'),
         'queryset': Prefix.objects.prefetch_related('site', 'vrf__tenant', 'tenant', 'vlan', 'role'),
-        'filter': PrefixFilter,
+        'filter': PrefixFilterSet,
         'table': PrefixTable,
         'table': PrefixTable,
         'url': 'ipam:prefix_list',
         'url': 'ipam:prefix_list',
     }),
     }),
     ('ipaddress', {
     ('ipaddress', {
         'permission': 'ipam.view_ipaddress',
         'permission': 'ipam.view_ipaddress',
         'queryset': IPAddress.objects.prefetch_related('vrf__tenant', 'tenant'),
         'queryset': IPAddress.objects.prefetch_related('vrf__tenant', 'tenant'),
-        'filter': IPAddressFilter,
+        'filter': IPAddressFilterSet,
         'table': IPAddressTable,
         'table': IPAddressTable,
         'url': 'ipam:ipaddress_list',
         'url': 'ipam:ipaddress_list',
     }),
     }),
     ('vlan', {
     ('vlan', {
         'permission': 'ipam.view_vlan',
         'permission': 'ipam.view_vlan',
         'queryset': VLAN.objects.prefetch_related('site', 'group', 'tenant', 'role'),
         'queryset': VLAN.objects.prefetch_related('site', 'group', 'tenant', 'role'),
-        'filter': VLANFilter,
+        'filter': VLANFilterSet,
         'table': VLANTable,
         'table': VLANTable,
         'url': 'ipam:vlan_list',
         'url': 'ipam:vlan_list',
     }),
     }),