mirror of
https://github.com/netbox-community/netbox.git
synced 2025-07-16 04:02:52 -06:00
Merge pull request #3881 from netbox-community/3729-filterset-naming
Fixes #3729: Standardize FilterSet names
This commit is contained in:
commit
03b22594e8
@ -32,7 +32,7 @@ class ProviderViewSet(CustomFieldModelViewSet):
|
||||
circuit_count=Count('circuits')
|
||||
)
|
||||
serializer_class = serializers.ProviderSerializer
|
||||
filterset_class = filters.ProviderFilter
|
||||
filterset_class = filters.ProviderFilterSet
|
||||
|
||||
@action(detail=True)
|
||||
def graphs(self, request, pk):
|
||||
@ -54,7 +54,7 @@ class CircuitTypeViewSet(ModelViewSet):
|
||||
circuit_count=Count('circuits')
|
||||
)
|
||||
serializer_class = serializers.CircuitTypeSerializer
|
||||
filterset_class = filters.CircuitTypeFilter
|
||||
filterset_class = filters.CircuitTypeFilterSet
|
||||
|
||||
|
||||
#
|
||||
@ -64,7 +64,7 @@ class CircuitTypeViewSet(ModelViewSet):
|
||||
class CircuitViewSet(CustomFieldModelViewSet):
|
||||
queryset = Circuit.objects.prefetch_related('type', 'tenant', 'provider').prefetch_related('tags')
|
||||
serializer_class = serializers.CircuitSerializer
|
||||
filterset_class = filters.CircuitFilter
|
||||
filterset_class = filters.CircuitFilterSet
|
||||
|
||||
|
||||
#
|
||||
@ -76,4 +76,4 @@ class CircuitTerminationViewSet(ModelViewSet):
|
||||
'circuit', 'site', 'connected_endpoint__device', 'cable'
|
||||
)
|
||||
serializer_class = serializers.CircuitTerminationSerializer
|
||||
filterset_class = filters.CircuitTerminationFilter
|
||||
filterset_class = filters.CircuitTerminationFilterSet
|
||||
|
@ -3,20 +3,20 @@ from django.db.models import Q
|
||||
|
||||
from dcim.models import Region, Site
|
||||
from extras.filters import CustomFieldFilterSet, CreatedUpdatedFilterSet
|
||||
from tenancy.filtersets import TenancyFilterSet
|
||||
from tenancy.filters import TenancyFilterSet
|
||||
from utilities.filters import NameSlugSearchFilterSet, NumericInFilter, TagFilter, TreeNodeMultipleChoiceFilter
|
||||
from .choices import *
|
||||
from .models import Circuit, CircuitTermination, CircuitType, Provider
|
||||
|
||||
__all__ = (
|
||||
'CircuitFilter',
|
||||
'CircuitTerminationFilter',
|
||||
'CircuitTypeFilter',
|
||||
'ProviderFilter',
|
||||
'CircuitFilterSet',
|
||||
'CircuitTerminationFilterSet',
|
||||
'CircuitTypeFilterSet',
|
||||
'ProviderFilterSet',
|
||||
)
|
||||
|
||||
|
||||
class ProviderFilter(CustomFieldFilterSet, CreatedUpdatedFilterSet):
|
||||
class ProviderFilterSet(CustomFieldFilterSet, CreatedUpdatedFilterSet):
|
||||
id__in = NumericInFilter(
|
||||
field_name='id',
|
||||
lookup_expr='in'
|
||||
@ -65,14 +65,14 @@ class ProviderFilter(CustomFieldFilterSet, CreatedUpdatedFilterSet):
|
||||
)
|
||||
|
||||
|
||||
class CircuitTypeFilter(NameSlugSearchFilterSet):
|
||||
class CircuitTypeFilterSet(NameSlugSearchFilterSet):
|
||||
|
||||
class Meta:
|
||||
model = CircuitType
|
||||
fields = ['id', 'name', 'slug']
|
||||
|
||||
|
||||
class CircuitFilter(CustomFieldFilterSet, TenancyFilterSet, CreatedUpdatedFilterSet):
|
||||
class CircuitFilterSet(CustomFieldFilterSet, TenancyFilterSet, CreatedUpdatedFilterSet):
|
||||
id__in = NumericInFilter(
|
||||
field_name='id',
|
||||
lookup_expr='in'
|
||||
@ -146,7 +146,7 @@ class CircuitFilter(CustomFieldFilterSet, TenancyFilterSet, CreatedUpdatedFilter
|
||||
).distinct()
|
||||
|
||||
|
||||
class CircuitTerminationFilter(django_filters.FilterSet):
|
||||
class CircuitTerminationFilterSet(django_filters.FilterSet):
|
||||
q = django_filters.CharFilter(
|
||||
method='search',
|
||||
label='Search',
|
||||
|
@ -8,7 +8,7 @@ from dcim.models import Region, Site
|
||||
|
||||
class ProviderTestCase(TestCase):
|
||||
queryset = Provider.objects.all()
|
||||
filterset = ProviderFilter
|
||||
filterset = ProviderFilterSet
|
||||
|
||||
@classmethod
|
||||
def setUpTestData(cls):
|
||||
@ -91,7 +91,7 @@ class ProviderTestCase(TestCase):
|
||||
|
||||
class CircuitTypeTestCase(TestCase):
|
||||
queryset = CircuitType.objects.all()
|
||||
filterset = CircuitTypeFilter
|
||||
filterset = CircuitTypeFilterSet
|
||||
|
||||
@classmethod
|
||||
def setUpTestData(cls):
|
||||
@ -117,7 +117,7 @@ class CircuitTypeTestCase(TestCase):
|
||||
|
||||
class CircuitTestCase(TestCase):
|
||||
queryset = Circuit.objects.all()
|
||||
filterset = CircuitFilter
|
||||
filterset = CircuitFilterSet
|
||||
|
||||
@classmethod
|
||||
def setUpTestData(cls):
|
||||
@ -219,7 +219,7 @@ class CircuitTestCase(TestCase):
|
||||
|
||||
class CircuitTerminationTestCase(TestCase):
|
||||
queryset = CircuitTermination.objects.all()
|
||||
filterset = CircuitTerminationFilter
|
||||
filterset = CircuitTerminationFilterSet
|
||||
|
||||
@classmethod
|
||||
def setUpTestData(cls):
|
||||
|
@ -23,8 +23,8 @@ from .models import Circuit, CircuitTermination, CircuitType, Provider
|
||||
class ProviderListView(PermissionRequiredMixin, ObjectListView):
|
||||
permission_required = 'circuits.view_provider'
|
||||
queryset = Provider.objects.annotate(count_circuits=Count('circuits'))
|
||||
filter = filters.ProviderFilter
|
||||
filter_form = forms.ProviderFilterForm
|
||||
filterset = filters.ProviderFilterSet
|
||||
filterset_form = forms.ProviderFilterForm
|
||||
table = tables.ProviderDetailTable
|
||||
template_name = 'circuits/provider_list.html'
|
||||
|
||||
@ -73,7 +73,7 @@ class ProviderBulkImportView(PermissionRequiredMixin, BulkImportView):
|
||||
class ProviderBulkEditView(PermissionRequiredMixin, BulkEditView):
|
||||
permission_required = 'circuits.change_provider'
|
||||
queryset = Provider.objects.all()
|
||||
filter = filters.ProviderFilter
|
||||
filterset = filters.ProviderFilterSet
|
||||
table = tables.ProviderTable
|
||||
form = forms.ProviderBulkEditForm
|
||||
default_return_url = 'circuits:provider_list'
|
||||
@ -82,7 +82,7 @@ class ProviderBulkEditView(PermissionRequiredMixin, BulkEditView):
|
||||
class ProviderBulkDeleteView(PermissionRequiredMixin, BulkDeleteView):
|
||||
permission_required = 'circuits.delete_provider'
|
||||
queryset = Provider.objects.all()
|
||||
filter = filters.ProviderFilter
|
||||
filterset = filters.ProviderFilterSet
|
||||
table = tables.ProviderTable
|
||||
default_return_url = 'circuits:provider_list'
|
||||
|
||||
@ -136,8 +136,8 @@ class CircuitListView(PermissionRequiredMixin, ObjectListView):
|
||||
a_side=Subquery(_terminations.filter(term_side='A').values('site__name')[:1]),
|
||||
z_side=Subquery(_terminations.filter(term_side='Z').values('site__name')[:1]),
|
||||
)
|
||||
filter = filters.CircuitFilter
|
||||
filter_form = forms.CircuitFilterForm
|
||||
filterset = filters.CircuitFilterSet
|
||||
filterset_form = forms.CircuitFilterForm
|
||||
table = tables.CircuitTable
|
||||
template_name = 'circuits/circuit_list.html'
|
||||
|
||||
@ -194,7 +194,7 @@ class CircuitBulkImportView(PermissionRequiredMixin, BulkImportView):
|
||||
class CircuitBulkEditView(PermissionRequiredMixin, BulkEditView):
|
||||
permission_required = 'circuits.change_circuit'
|
||||
queryset = Circuit.objects.prefetch_related('provider', 'type', 'tenant').prefetch_related('terminations__site')
|
||||
filter = filters.CircuitFilter
|
||||
filterset = filters.CircuitFilterSet
|
||||
table = tables.CircuitTable
|
||||
form = forms.CircuitBulkEditForm
|
||||
default_return_url = 'circuits:circuit_list'
|
||||
@ -203,7 +203,7 @@ class CircuitBulkEditView(PermissionRequiredMixin, BulkEditView):
|
||||
class CircuitBulkDeleteView(PermissionRequiredMixin, BulkDeleteView):
|
||||
permission_required = 'circuits.delete_circuit'
|
||||
queryset = Circuit.objects.prefetch_related('provider', 'type', 'tenant').prefetch_related('terminations__site')
|
||||
filter = filters.CircuitFilter
|
||||
filterset = filters.CircuitFilterSet
|
||||
table = tables.CircuitTable
|
||||
default_return_url = 'circuits:circuit_list'
|
||||
|
||||
|
@ -106,7 +106,7 @@ class RegionViewSet(ModelViewSet):
|
||||
site_count=Count('sites')
|
||||
)
|
||||
serializer_class = serializers.RegionSerializer
|
||||
filterset_class = filters.RegionFilter
|
||||
filterset_class = filters.RegionFilterSet
|
||||
|
||||
|
||||
#
|
||||
@ -125,7 +125,7 @@ class SiteViewSet(CustomFieldModelViewSet):
|
||||
virtualmachine_count=get_subquery(VirtualMachine, 'cluster__site'),
|
||||
)
|
||||
serializer_class = serializers.SiteSerializer
|
||||
filterset_class = filters.SiteFilter
|
||||
filterset_class = filters.SiteFilterSet
|
||||
|
||||
@action(detail=True)
|
||||
def graphs(self, request, pk):
|
||||
@ -147,7 +147,7 @@ class RackGroupViewSet(ModelViewSet):
|
||||
rack_count=Count('racks')
|
||||
)
|
||||
serializer_class = serializers.RackGroupSerializer
|
||||
filterset_class = filters.RackGroupFilter
|
||||
filterset_class = filters.RackGroupFilterSet
|
||||
|
||||
|
||||
#
|
||||
@ -159,7 +159,7 @@ class RackRoleViewSet(ModelViewSet):
|
||||
rack_count=Count('racks')
|
||||
)
|
||||
serializer_class = serializers.RackRoleSerializer
|
||||
filterset_class = filters.RackRoleFilter
|
||||
filterset_class = filters.RackRoleFilterSet
|
||||
|
||||
|
||||
#
|
||||
@ -174,7 +174,7 @@ class RackViewSet(CustomFieldModelViewSet):
|
||||
powerfeed_count=get_subquery(PowerFeed, 'rack')
|
||||
)
|
||||
serializer_class = serializers.RackSerializer
|
||||
filterset_class = filters.RackFilter
|
||||
filterset_class = filters.RackFilterSet
|
||||
|
||||
@swagger_auto_schema(deprecated=True)
|
||||
@action(detail=True)
|
||||
@ -244,7 +244,7 @@ class RackViewSet(CustomFieldModelViewSet):
|
||||
class RackReservationViewSet(ModelViewSet):
|
||||
queryset = RackReservation.objects.prefetch_related('rack', 'user', 'tenant')
|
||||
serializer_class = serializers.RackReservationSerializer
|
||||
filterset_class = filters.RackReservationFilter
|
||||
filterset_class = filters.RackReservationFilterSet
|
||||
|
||||
# Assign user from request
|
||||
def perform_create(self, serializer):
|
||||
@ -262,7 +262,7 @@ class ManufacturerViewSet(ModelViewSet):
|
||||
platform_count=get_subquery(Platform, 'manufacturer')
|
||||
)
|
||||
serializer_class = serializers.ManufacturerSerializer
|
||||
filterset_class = filters.ManufacturerFilter
|
||||
filterset_class = filters.ManufacturerFilterSet
|
||||
|
||||
|
||||
#
|
||||
@ -274,7 +274,7 @@ class DeviceTypeViewSet(CustomFieldModelViewSet):
|
||||
device_count=Count('instances')
|
||||
)
|
||||
serializer_class = serializers.DeviceTypeSerializer
|
||||
filterset_class = filters.DeviceTypeFilter
|
||||
filterset_class = filters.DeviceTypeFilterSet
|
||||
|
||||
|
||||
#
|
||||
@ -284,49 +284,49 @@ class DeviceTypeViewSet(CustomFieldModelViewSet):
|
||||
class ConsolePortTemplateViewSet(ModelViewSet):
|
||||
queryset = ConsolePortTemplate.objects.prefetch_related('device_type__manufacturer')
|
||||
serializer_class = serializers.ConsolePortTemplateSerializer
|
||||
filterset_class = filters.ConsolePortTemplateFilter
|
||||
filterset_class = filters.ConsolePortTemplateFilterSet
|
||||
|
||||
|
||||
class ConsoleServerPortTemplateViewSet(ModelViewSet):
|
||||
queryset = ConsoleServerPortTemplate.objects.prefetch_related('device_type__manufacturer')
|
||||
serializer_class = serializers.ConsoleServerPortTemplateSerializer
|
||||
filterset_class = filters.ConsoleServerPortTemplateFilter
|
||||
filterset_class = filters.ConsoleServerPortTemplateFilterSet
|
||||
|
||||
|
||||
class PowerPortTemplateViewSet(ModelViewSet):
|
||||
queryset = PowerPortTemplate.objects.prefetch_related('device_type__manufacturer')
|
||||
serializer_class = serializers.PowerPortTemplateSerializer
|
||||
filterset_class = filters.PowerPortTemplateFilter
|
||||
filterset_class = filters.PowerPortTemplateFilterSet
|
||||
|
||||
|
||||
class PowerOutletTemplateViewSet(ModelViewSet):
|
||||
queryset = PowerOutletTemplate.objects.prefetch_related('device_type__manufacturer')
|
||||
serializer_class = serializers.PowerOutletTemplateSerializer
|
||||
filterset_class = filters.PowerOutletTemplateFilter
|
||||
filterset_class = filters.PowerOutletTemplateFilterSet
|
||||
|
||||
|
||||
class InterfaceTemplateViewSet(ModelViewSet):
|
||||
queryset = InterfaceTemplate.objects.prefetch_related('device_type__manufacturer')
|
||||
serializer_class = serializers.InterfaceTemplateSerializer
|
||||
filterset_class = filters.InterfaceTemplateFilter
|
||||
filterset_class = filters.InterfaceTemplateFilterSet
|
||||
|
||||
|
||||
class FrontPortTemplateViewSet(ModelViewSet):
|
||||
queryset = FrontPortTemplate.objects.prefetch_related('device_type__manufacturer')
|
||||
serializer_class = serializers.FrontPortTemplateSerializer
|
||||
filterset_class = filters.FrontPortTemplateFilter
|
||||
filterset_class = filters.FrontPortTemplateFilterSet
|
||||
|
||||
|
||||
class RearPortTemplateViewSet(ModelViewSet):
|
||||
queryset = RearPortTemplate.objects.prefetch_related('device_type__manufacturer')
|
||||
serializer_class = serializers.RearPortTemplateSerializer
|
||||
filterset_class = filters.RearPortTemplateFilter
|
||||
filterset_class = filters.RearPortTemplateFilterSet
|
||||
|
||||
|
||||
class DeviceBayTemplateViewSet(ModelViewSet):
|
||||
queryset = DeviceBayTemplate.objects.prefetch_related('device_type__manufacturer')
|
||||
serializer_class = serializers.DeviceBayTemplateSerializer
|
||||
filterset_class = filters.DeviceBayTemplateFilter
|
||||
filterset_class = filters.DeviceBayTemplateFilterSet
|
||||
|
||||
|
||||
#
|
||||
@ -339,7 +339,7 @@ class DeviceRoleViewSet(ModelViewSet):
|
||||
virtualmachine_count=get_subquery(VirtualMachine, 'role')
|
||||
)
|
||||
serializer_class = serializers.DeviceRoleSerializer
|
||||
filterset_class = filters.DeviceRoleFilter
|
||||
filterset_class = filters.DeviceRoleFilterSet
|
||||
|
||||
|
||||
#
|
||||
@ -352,7 +352,7 @@ class PlatformViewSet(ModelViewSet):
|
||||
virtualmachine_count=get_subquery(VirtualMachine, 'platform')
|
||||
)
|
||||
serializer_class = serializers.PlatformSerializer
|
||||
filterset_class = filters.PlatformFilter
|
||||
filterset_class = filters.PlatformFilterSet
|
||||
|
||||
|
||||
#
|
||||
@ -364,7 +364,7 @@ class DeviceViewSet(CustomFieldModelViewSet):
|
||||
'device_type__manufacturer', 'device_role', 'tenant', 'platform', 'site', 'rack', 'parent_bay',
|
||||
'virtual_chassis__master', 'primary_ip4__nat_outside', 'primary_ip6__nat_outside', 'tags',
|
||||
)
|
||||
filterset_class = filters.DeviceFilter
|
||||
filterset_class = filters.DeviceFilterSet
|
||||
|
||||
def get_serializer_class(self):
|
||||
"""
|
||||
@ -503,13 +503,13 @@ class DeviceViewSet(CustomFieldModelViewSet):
|
||||
class ConsolePortViewSet(CableTraceMixin, ModelViewSet):
|
||||
queryset = ConsolePort.objects.prefetch_related('device', 'connected_endpoint__device', 'cable', 'tags')
|
||||
serializer_class = serializers.ConsolePortSerializer
|
||||
filterset_class = filters.ConsolePortFilter
|
||||
filterset_class = filters.ConsolePortFilterSet
|
||||
|
||||
|
||||
class ConsoleServerPortViewSet(CableTraceMixin, ModelViewSet):
|
||||
queryset = ConsoleServerPort.objects.prefetch_related('device', 'connected_endpoint__device', 'cable', 'tags')
|
||||
serializer_class = serializers.ConsoleServerPortSerializer
|
||||
filterset_class = filters.ConsoleServerPortFilter
|
||||
filterset_class = filters.ConsoleServerPortFilterSet
|
||||
|
||||
|
||||
class PowerPortViewSet(CableTraceMixin, ModelViewSet):
|
||||
@ -517,13 +517,13 @@ class PowerPortViewSet(CableTraceMixin, ModelViewSet):
|
||||
'device', '_connected_poweroutlet__device', '_connected_powerfeed', 'cable', 'tags'
|
||||
)
|
||||
serializer_class = serializers.PowerPortSerializer
|
||||
filterset_class = filters.PowerPortFilter
|
||||
filterset_class = filters.PowerPortFilterSet
|
||||
|
||||
|
||||
class PowerOutletViewSet(CableTraceMixin, ModelViewSet):
|
||||
queryset = PowerOutlet.objects.prefetch_related('device', 'connected_endpoint__device', 'cable', 'tags')
|
||||
serializer_class = serializers.PowerOutletSerializer
|
||||
filterset_class = filters.PowerOutletFilter
|
||||
filterset_class = filters.PowerOutletFilterSet
|
||||
|
||||
|
||||
class InterfaceViewSet(CableTraceMixin, ModelViewSet):
|
||||
@ -533,7 +533,7 @@ class InterfaceViewSet(CableTraceMixin, ModelViewSet):
|
||||
device__isnull=False
|
||||
)
|
||||
serializer_class = serializers.InterfaceSerializer
|
||||
filterset_class = filters.InterfaceFilter
|
||||
filterset_class = filters.InterfaceFilterSet
|
||||
|
||||
@action(detail=True)
|
||||
def graphs(self, request, pk):
|
||||
@ -549,25 +549,25 @@ class InterfaceViewSet(CableTraceMixin, ModelViewSet):
|
||||
class FrontPortViewSet(ModelViewSet):
|
||||
queryset = FrontPort.objects.prefetch_related('device__device_type__manufacturer', 'rear_port', 'cable', 'tags')
|
||||
serializer_class = serializers.FrontPortSerializer
|
||||
filterset_class = filters.FrontPortFilter
|
||||
filterset_class = filters.FrontPortFilterSet
|
||||
|
||||
|
||||
class RearPortViewSet(ModelViewSet):
|
||||
queryset = RearPort.objects.prefetch_related('device__device_type__manufacturer', 'cable', 'tags')
|
||||
serializer_class = serializers.RearPortSerializer
|
||||
filterset_class = filters.RearPortFilter
|
||||
filterset_class = filters.RearPortFilterSet
|
||||
|
||||
|
||||
class DeviceBayViewSet(ModelViewSet):
|
||||
queryset = DeviceBay.objects.prefetch_related('installed_device').prefetch_related('tags')
|
||||
serializer_class = serializers.DeviceBaySerializer
|
||||
filterset_class = filters.DeviceBayFilter
|
||||
filterset_class = filters.DeviceBayFilterSet
|
||||
|
||||
|
||||
class InventoryItemViewSet(ModelViewSet):
|
||||
queryset = InventoryItem.objects.prefetch_related('device', 'manufacturer').prefetch_related('tags')
|
||||
serializer_class = serializers.InventoryItemSerializer
|
||||
filterset_class = filters.InventoryItemFilter
|
||||
filterset_class = filters.InventoryItemFilterSet
|
||||
|
||||
|
||||
#
|
||||
@ -581,7 +581,7 @@ class ConsoleConnectionViewSet(ListModelMixin, GenericViewSet):
|
||||
connected_endpoint__isnull=False
|
||||
)
|
||||
serializer_class = serializers.ConsolePortSerializer
|
||||
filterset_class = filters.ConsoleConnectionFilter
|
||||
filterset_class = filters.ConsoleConnectionFilterSet
|
||||
|
||||
|
||||
class PowerConnectionViewSet(ListModelMixin, GenericViewSet):
|
||||
@ -591,7 +591,7 @@ class PowerConnectionViewSet(ListModelMixin, GenericViewSet):
|
||||
_connected_poweroutlet__isnull=False
|
||||
)
|
||||
serializer_class = serializers.PowerPortSerializer
|
||||
filterset_class = filters.PowerConnectionFilter
|
||||
filterset_class = filters.PowerConnectionFilterSet
|
||||
|
||||
|
||||
class InterfaceConnectionViewSet(ListModelMixin, GenericViewSet):
|
||||
@ -603,7 +603,7 @@ class InterfaceConnectionViewSet(ListModelMixin, GenericViewSet):
|
||||
pk__lt=F('_connected_interface')
|
||||
)
|
||||
serializer_class = serializers.InterfaceConnectionSerializer
|
||||
filterset_class = filters.InterfaceConnectionFilter
|
||||
filterset_class = filters.InterfaceConnectionFilterSet
|
||||
|
||||
|
||||
#
|
||||
@ -615,7 +615,7 @@ class CableViewSet(ModelViewSet):
|
||||
'termination_a', 'termination_b'
|
||||
)
|
||||
serializer_class = serializers.CableSerializer
|
||||
filterset_class = filters.CableFilter
|
||||
filterset_class = filters.CableFilterSet
|
||||
|
||||
|
||||
#
|
||||
@ -627,7 +627,7 @@ class VirtualChassisViewSet(ModelViewSet):
|
||||
member_count=Count('members')
|
||||
)
|
||||
serializer_class = serializers.VirtualChassisSerializer
|
||||
filterset_class = filters.VirtualChassisFilter
|
||||
filterset_class = filters.VirtualChassisFilterSet
|
||||
|
||||
|
||||
#
|
||||
@ -641,7 +641,7 @@ class PowerPanelViewSet(ModelViewSet):
|
||||
powerfeed_count=Count('powerfeeds')
|
||||
)
|
||||
serializer_class = serializers.PowerPanelSerializer
|
||||
filterset_class = filters.PowerPanelFilter
|
||||
filterset_class = filters.PowerPanelFilterSet
|
||||
|
||||
|
||||
#
|
||||
@ -651,7 +651,7 @@ class PowerPanelViewSet(ModelViewSet):
|
||||
class PowerFeedViewSet(CustomFieldModelViewSet):
|
||||
queryset = PowerFeed.objects.prefetch_related('power_panel', 'rack', 'tags')
|
||||
serializer_class = serializers.PowerFeedSerializer
|
||||
filterset_class = filters.PowerFeedFilter
|
||||
filterset_class = filters.PowerFeedFilterSet
|
||||
|
||||
|
||||
#
|
||||
|
@ -2,8 +2,8 @@ import django_filters
|
||||
from django.contrib.auth.models import User
|
||||
from django.db.models import Q
|
||||
|
||||
from extras.filters import CustomFieldFilterSet, LocalConfigContextFilter, CreatedUpdatedFilterSet
|
||||
from tenancy.filtersets import TenancyFilterSet
|
||||
from extras.filters import CustomFieldFilterSet, LocalConfigContextFilterSet, CreatedUpdatedFilterSet
|
||||
from tenancy.filters import TenancyFilterSet
|
||||
from tenancy.models import Tenant
|
||||
from utilities.constants import COLOR_CHOICES
|
||||
from utilities.filters import (
|
||||
@ -23,45 +23,45 @@ from .models import (
|
||||
|
||||
|
||||
__all__ = (
|
||||
'CableFilter',
|
||||
'ConsoleConnectionFilter',
|
||||
'ConsolePortFilter',
|
||||
'ConsolePortTemplateFilter',
|
||||
'ConsoleServerPortFilter',
|
||||
'ConsoleServerPortTemplateFilter',
|
||||
'DeviceBayFilter',
|
||||
'DeviceBayTemplateFilter',
|
||||
'DeviceFilter',
|
||||
'DeviceRoleFilter',
|
||||
'DeviceTypeFilter',
|
||||
'FrontPortFilter',
|
||||
'FrontPortTemplateFilter',
|
||||
'InterfaceConnectionFilter',
|
||||
'InterfaceFilter',
|
||||
'InterfaceTemplateFilter',
|
||||
'InventoryItemFilter',
|
||||
'ManufacturerFilter',
|
||||
'PlatformFilter',
|
||||
'PowerConnectionFilter',
|
||||
'PowerFeedFilter',
|
||||
'PowerOutletFilter',
|
||||
'PowerOutletTemplateFilter',
|
||||
'PowerPanelFilter',
|
||||
'PowerPortFilter',
|
||||
'PowerPortTemplateFilter',
|
||||
'RackFilter',
|
||||
'RackGroupFilter',
|
||||
'RackReservationFilter',
|
||||
'RackRoleFilter',
|
||||
'RearPortFilter',
|
||||
'RearPortTemplateFilter',
|
||||
'RegionFilter',
|
||||
'SiteFilter',
|
||||
'VirtualChassisFilter',
|
||||
'CableFilterSet',
|
||||
'ConsoleConnectionFilterSet',
|
||||
'ConsolePortFilterSet',
|
||||
'ConsolePortTemplateFilterSet',
|
||||
'ConsoleServerPortFilterSet',
|
||||
'ConsoleServerPortTemplateFilterSet',
|
||||
'DeviceBayFilterSet',
|
||||
'DeviceBayTemplateFilterSet',
|
||||
'DeviceFilterSet',
|
||||
'DeviceRoleFilterSet',
|
||||
'DeviceTypeFilterSet',
|
||||
'FrontPortFilterSet',
|
||||
'FrontPortTemplateFilterSet',
|
||||
'InterfaceConnectionFilterSet',
|
||||
'InterfaceFilterSet',
|
||||
'InterfaceTemplateFilterSet',
|
||||
'InventoryItemFilterSet',
|
||||
'ManufacturerFilterSet',
|
||||
'PlatformFilterSet',
|
||||
'PowerConnectionFilterSet',
|
||||
'PowerFeedFilterSet',
|
||||
'PowerOutletFilterSet',
|
||||
'PowerOutletTemplateFilterSet',
|
||||
'PowerPanelFilterSet',
|
||||
'PowerPortFilterSet',
|
||||
'PowerPortTemplateFilterSet',
|
||||
'RackFilterSet',
|
||||
'RackGroupFilterSet',
|
||||
'RackReservationFilterSet',
|
||||
'RackRoleFilterSet',
|
||||
'RearPortFilterSet',
|
||||
'RearPortTemplateFilterSet',
|
||||
'RegionFilterSet',
|
||||
'SiteFilterSet',
|
||||
'VirtualChassisFilterSet',
|
||||
)
|
||||
|
||||
|
||||
class RegionFilter(NameSlugSearchFilterSet):
|
||||
class RegionFilterSet(NameSlugSearchFilterSet):
|
||||
parent_id = django_filters.ModelMultipleChoiceFilter(
|
||||
queryset=Region.objects.all(),
|
||||
label='Parent region (ID)',
|
||||
@ -78,7 +78,7 @@ class RegionFilter(NameSlugSearchFilterSet):
|
||||
fields = ['id', 'name', 'slug']
|
||||
|
||||
|
||||
class SiteFilter(TenancyFilterSet, CustomFieldFilterSet, CreatedUpdatedFilterSet):
|
||||
class SiteFilterSet(TenancyFilterSet, CustomFieldFilterSet, CreatedUpdatedFilterSet):
|
||||
id__in = NumericInFilter(
|
||||
field_name='id',
|
||||
lookup_expr='in'
|
||||
@ -132,7 +132,7 @@ class SiteFilter(TenancyFilterSet, CustomFieldFilterSet, CreatedUpdatedFilterSet
|
||||
return queryset.filter(qs_filter)
|
||||
|
||||
|
||||
class RackGroupFilter(NameSlugSearchFilterSet):
|
||||
class RackGroupFilterSet(NameSlugSearchFilterSet):
|
||||
region_id = TreeNodeMultipleChoiceFilter(
|
||||
queryset=Region.objects.all(),
|
||||
field_name='site__region__in',
|
||||
@ -160,14 +160,14 @@ class RackGroupFilter(NameSlugSearchFilterSet):
|
||||
fields = ['id', 'name', 'slug']
|
||||
|
||||
|
||||
class RackRoleFilter(NameSlugSearchFilterSet):
|
||||
class RackRoleFilterSet(NameSlugSearchFilterSet):
|
||||
|
||||
class Meta:
|
||||
model = RackRole
|
||||
fields = ['id', 'name', 'slug', 'color']
|
||||
|
||||
|
||||
class RackFilter(TenancyFilterSet, CustomFieldFilterSet, CreatedUpdatedFilterSet):
|
||||
class RackFilterSet(TenancyFilterSet, CustomFieldFilterSet, CreatedUpdatedFilterSet):
|
||||
id__in = NumericInFilter(
|
||||
field_name='id',
|
||||
lookup_expr='in'
|
||||
@ -245,7 +245,7 @@ class RackFilter(TenancyFilterSet, CustomFieldFilterSet, CreatedUpdatedFilterSet
|
||||
)
|
||||
|
||||
|
||||
class RackReservationFilter(TenancyFilterSet):
|
||||
class RackReservationFilterSet(TenancyFilterSet):
|
||||
id__in = NumericInFilter(
|
||||
field_name='id',
|
||||
lookup_expr='in'
|
||||
@ -306,14 +306,14 @@ class RackReservationFilter(TenancyFilterSet):
|
||||
)
|
||||
|
||||
|
||||
class ManufacturerFilter(NameSlugSearchFilterSet):
|
||||
class ManufacturerFilterSet(NameSlugSearchFilterSet):
|
||||
|
||||
class Meta:
|
||||
model = Manufacturer
|
||||
fields = ['id', 'name', 'slug']
|
||||
|
||||
|
||||
class DeviceTypeFilter(CustomFieldFilterSet, CreatedUpdatedFilterSet):
|
||||
class DeviceTypeFilterSet(CustomFieldFilterSet, CreatedUpdatedFilterSet):
|
||||
id__in = NumericInFilter(
|
||||
field_name='id',
|
||||
lookup_expr='in'
|
||||
@ -404,70 +404,70 @@ class DeviceTypeComponentFilterSet(NameSlugSearchFilterSet):
|
||||
)
|
||||
|
||||
|
||||
class ConsolePortTemplateFilter(DeviceTypeComponentFilterSet):
|
||||
class ConsolePortTemplateFilterSet(DeviceTypeComponentFilterSet):
|
||||
|
||||
class Meta:
|
||||
model = ConsolePortTemplate
|
||||
fields = ['id', 'name', 'type']
|
||||
|
||||
|
||||
class ConsoleServerPortTemplateFilter(DeviceTypeComponentFilterSet):
|
||||
class ConsoleServerPortTemplateFilterSet(DeviceTypeComponentFilterSet):
|
||||
|
||||
class Meta:
|
||||
model = ConsoleServerPortTemplate
|
||||
fields = ['id', 'name', 'type']
|
||||
|
||||
|
||||
class PowerPortTemplateFilter(DeviceTypeComponentFilterSet):
|
||||
class PowerPortTemplateFilterSet(DeviceTypeComponentFilterSet):
|
||||
|
||||
class Meta:
|
||||
model = PowerPortTemplate
|
||||
fields = ['id', 'name', 'type', 'maximum_draw', 'allocated_draw']
|
||||
|
||||
|
||||
class PowerOutletTemplateFilter(DeviceTypeComponentFilterSet):
|
||||
class PowerOutletTemplateFilterSet(DeviceTypeComponentFilterSet):
|
||||
|
||||
class Meta:
|
||||
model = PowerOutletTemplate
|
||||
fields = ['id', 'name', 'type', 'feed_leg']
|
||||
|
||||
|
||||
class InterfaceTemplateFilter(DeviceTypeComponentFilterSet):
|
||||
class InterfaceTemplateFilterSet(DeviceTypeComponentFilterSet):
|
||||
|
||||
class Meta:
|
||||
model = InterfaceTemplate
|
||||
fields = ['id', 'name', 'type', 'mgmt_only']
|
||||
|
||||
|
||||
class FrontPortTemplateFilter(DeviceTypeComponentFilterSet):
|
||||
class FrontPortTemplateFilterSet(DeviceTypeComponentFilterSet):
|
||||
|
||||
class Meta:
|
||||
model = FrontPortTemplate
|
||||
fields = ['id', 'name', 'type']
|
||||
|
||||
|
||||
class RearPortTemplateFilter(DeviceTypeComponentFilterSet):
|
||||
class RearPortTemplateFilterSet(DeviceTypeComponentFilterSet):
|
||||
|
||||
class Meta:
|
||||
model = RearPortTemplate
|
||||
fields = ['id', 'name', 'type', 'positions']
|
||||
|
||||
|
||||
class DeviceBayTemplateFilter(DeviceTypeComponentFilterSet):
|
||||
class DeviceBayTemplateFilterSet(DeviceTypeComponentFilterSet):
|
||||
|
||||
class Meta:
|
||||
model = DeviceBayTemplate
|
||||
fields = ['id', 'name']
|
||||
|
||||
|
||||
class DeviceRoleFilter(NameSlugSearchFilterSet):
|
||||
class DeviceRoleFilterSet(NameSlugSearchFilterSet):
|
||||
|
||||
class Meta:
|
||||
model = DeviceRole
|
||||
fields = ['id', 'name', 'slug', 'color', 'vm_role']
|
||||
|
||||
|
||||
class PlatformFilter(NameSlugSearchFilterSet):
|
||||
class PlatformFilterSet(NameSlugSearchFilterSet):
|
||||
manufacturer_id = django_filters.ModelMultipleChoiceFilter(
|
||||
field_name='manufacturer',
|
||||
queryset=Manufacturer.objects.all(),
|
||||
@ -485,7 +485,7 @@ class PlatformFilter(NameSlugSearchFilterSet):
|
||||
fields = ['id', 'name', 'slug', 'napalm_driver']
|
||||
|
||||
|
||||
class DeviceFilter(LocalConfigContextFilter, TenancyFilterSet, CustomFieldFilterSet, CreatedUpdatedFilterSet):
|
||||
class DeviceFilterSet(LocalConfigContextFilterSet, TenancyFilterSet, CustomFieldFilterSet, CreatedUpdatedFilterSet):
|
||||
id__in = NumericInFilter(
|
||||
field_name='id',
|
||||
lookup_expr='in'
|
||||
@ -723,7 +723,7 @@ class DeviceComponentFilterSet(django_filters.FilterSet):
|
||||
)
|
||||
|
||||
|
||||
class ConsolePortFilter(DeviceComponentFilterSet):
|
||||
class ConsolePortFilterSet(DeviceComponentFilterSet):
|
||||
type = django_filters.MultipleChoiceFilter(
|
||||
choices=ConsolePortTypeChoices,
|
||||
null_value=None
|
||||
@ -739,7 +739,7 @@ class ConsolePortFilter(DeviceComponentFilterSet):
|
||||
fields = ['id', 'name', 'description', 'connection_status']
|
||||
|
||||
|
||||
class ConsoleServerPortFilter(DeviceComponentFilterSet):
|
||||
class ConsoleServerPortFilterSet(DeviceComponentFilterSet):
|
||||
type = django_filters.MultipleChoiceFilter(
|
||||
choices=ConsolePortTypeChoices,
|
||||
null_value=None
|
||||
@ -755,7 +755,7 @@ class ConsoleServerPortFilter(DeviceComponentFilterSet):
|
||||
fields = ['id', 'name', 'description', 'connection_status']
|
||||
|
||||
|
||||
class PowerPortFilter(DeviceComponentFilterSet):
|
||||
class PowerPortFilterSet(DeviceComponentFilterSet):
|
||||
type = django_filters.MultipleChoiceFilter(
|
||||
choices=PowerPortTypeChoices,
|
||||
null_value=None
|
||||
@ -771,7 +771,7 @@ class PowerPortFilter(DeviceComponentFilterSet):
|
||||
fields = ['id', 'name', 'maximum_draw', 'allocated_draw', 'description', 'connection_status']
|
||||
|
||||
|
||||
class PowerOutletFilter(DeviceComponentFilterSet):
|
||||
class PowerOutletFilterSet(DeviceComponentFilterSet):
|
||||
type = django_filters.MultipleChoiceFilter(
|
||||
choices=PowerOutletTypeChoices,
|
||||
null_value=None
|
||||
@ -787,7 +787,7 @@ class PowerOutletFilter(DeviceComponentFilterSet):
|
||||
fields = ['id', 'name', 'feed_leg', 'description', 'connection_status']
|
||||
|
||||
|
||||
class InterfaceFilter(django_filters.FilterSet):
|
||||
class InterfaceFilterSet(django_filters.FilterSet):
|
||||
"""
|
||||
Not using DeviceComponentFilterSet for Interfaces because we need to check for VirtualChassis membership.
|
||||
"""
|
||||
@ -915,7 +915,7 @@ class InterfaceFilter(django_filters.FilterSet):
|
||||
}.get(value, queryset.none())
|
||||
|
||||
|
||||
class FrontPortFilter(DeviceComponentFilterSet):
|
||||
class FrontPortFilterSet(DeviceComponentFilterSet):
|
||||
cabled = django_filters.BooleanFilter(
|
||||
field_name='cable',
|
||||
lookup_expr='isnull',
|
||||
@ -927,7 +927,7 @@ class FrontPortFilter(DeviceComponentFilterSet):
|
||||
fields = ['id', 'name', 'type', 'description']
|
||||
|
||||
|
||||
class RearPortFilter(DeviceComponentFilterSet):
|
||||
class RearPortFilterSet(DeviceComponentFilterSet):
|
||||
cabled = django_filters.BooleanFilter(
|
||||
field_name='cable',
|
||||
lookup_expr='isnull',
|
||||
@ -939,14 +939,14 @@ class RearPortFilter(DeviceComponentFilterSet):
|
||||
fields = ['id', 'name', 'type', 'positions', 'description']
|
||||
|
||||
|
||||
class DeviceBayFilter(DeviceComponentFilterSet):
|
||||
class DeviceBayFilterSet(DeviceComponentFilterSet):
|
||||
|
||||
class Meta:
|
||||
model = DeviceBay
|
||||
fields = ['id', 'name', 'description']
|
||||
|
||||
|
||||
class InventoryItemFilter(DeviceComponentFilterSet):
|
||||
class InventoryItemFilterSet(DeviceComponentFilterSet):
|
||||
q = django_filters.CharFilter(
|
||||
method='search',
|
||||
label='Search',
|
||||
@ -1017,7 +1017,7 @@ class InventoryItemFilter(DeviceComponentFilterSet):
|
||||
return queryset.filter(qs_filter)
|
||||
|
||||
|
||||
class VirtualChassisFilter(django_filters.FilterSet):
|
||||
class VirtualChassisFilterSet(django_filters.FilterSet):
|
||||
q = django_filters.CharFilter(
|
||||
method='search',
|
||||
label='Search',
|
||||
@ -1071,7 +1071,7 @@ class VirtualChassisFilter(django_filters.FilterSet):
|
||||
return queryset.filter(qs_filter)
|
||||
|
||||
|
||||
class CableFilter(django_filters.FilterSet):
|
||||
class CableFilterSet(django_filters.FilterSet):
|
||||
q = django_filters.CharFilter(
|
||||
method='search',
|
||||
label='Search',
|
||||
@ -1126,7 +1126,7 @@ class CableFilter(django_filters.FilterSet):
|
||||
return queryset
|
||||
|
||||
|
||||
class ConsoleConnectionFilter(django_filters.FilterSet):
|
||||
class ConsoleConnectionFilterSet(django_filters.FilterSet):
|
||||
site = django_filters.CharFilter(
|
||||
method='filter_site',
|
||||
label='Site (slug)',
|
||||
@ -1157,7 +1157,7 @@ class ConsoleConnectionFilter(django_filters.FilterSet):
|
||||
)
|
||||
|
||||
|
||||
class PowerConnectionFilter(django_filters.FilterSet):
|
||||
class PowerConnectionFilterSet(django_filters.FilterSet):
|
||||
site = django_filters.CharFilter(
|
||||
method='filter_site',
|
||||
label='Site (slug)',
|
||||
@ -1188,7 +1188,7 @@ class PowerConnectionFilter(django_filters.FilterSet):
|
||||
)
|
||||
|
||||
|
||||
class InterfaceConnectionFilter(django_filters.FilterSet):
|
||||
class InterfaceConnectionFilterSet(django_filters.FilterSet):
|
||||
site = django_filters.CharFilter(
|
||||
method='filter_site',
|
||||
label='Site (slug)',
|
||||
@ -1222,7 +1222,7 @@ class InterfaceConnectionFilter(django_filters.FilterSet):
|
||||
)
|
||||
|
||||
|
||||
class PowerPanelFilter(django_filters.FilterSet):
|
||||
class PowerPanelFilterSet(django_filters.FilterSet):
|
||||
id__in = NumericInFilter(
|
||||
field_name='id',
|
||||
lookup_expr='in'
|
||||
@ -1271,7 +1271,7 @@ class PowerPanelFilter(django_filters.FilterSet):
|
||||
return queryset.filter(qs_filter)
|
||||
|
||||
|
||||
class PowerFeedFilter(CustomFieldFilterSet, CreatedUpdatedFilterSet):
|
||||
class PowerFeedFilterSet(CustomFieldFilterSet, CreatedUpdatedFilterSet):
|
||||
id__in = NumericInFilter(
|
||||
field_name='id',
|
||||
lookup_expr='in'
|
||||
|
@ -42,27 +42,27 @@ class RegionTestCase(TestCase):
|
||||
def test_id(self):
|
||||
id_list = self.queryset.values_list('id', flat=True)[:2]
|
||||
params = {'id': [str(id) for id in id_list]}
|
||||
self.assertEqual(RegionFilter(params, self.queryset).qs.count(), 2)
|
||||
self.assertEqual(RegionFilterSet(params, self.queryset).qs.count(), 2)
|
||||
|
||||
def test_name(self):
|
||||
params = {'name': ['Region 1', 'Region 2']}
|
||||
self.assertEqual(RegionFilter(params, self.queryset).qs.count(), 2)
|
||||
self.assertEqual(RegionFilterSet(params, self.queryset).qs.count(), 2)
|
||||
|
||||
def test_slug(self):
|
||||
params = {'slug': ['region-1', 'region-2']}
|
||||
self.assertEqual(RegionFilter(params, self.queryset).qs.count(), 2)
|
||||
self.assertEqual(RegionFilterSet(params, self.queryset).qs.count(), 2)
|
||||
|
||||
def test_parent(self):
|
||||
parent_regions = Region.objects.filter(parent__isnull=True)[:2]
|
||||
params = {'parent_id': [parent_regions[0].pk, parent_regions[1].pk]}
|
||||
self.assertEqual(RegionFilter(params, self.queryset).qs.count(), 4)
|
||||
self.assertEqual(RegionFilterSet(params, self.queryset).qs.count(), 4)
|
||||
params = {'parent': [parent_regions[0].slug, parent_regions[1].slug]}
|
||||
self.assertEqual(RegionFilter(params, self.queryset).qs.count(), 4)
|
||||
self.assertEqual(RegionFilterSet(params, self.queryset).qs.count(), 4)
|
||||
|
||||
|
||||
class SiteTestCase(TestCase):
|
||||
queryset = Site.objects.all()
|
||||
filterset = SiteFilter
|
||||
filterset = SiteFilterSet
|
||||
|
||||
@classmethod
|
||||
def setUpTestData(cls):
|
||||
@ -142,7 +142,7 @@ class SiteTestCase(TestCase):
|
||||
|
||||
class RackGroupTestCase(TestCase):
|
||||
queryset = RackGroup.objects.all()
|
||||
filterset = RackGroupFilter
|
||||
filterset = RackGroupFilterSet
|
||||
|
||||
@classmethod
|
||||
def setUpTestData(cls):
|
||||
@ -199,7 +199,7 @@ class RackGroupTestCase(TestCase):
|
||||
|
||||
class RackRoleTestCase(TestCase):
|
||||
queryset = RackRole.objects.all()
|
||||
filterset = RackRoleFilter
|
||||
filterset = RackRoleFilterSet
|
||||
|
||||
@classmethod
|
||||
def setUpTestData(cls):
|
||||
@ -231,7 +231,7 @@ class RackRoleTestCase(TestCase):
|
||||
|
||||
class RackTestCase(TestCase):
|
||||
queryset = Rack.objects.all()
|
||||
filterset = RackFilter
|
||||
filterset = RackFilterSet
|
||||
|
||||
@classmethod
|
||||
def setUpTestData(cls):
|
||||
@ -368,7 +368,7 @@ class RackTestCase(TestCase):
|
||||
|
||||
class RackReservationTestCase(TestCase):
|
||||
queryset = RackReservation.objects.all()
|
||||
filterset = RackReservationFilter
|
||||
filterset = RackReservationFilterSet
|
||||
|
||||
@classmethod
|
||||
def setUpTestData(cls):
|
||||
@ -438,7 +438,7 @@ class RackReservationTestCase(TestCase):
|
||||
|
||||
class ManufacturerTestCase(TestCase):
|
||||
queryset = Manufacturer.objects.all()
|
||||
filterset = ManufacturerFilter
|
||||
filterset = ManufacturerFilterSet
|
||||
|
||||
@classmethod
|
||||
def setUpTestData(cls):
|
||||
@ -466,7 +466,7 @@ class ManufacturerTestCase(TestCase):
|
||||
|
||||
class DeviceTypeTestCase(TestCase):
|
||||
queryset = DeviceType.objects.all()
|
||||
filterset = DeviceTypeFilter
|
||||
filterset = DeviceTypeFilterSet
|
||||
|
||||
@classmethod
|
||||
def setUpTestData(cls):
|
||||
@ -604,7 +604,7 @@ class DeviceTypeTestCase(TestCase):
|
||||
|
||||
class ConsolePortTemplateTestCase(TestCase):
|
||||
queryset = ConsolePortTemplate.objects.all()
|
||||
filterset = ConsolePortTemplateFilter
|
||||
filterset = ConsolePortTemplateFilterSet
|
||||
|
||||
@classmethod
|
||||
def setUpTestData(cls):
|
||||
@ -641,7 +641,7 @@ class ConsolePortTemplateTestCase(TestCase):
|
||||
|
||||
class ConsoleServerPortTemplateTestCase(TestCase):
|
||||
queryset = ConsoleServerPortTemplate.objects.all()
|
||||
filterset = ConsoleServerPortTemplateFilter
|
||||
filterset = ConsoleServerPortTemplateFilterSet
|
||||
|
||||
@classmethod
|
||||
def setUpTestData(cls):
|
||||
@ -678,7 +678,7 @@ class ConsoleServerPortTemplateTestCase(TestCase):
|
||||
|
||||
class PowerPortTemplateTestCase(TestCase):
|
||||
queryset = PowerPortTemplate.objects.all()
|
||||
filterset = PowerPortTemplateFilter
|
||||
filterset = PowerPortTemplateFilterSet
|
||||
|
||||
@classmethod
|
||||
def setUpTestData(cls):
|
||||
@ -723,7 +723,7 @@ class PowerPortTemplateTestCase(TestCase):
|
||||
|
||||
class PowerOutletTemplateTestCase(TestCase):
|
||||
queryset = PowerOutletTemplate.objects.all()
|
||||
filterset = PowerOutletTemplateFilter
|
||||
filterset = PowerOutletTemplateFilterSet
|
||||
|
||||
@classmethod
|
||||
def setUpTestData(cls):
|
||||
@ -765,7 +765,7 @@ class PowerOutletTemplateTestCase(TestCase):
|
||||
|
||||
class InterfaceTemplateTestCase(TestCase):
|
||||
queryset = InterfaceTemplate.objects.all()
|
||||
filterset = InterfaceTemplateFilter
|
||||
filterset = InterfaceTemplateFilterSet
|
||||
|
||||
@classmethod
|
||||
def setUpTestData(cls):
|
||||
@ -813,7 +813,7 @@ class InterfaceTemplateTestCase(TestCase):
|
||||
|
||||
class FrontPortTemplateTestCase(TestCase):
|
||||
queryset = FrontPortTemplate.objects.all()
|
||||
filterset = FrontPortTemplateFilter
|
||||
filterset = FrontPortTemplateFilterSet
|
||||
|
||||
@classmethod
|
||||
def setUpTestData(cls):
|
||||
@ -862,7 +862,7 @@ class FrontPortTemplateTestCase(TestCase):
|
||||
|
||||
class RearPortTemplateTestCase(TestCase):
|
||||
queryset = RearPortTemplate.objects.all()
|
||||
filterset = RearPortTemplateFilter
|
||||
filterset = RearPortTemplateFilterSet
|
||||
|
||||
@classmethod
|
||||
def setUpTestData(cls):
|
||||
@ -908,7 +908,7 @@ class RearPortTemplateTestCase(TestCase):
|
||||
|
||||
class DeviceBayTemplateTestCase(TestCase):
|
||||
queryset = DeviceBayTemplate.objects.all()
|
||||
filterset = DeviceBayTemplateFilter
|
||||
filterset = DeviceBayTemplateFilterSet
|
||||
|
||||
@classmethod
|
||||
def setUpTestData(cls):
|
||||
@ -945,7 +945,7 @@ class DeviceBayTemplateTestCase(TestCase):
|
||||
|
||||
class DeviceRoleTestCase(TestCase):
|
||||
queryset = DeviceRole.objects.all()
|
||||
filterset = DeviceRoleFilter
|
||||
filterset = DeviceRoleFilterSet
|
||||
|
||||
@classmethod
|
||||
def setUpTestData(cls):
|
||||
@ -983,7 +983,7 @@ class DeviceRoleTestCase(TestCase):
|
||||
|
||||
class PlatformTestCase(TestCase):
|
||||
queryset = Platform.objects.all()
|
||||
filterset = PlatformFilter
|
||||
filterset = PlatformFilterSet
|
||||
|
||||
@classmethod
|
||||
def setUpTestData(cls):
|
||||
@ -1029,7 +1029,7 @@ class PlatformTestCase(TestCase):
|
||||
|
||||
class DeviceTestCase(TestCase):
|
||||
queryset = Device.objects.all()
|
||||
filterset = DeviceFilter
|
||||
filterset = DeviceFilterSet
|
||||
|
||||
@classmethod
|
||||
def setUpTestData(cls):
|
||||
@ -1331,7 +1331,7 @@ class DeviceTestCase(TestCase):
|
||||
|
||||
class ConsolePortTestCase(TestCase):
|
||||
queryset = ConsolePort.objects.all()
|
||||
filterset = ConsolePortFilter
|
||||
filterset = ConsolePortFilterSet
|
||||
|
||||
@classmethod
|
||||
def setUpTestData(cls):
|
||||
@ -1401,7 +1401,7 @@ class ConsolePortTestCase(TestCase):
|
||||
|
||||
class ConsoleServerPortTestCase(TestCase):
|
||||
queryset = ConsoleServerPort.objects.all()
|
||||
filterset = ConsoleServerPortFilter
|
||||
filterset = ConsoleServerPortFilterSet
|
||||
|
||||
@classmethod
|
||||
def setUpTestData(cls):
|
||||
@ -1471,7 +1471,7 @@ class ConsoleServerPortTestCase(TestCase):
|
||||
|
||||
class PowerPortTestCase(TestCase):
|
||||
queryset = PowerPort.objects.all()
|
||||
filterset = PowerPortFilter
|
||||
filterset = PowerPortFilterSet
|
||||
|
||||
@classmethod
|
||||
def setUpTestData(cls):
|
||||
@ -1549,7 +1549,7 @@ class PowerPortTestCase(TestCase):
|
||||
|
||||
class PowerOutletTestCase(TestCase):
|
||||
queryset = PowerOutlet.objects.all()
|
||||
filterset = PowerOutletFilter
|
||||
filterset = PowerOutletFilterSet
|
||||
|
||||
@classmethod
|
||||
def setUpTestData(cls):
|
||||
@ -1624,7 +1624,7 @@ class PowerOutletTestCase(TestCase):
|
||||
|
||||
class InterfaceTestCase(TestCase):
|
||||
queryset = Interface.objects.all()
|
||||
filterset = InterfaceFilter
|
||||
filterset = InterfaceFilterSet
|
||||
|
||||
@classmethod
|
||||
def setUpTestData(cls):
|
||||
@ -1725,7 +1725,7 @@ class InterfaceTestCase(TestCase):
|
||||
|
||||
class FrontPortTestCase(TestCase):
|
||||
queryset = FrontPort.objects.all()
|
||||
filterset = FrontPortFilter
|
||||
filterset = FrontPortFilterSet
|
||||
|
||||
@classmethod
|
||||
def setUpTestData(cls):
|
||||
@ -1802,7 +1802,7 @@ class FrontPortTestCase(TestCase):
|
||||
|
||||
class RearPortTestCase(TestCase):
|
||||
queryset = RearPort.objects.all()
|
||||
filterset = RearPortFilter
|
||||
filterset = RearPortFilterSet
|
||||
|
||||
@classmethod
|
||||
def setUpTestData(cls):
|
||||
@ -1873,7 +1873,7 @@ class RearPortTestCase(TestCase):
|
||||
|
||||
class DeviceBayTestCase(TestCase):
|
||||
queryset = DeviceBay.objects.all()
|
||||
filterset = DeviceBayFilter
|
||||
filterset = DeviceBayFilterSet
|
||||
|
||||
@classmethod
|
||||
def setUpTestData(cls):
|
||||
@ -1920,7 +1920,7 @@ class DeviceBayTestCase(TestCase):
|
||||
|
||||
class InventoryItemTestCase(TestCase):
|
||||
queryset = InventoryItem.objects.all()
|
||||
filterset = InventoryItemFilter
|
||||
filterset = InventoryItemFilterSet
|
||||
|
||||
@classmethod
|
||||
def setUpTestData(cls):
|
||||
@ -2038,7 +2038,7 @@ class InventoryItemTestCase(TestCase):
|
||||
|
||||
class VirtualChassisTestCase(TestCase):
|
||||
queryset = VirtualChassis.objects.all()
|
||||
filterset = VirtualChassisFilter
|
||||
filterset = VirtualChassisFilterSet
|
||||
|
||||
@classmethod
|
||||
def setUpTestData(cls):
|
||||
@ -2109,7 +2109,7 @@ class VirtualChassisTestCase(TestCase):
|
||||
|
||||
class CableTestCase(TestCase):
|
||||
queryset = Cable.objects.all()
|
||||
filterset = CableFilter
|
||||
filterset = CableFilterSet
|
||||
|
||||
@classmethod
|
||||
def setUpTestData(cls):
|
||||
@ -2221,7 +2221,7 @@ class CableTestCase(TestCase):
|
||||
|
||||
class PowerPanelTestCase(TestCase):
|
||||
queryset = PowerPanel.objects.all()
|
||||
filterset = PowerPanelFilter
|
||||
filterset = PowerPanelFilterSet
|
||||
|
||||
@classmethod
|
||||
def setUpTestData(cls):
|
||||
@ -2281,7 +2281,7 @@ class PowerPanelTestCase(TestCase):
|
||||
|
||||
class PowerFeedTestCase(TestCase):
|
||||
queryset = PowerFeed.objects.all()
|
||||
filterset = PowerFeedFilter
|
||||
filterset = PowerFeedFilterSet
|
||||
|
||||
@classmethod
|
||||
def setUpTestData(cls):
|
||||
|
@ -148,8 +148,8 @@ class RegionListView(PermissionRequiredMixin, ObjectListView):
|
||||
'site_count',
|
||||
cumulative=True
|
||||
)
|
||||
filter = filters.RegionFilter
|
||||
filter_form = forms.RegionFilterForm
|
||||
filterset = filters.RegionFilterSet
|
||||
filterset_form = forms.RegionFilterForm
|
||||
table = tables.RegionTable
|
||||
template_name = 'dcim/region_list.html'
|
||||
|
||||
@ -175,7 +175,7 @@ class RegionBulkImportView(PermissionRequiredMixin, BulkImportView):
|
||||
class RegionBulkDeleteView(PermissionRequiredMixin, BulkDeleteView):
|
||||
permission_required = 'dcim.delete_region'
|
||||
queryset = Region.objects.all()
|
||||
filter = filters.RegionFilter
|
||||
filterset = filters.RegionFilterSet
|
||||
table = tables.RegionTable
|
||||
default_return_url = 'dcim:region_list'
|
||||
|
||||
@ -187,8 +187,8 @@ class RegionBulkDeleteView(PermissionRequiredMixin, BulkDeleteView):
|
||||
class SiteListView(PermissionRequiredMixin, ObjectListView):
|
||||
permission_required = 'dcim.view_site'
|
||||
queryset = Site.objects.prefetch_related('region', 'tenant')
|
||||
filter = filters.SiteFilter
|
||||
filter_form = forms.SiteFilterForm
|
||||
filterset = filters.SiteFilterSet
|
||||
filterset_form = forms.SiteFilterForm
|
||||
table = tables.SiteTable
|
||||
template_name = 'dcim/site_list.html'
|
||||
|
||||
@ -246,7 +246,7 @@ class SiteBulkImportView(PermissionRequiredMixin, BulkImportView):
|
||||
class SiteBulkEditView(PermissionRequiredMixin, BulkEditView):
|
||||
permission_required = 'dcim.change_site'
|
||||
queryset = Site.objects.prefetch_related('region', 'tenant')
|
||||
filter = filters.SiteFilter
|
||||
filterset = filters.SiteFilterSet
|
||||
table = tables.SiteTable
|
||||
form = forms.SiteBulkEditForm
|
||||
default_return_url = 'dcim:site_list'
|
||||
@ -255,7 +255,7 @@ class SiteBulkEditView(PermissionRequiredMixin, BulkEditView):
|
||||
class SiteBulkDeleteView(PermissionRequiredMixin, BulkDeleteView):
|
||||
permission_required = 'dcim.delete_site'
|
||||
queryset = Site.objects.prefetch_related('region', 'tenant')
|
||||
filter = filters.SiteFilter
|
||||
filterset = filters.SiteFilterSet
|
||||
table = tables.SiteTable
|
||||
default_return_url = 'dcim:site_list'
|
||||
|
||||
@ -267,8 +267,8 @@ class SiteBulkDeleteView(PermissionRequiredMixin, BulkDeleteView):
|
||||
class RackGroupListView(PermissionRequiredMixin, ObjectListView):
|
||||
permission_required = 'dcim.view_rackgroup'
|
||||
queryset = RackGroup.objects.prefetch_related('site').annotate(rack_count=Count('racks'))
|
||||
filter = filters.RackGroupFilter
|
||||
filter_form = forms.RackGroupFilterForm
|
||||
filterset = filters.RackGroupFilterSet
|
||||
filterset_form = forms.RackGroupFilterForm
|
||||
table = tables.RackGroupTable
|
||||
template_name = 'dcim/rackgroup_list.html'
|
||||
|
||||
@ -294,7 +294,7 @@ class RackGroupBulkImportView(PermissionRequiredMixin, BulkImportView):
|
||||
class RackGroupBulkDeleteView(PermissionRequiredMixin, BulkDeleteView):
|
||||
permission_required = 'dcim.delete_rackgroup'
|
||||
queryset = RackGroup.objects.prefetch_related('site').annotate(rack_count=Count('racks'))
|
||||
filter = filters.RackGroupFilter
|
||||
filterset = filters.RackGroupFilterSet
|
||||
table = tables.RackGroupTable
|
||||
default_return_url = 'dcim:rackgroup_list'
|
||||
|
||||
@ -346,8 +346,8 @@ class RackListView(PermissionRequiredMixin, ObjectListView):
|
||||
).annotate(
|
||||
device_count=Count('devices')
|
||||
)
|
||||
filter = filters.RackFilter
|
||||
filter_form = forms.RackFilterForm
|
||||
filterset = filters.RackFilterSet
|
||||
filterset_form = forms.RackFilterForm
|
||||
table = tables.RackDetailTable
|
||||
template_name = 'dcim/rack_list.html'
|
||||
|
||||
@ -361,7 +361,7 @@ class RackElevationListView(PermissionRequiredMixin, View):
|
||||
def get(self, request):
|
||||
|
||||
racks = Rack.objects.prefetch_related('site', 'group', 'tenant', 'role', 'devices__device_type')
|
||||
racks = filters.RackFilter(request.GET, racks).qs
|
||||
racks = filters.RackFilterSet(request.GET, racks).qs
|
||||
total_count = racks.count()
|
||||
|
||||
# Pagination
|
||||
@ -450,7 +450,7 @@ class RackBulkImportView(PermissionRequiredMixin, BulkImportView):
|
||||
class RackBulkEditView(PermissionRequiredMixin, BulkEditView):
|
||||
permission_required = 'dcim.change_rack'
|
||||
queryset = Rack.objects.prefetch_related('site', 'group', 'tenant', 'role')
|
||||
filter = filters.RackFilter
|
||||
filterset = filters.RackFilterSet
|
||||
table = tables.RackTable
|
||||
form = forms.RackBulkEditForm
|
||||
default_return_url = 'dcim:rack_list'
|
||||
@ -459,7 +459,7 @@ class RackBulkEditView(PermissionRequiredMixin, BulkEditView):
|
||||
class RackBulkDeleteView(PermissionRequiredMixin, BulkDeleteView):
|
||||
permission_required = 'dcim.delete_rack'
|
||||
queryset = Rack.objects.prefetch_related('site', 'group', 'tenant', 'role')
|
||||
filter = filters.RackFilter
|
||||
filterset = filters.RackFilterSet
|
||||
table = tables.RackTable
|
||||
default_return_url = 'dcim:rack_list'
|
||||
|
||||
@ -471,8 +471,8 @@ class RackBulkDeleteView(PermissionRequiredMixin, BulkDeleteView):
|
||||
class RackReservationListView(PermissionRequiredMixin, ObjectListView):
|
||||
permission_required = 'dcim.view_rackreservation'
|
||||
queryset = RackReservation.objects.prefetch_related('rack__site')
|
||||
filter = filters.RackReservationFilter
|
||||
filter_form = forms.RackReservationFilterForm
|
||||
filterset = filters.RackReservationFilterSet
|
||||
filterset_form = forms.RackReservationFilterForm
|
||||
table = tables.RackReservationTable
|
||||
template_name = 'dcim/rackreservation_list.html'
|
||||
|
||||
@ -507,7 +507,7 @@ class RackReservationDeleteView(PermissionRequiredMixin, ObjectDeleteView):
|
||||
class RackReservationBulkEditView(PermissionRequiredMixin, BulkEditView):
|
||||
permission_required = 'dcim.change_rackreservation'
|
||||
queryset = RackReservation.objects.prefetch_related('rack', 'user')
|
||||
filter = filters.RackReservationFilter
|
||||
filterset = filters.RackReservationFilterSet
|
||||
table = tables.RackReservationTable
|
||||
form = forms.RackReservationBulkEditForm
|
||||
default_return_url = 'dcim:rackreservation_list'
|
||||
@ -516,7 +516,7 @@ class RackReservationBulkEditView(PermissionRequiredMixin, BulkEditView):
|
||||
class RackReservationBulkDeleteView(PermissionRequiredMixin, BulkDeleteView):
|
||||
permission_required = 'dcim.delete_rackreservation'
|
||||
queryset = RackReservation.objects.prefetch_related('rack', 'user')
|
||||
filter = filters.RackReservationFilter
|
||||
filterset = filters.RackReservationFilterSet
|
||||
table = tables.RackReservationTable
|
||||
default_return_url = 'dcim:rackreservation_list'
|
||||
|
||||
@ -568,8 +568,8 @@ class ManufacturerBulkDeleteView(PermissionRequiredMixin, BulkDeleteView):
|
||||
class DeviceTypeListView(PermissionRequiredMixin, ObjectListView):
|
||||
permission_required = 'dcim.view_devicetype'
|
||||
queryset = DeviceType.objects.prefetch_related('manufacturer').annotate(instance_count=Count('instances'))
|
||||
filter = filters.DeviceTypeFilter
|
||||
filter_form = forms.DeviceTypeFilterForm
|
||||
filterset = filters.DeviceTypeFilterSet
|
||||
filterset_form = forms.DeviceTypeFilterForm
|
||||
table = tables.DeviceTypeTable
|
||||
template_name = 'dcim/devicetype_list.html'
|
||||
|
||||
@ -685,7 +685,7 @@ class DeviceTypeImportView(PermissionRequiredMixin, ObjectImportView):
|
||||
class DeviceTypeBulkEditView(PermissionRequiredMixin, BulkEditView):
|
||||
permission_required = 'dcim.change_devicetype'
|
||||
queryset = DeviceType.objects.prefetch_related('manufacturer').annotate(instance_count=Count('instances'))
|
||||
filter = filters.DeviceTypeFilter
|
||||
filterset = filters.DeviceTypeFilterSet
|
||||
table = tables.DeviceTypeTable
|
||||
form = forms.DeviceTypeBulkEditForm
|
||||
default_return_url = 'dcim:devicetype_list'
|
||||
@ -694,7 +694,7 @@ class DeviceTypeBulkEditView(PermissionRequiredMixin, BulkEditView):
|
||||
class DeviceTypeBulkDeleteView(PermissionRequiredMixin, BulkDeleteView):
|
||||
permission_required = 'dcim.delete_devicetype'
|
||||
queryset = DeviceType.objects.prefetch_related('manufacturer').annotate(instance_count=Count('instances'))
|
||||
filter = filters.DeviceTypeFilter
|
||||
filterset = filters.DeviceTypeFilterSet
|
||||
table = tables.DeviceTypeTable
|
||||
default_return_url = 'dcim:devicetype_list'
|
||||
|
||||
@ -976,8 +976,8 @@ class DeviceListView(PermissionRequiredMixin, ObjectListView):
|
||||
queryset = Device.objects.prefetch_related(
|
||||
'device_type__manufacturer', 'device_role', 'tenant', 'site', 'rack', 'primary_ip4', 'primary_ip6'
|
||||
)
|
||||
filter = filters.DeviceFilter
|
||||
filter_form = forms.DeviceFilterForm
|
||||
filterset = filters.DeviceFilterSet
|
||||
filterset_form = forms.DeviceFilterForm
|
||||
table = tables.DeviceDetailTable
|
||||
template_name = 'dcim/device_list.html'
|
||||
|
||||
@ -1176,7 +1176,7 @@ class ChildDeviceBulkImportView(PermissionRequiredMixin, BulkImportView):
|
||||
class DeviceBulkEditView(PermissionRequiredMixin, BulkEditView):
|
||||
permission_required = 'dcim.change_device'
|
||||
queryset = Device.objects.prefetch_related('tenant', 'site', 'rack', 'device_role', 'device_type__manufacturer')
|
||||
filter = filters.DeviceFilter
|
||||
filterset = filters.DeviceFilterSet
|
||||
table = tables.DeviceTable
|
||||
form = forms.DeviceBulkEditForm
|
||||
default_return_url = 'dcim:device_list'
|
||||
@ -1185,7 +1185,7 @@ class DeviceBulkEditView(PermissionRequiredMixin, BulkEditView):
|
||||
class DeviceBulkDeleteView(PermissionRequiredMixin, BulkDeleteView):
|
||||
permission_required = 'dcim.delete_device'
|
||||
queryset = Device.objects.prefetch_related('tenant', 'site', 'rack', 'device_role', 'device_type__manufacturer')
|
||||
filter = filters.DeviceFilter
|
||||
filterset = filters.DeviceFilterSet
|
||||
table = tables.DeviceTable
|
||||
default_return_url = 'dcim:device_list'
|
||||
|
||||
@ -1197,8 +1197,8 @@ class DeviceBulkDeleteView(PermissionRequiredMixin, BulkDeleteView):
|
||||
class ConsolePortListView(PermissionRequiredMixin, ObjectListView):
|
||||
permission_required = 'dcim.view_consoleport'
|
||||
queryset = ConsolePort.objects.prefetch_related('device', 'device__tenant', 'device__site', 'cable')
|
||||
filter = filters.ConsolePortFilter
|
||||
filter_form = forms.ConsolePortFilterForm
|
||||
filterset = filters.ConsolePortFilterSet
|
||||
filterset_form = forms.ConsolePortFilterForm
|
||||
table = tables.ConsolePortDetailTable
|
||||
template_name = 'dcim/device_component_list.html'
|
||||
|
||||
@ -1245,8 +1245,8 @@ class ConsolePortBulkDeleteView(PermissionRequiredMixin, BulkDeleteView):
|
||||
class ConsoleServerPortListView(PermissionRequiredMixin, ObjectListView):
|
||||
permission_required = 'dcim.view_consoleserverport'
|
||||
queryset = ConsoleServerPort.objects.prefetch_related('device', 'device__tenant', 'device__site', 'cable')
|
||||
filter = filters.ConsoleServerPortFilter
|
||||
filter_form = forms.ConsoleServerPortFilterForm
|
||||
filterset = filters.ConsoleServerPortFilterSet
|
||||
filterset_form = forms.ConsoleServerPortFilterForm
|
||||
table = tables.ConsoleServerPortDetailTable
|
||||
template_name = 'dcim/device_component_list.html'
|
||||
|
||||
@ -1313,8 +1313,8 @@ class ConsoleServerPortBulkDeleteView(PermissionRequiredMixin, BulkDeleteView):
|
||||
class PowerPortListView(PermissionRequiredMixin, ObjectListView):
|
||||
permission_required = 'dcim.view_powerport'
|
||||
queryset = PowerPort.objects.prefetch_related('device', 'device__tenant', 'device__site', 'cable')
|
||||
filter = filters.PowerPortFilter
|
||||
filter_form = forms.PowerPortFilterForm
|
||||
filterset = filters.PowerPortFilterSet
|
||||
filterset_form = forms.PowerPortFilterForm
|
||||
table = tables.PowerPortDetailTable
|
||||
template_name = 'dcim/device_component_list.html'
|
||||
|
||||
@ -1361,8 +1361,8 @@ class PowerPortBulkDeleteView(PermissionRequiredMixin, BulkDeleteView):
|
||||
class PowerOutletListView(PermissionRequiredMixin, ObjectListView):
|
||||
permission_required = 'dcim.view_poweroutlet'
|
||||
queryset = PowerOutlet.objects.prefetch_related('device', 'device__tenant', 'device__site', 'cable')
|
||||
filter = filters.PowerOutletFilter
|
||||
filter_form = forms.PowerOutletFilterForm
|
||||
filterset = filters.PowerOutletFilterSet
|
||||
filterset_form = forms.PowerOutletFilterForm
|
||||
table = tables.PowerOutletDetailTable
|
||||
template_name = 'dcim/device_component_list.html'
|
||||
|
||||
@ -1429,8 +1429,8 @@ class PowerOutletBulkDeleteView(PermissionRequiredMixin, BulkDeleteView):
|
||||
class InterfaceListView(PermissionRequiredMixin, ObjectListView):
|
||||
permission_required = 'dcim.view_interface'
|
||||
queryset = Interface.objects.prefetch_related('device', 'device__tenant', 'device__site', 'cable')
|
||||
filter = filters.InterfaceFilter
|
||||
filter_form = forms.InterfaceFilterForm
|
||||
filterset = filters.InterfaceFilterSet
|
||||
filterset_form = forms.InterfaceFilterForm
|
||||
table = tables.InterfaceDetailTable
|
||||
template_name = 'dcim/device_component_list.html'
|
||||
|
||||
@ -1534,8 +1534,8 @@ class InterfaceBulkDeleteView(PermissionRequiredMixin, BulkDeleteView):
|
||||
class FrontPortListView(PermissionRequiredMixin, ObjectListView):
|
||||
permission_required = 'dcim.view_frontport'
|
||||
queryset = FrontPort.objects.prefetch_related('device', 'device__tenant', 'device__site', 'cable')
|
||||
filter = filters.FrontPortFilter
|
||||
filter_form = forms.FrontPortFilterForm
|
||||
filterset = filters.FrontPortFilterSet
|
||||
filterset_form = forms.FrontPortFilterForm
|
||||
table = tables.FrontPortDetailTable
|
||||
template_name = 'dcim/device_component_list.html'
|
||||
|
||||
@ -1602,8 +1602,8 @@ class FrontPortBulkDeleteView(PermissionRequiredMixin, BulkDeleteView):
|
||||
class RearPortListView(PermissionRequiredMixin, ObjectListView):
|
||||
permission_required = 'dcim.view_rearport'
|
||||
queryset = RearPort.objects.prefetch_related('device', 'device__tenant', 'device__site', 'cable')
|
||||
filter = filters.RearPortFilter
|
||||
filter_form = forms.RearPortFilterForm
|
||||
filterset = filters.RearPortFilterSet
|
||||
filterset_form = forms.RearPortFilterForm
|
||||
table = tables.RearPortDetailTable
|
||||
template_name = 'dcim/device_component_list.html'
|
||||
|
||||
@ -1672,8 +1672,8 @@ class DeviceBayListView(PermissionRequiredMixin, ObjectListView):
|
||||
queryset = DeviceBay.objects.prefetch_related(
|
||||
'device', 'device__site', 'installed_device', 'installed_device__site'
|
||||
)
|
||||
filter = filters.DeviceBayFilter
|
||||
filter_form = forms.DeviceBayFilterForm
|
||||
filterset = filters.DeviceBayFilterSet
|
||||
filterset_form = forms.DeviceBayFilterForm
|
||||
table = tables.DeviceBayDetailTable
|
||||
template_name = 'dcim/device_component_list.html'
|
||||
|
||||
@ -1799,7 +1799,7 @@ class DeviceBulkAddConsolePortView(PermissionRequiredMixin, BulkComponentCreateV
|
||||
form = forms.DeviceBulkAddComponentForm
|
||||
model = ConsolePort
|
||||
model_form = forms.ConsolePortForm
|
||||
filter = filters.DeviceFilter
|
||||
filterset = filters.DeviceFilterSet
|
||||
table = tables.DeviceTable
|
||||
default_return_url = 'dcim:device_list'
|
||||
|
||||
@ -1811,7 +1811,7 @@ class DeviceBulkAddConsoleServerPortView(PermissionRequiredMixin, BulkComponentC
|
||||
form = forms.DeviceBulkAddComponentForm
|
||||
model = ConsoleServerPort
|
||||
model_form = forms.ConsoleServerPortForm
|
||||
filter = filters.DeviceFilter
|
||||
filterset = filters.DeviceFilterSet
|
||||
table = tables.DeviceTable
|
||||
default_return_url = 'dcim:device_list'
|
||||
|
||||
@ -1823,7 +1823,7 @@ class DeviceBulkAddPowerPortView(PermissionRequiredMixin, BulkComponentCreateVie
|
||||
form = forms.DeviceBulkAddComponentForm
|
||||
model = PowerPort
|
||||
model_form = forms.PowerPortForm
|
||||
filter = filters.DeviceFilter
|
||||
filterset = filters.DeviceFilterSet
|
||||
table = tables.DeviceTable
|
||||
default_return_url = 'dcim:device_list'
|
||||
|
||||
@ -1835,7 +1835,7 @@ class DeviceBulkAddPowerOutletView(PermissionRequiredMixin, BulkComponentCreateV
|
||||
form = forms.DeviceBulkAddComponentForm
|
||||
model = PowerOutlet
|
||||
model_form = forms.PowerOutletForm
|
||||
filter = filters.DeviceFilter
|
||||
filterset = filters.DeviceFilterSet
|
||||
table = tables.DeviceTable
|
||||
default_return_url = 'dcim:device_list'
|
||||
|
||||
@ -1847,7 +1847,7 @@ class DeviceBulkAddInterfaceView(PermissionRequiredMixin, BulkComponentCreateVie
|
||||
form = forms.DeviceBulkAddInterfaceForm
|
||||
model = Interface
|
||||
model_form = forms.InterfaceForm
|
||||
filter = filters.DeviceFilter
|
||||
filterset = filters.DeviceFilterSet
|
||||
table = tables.DeviceTable
|
||||
default_return_url = 'dcim:device_list'
|
||||
|
||||
@ -1859,7 +1859,7 @@ class DeviceBulkAddDeviceBayView(PermissionRequiredMixin, BulkComponentCreateVie
|
||||
form = forms.DeviceBulkAddComponentForm
|
||||
model = DeviceBay
|
||||
model_form = forms.DeviceBayForm
|
||||
filter = filters.DeviceFilter
|
||||
filterset = filters.DeviceFilterSet
|
||||
table = tables.DeviceTable
|
||||
default_return_url = 'dcim:device_list'
|
||||
|
||||
@ -1873,8 +1873,8 @@ class CableListView(PermissionRequiredMixin, ObjectListView):
|
||||
queryset = Cable.objects.prefetch_related(
|
||||
'termination_a', 'termination_b'
|
||||
)
|
||||
filter = filters.CableFilter
|
||||
filter_form = forms.CableFilterForm
|
||||
filterset = filters.CableFilterSet
|
||||
filterset_form = forms.CableFilterForm
|
||||
table = tables.CableTable
|
||||
template_name = 'dcim/cable_list.html'
|
||||
|
||||
@ -2010,7 +2010,7 @@ class CableBulkImportView(PermissionRequiredMixin, BulkImportView):
|
||||
class CableBulkEditView(PermissionRequiredMixin, BulkEditView):
|
||||
permission_required = 'dcim.change_cable'
|
||||
queryset = Cable.objects.prefetch_related('termination_a', 'termination_b')
|
||||
filter = filters.CableFilter
|
||||
filterset = filters.CableFilterSet
|
||||
table = tables.CableTable
|
||||
form = forms.CableBulkEditForm
|
||||
default_return_url = 'dcim:cable_list'
|
||||
@ -2019,7 +2019,7 @@ class CableBulkEditView(PermissionRequiredMixin, BulkEditView):
|
||||
class CableBulkDeleteView(PermissionRequiredMixin, BulkDeleteView):
|
||||
permission_required = 'dcim.delete_cable'
|
||||
queryset = Cable.objects.prefetch_related('termination_a', 'termination_b')
|
||||
filter = filters.CableFilter
|
||||
filterset = filters.CableFilterSet
|
||||
table = tables.CableTable
|
||||
default_return_url = 'dcim:cable_list'
|
||||
|
||||
@ -2037,8 +2037,8 @@ class ConsoleConnectionsListView(PermissionRequiredMixin, ObjectListView):
|
||||
).order_by(
|
||||
'cable', 'connected_endpoint__device__name', 'connected_endpoint__name'
|
||||
)
|
||||
filter = filters.ConsoleConnectionFilter
|
||||
filter_form = forms.ConsoleConnectionFilterForm
|
||||
filterset = filters.ConsoleConnectionFilterSet
|
||||
filterset_form = forms.ConsoleConnectionFilterForm
|
||||
table = tables.ConsoleConnectionTable
|
||||
template_name = 'dcim/console_connections_list.html'
|
||||
|
||||
@ -2068,8 +2068,8 @@ class PowerConnectionsListView(PermissionRequiredMixin, ObjectListView):
|
||||
).order_by(
|
||||
'cable', '_connected_poweroutlet__device__name', '_connected_poweroutlet__name'
|
||||
)
|
||||
filter = filters.PowerConnectionFilter
|
||||
filter_form = forms.PowerConnectionFilterForm
|
||||
filterset = filters.PowerConnectionFilterSet
|
||||
filterset_form = forms.PowerConnectionFilterForm
|
||||
table = tables.PowerConnectionTable
|
||||
template_name = 'dcim/power_connections_list.html'
|
||||
|
||||
@ -2101,8 +2101,8 @@ class InterfaceConnectionsListView(PermissionRequiredMixin, ObjectListView):
|
||||
).order_by(
|
||||
'device'
|
||||
)
|
||||
filter = filters.InterfaceConnectionFilter
|
||||
filter_form = forms.InterfaceConnectionFilterForm
|
||||
filterset = filters.InterfaceConnectionFilterSet
|
||||
filterset_form = forms.InterfaceConnectionFilterForm
|
||||
table = tables.InterfaceConnectionTable
|
||||
template_name = 'dcim/interface_connections_list.html'
|
||||
|
||||
@ -2136,8 +2136,8 @@ class InterfaceConnectionsListView(PermissionRequiredMixin, ObjectListView):
|
||||
class InventoryItemListView(PermissionRequiredMixin, ObjectListView):
|
||||
permission_required = 'dcim.view_inventoryitem'
|
||||
queryset = InventoryItem.objects.prefetch_related('device', 'manufacturer')
|
||||
filter = filters.InventoryItemFilter
|
||||
filter_form = forms.InventoryItemFilterForm
|
||||
filterset = filters.InventoryItemFilterSet
|
||||
filterset_form = forms.InventoryItemFilterForm
|
||||
table = tables.InventoryItemTable
|
||||
template_name = 'dcim/inventoryitem_list.html'
|
||||
|
||||
@ -2171,7 +2171,7 @@ class InventoryItemBulkImportView(PermissionRequiredMixin, BulkImportView):
|
||||
class InventoryItemBulkEditView(PermissionRequiredMixin, BulkEditView):
|
||||
permission_required = 'dcim.change_inventoryitem'
|
||||
queryset = InventoryItem.objects.prefetch_related('device', 'manufacturer')
|
||||
filter = filters.InventoryItemFilter
|
||||
filterset = filters.InventoryItemFilterSet
|
||||
table = tables.InventoryItemTable
|
||||
form = forms.InventoryItemBulkEditForm
|
||||
default_return_url = 'dcim:inventoryitem_list'
|
||||
@ -2193,8 +2193,8 @@ class VirtualChassisListView(PermissionRequiredMixin, ObjectListView):
|
||||
permission_required = 'dcim.view_virtualchassis'
|
||||
queryset = VirtualChassis.objects.prefetch_related('master').annotate(member_count=Count('members'))
|
||||
table = tables.VirtualChassisTable
|
||||
filter = filters.VirtualChassisFilter
|
||||
filter_form = forms.VirtualChassisFilterForm
|
||||
filterset = filters.VirtualChassisFilterSet
|
||||
filterset_form = forms.VirtualChassisFilterForm
|
||||
template_name = 'dcim/virtualchassis_list.html'
|
||||
|
||||
|
||||
@ -2436,8 +2436,8 @@ class PowerPanelListView(PermissionRequiredMixin, ObjectListView):
|
||||
).annotate(
|
||||
powerfeed_count=Count('powerfeeds')
|
||||
)
|
||||
filter = filters.PowerPanelFilter
|
||||
filter_form = forms.PowerPanelFilterForm
|
||||
filterset = filters.PowerPanelFilterSet
|
||||
filterset_form = forms.PowerPanelFilterForm
|
||||
table = tables.PowerPanelTable
|
||||
template_name = 'dcim/powerpanel_list.html'
|
||||
|
||||
@ -2491,7 +2491,7 @@ class PowerPanelBulkDeleteView(PermissionRequiredMixin, BulkDeleteView):
|
||||
).annotate(
|
||||
rack_count=Count('powerfeeds')
|
||||
)
|
||||
filter = filters.PowerPanelFilter
|
||||
filterset = filters.PowerPanelFilterSet
|
||||
table = tables.PowerPanelTable
|
||||
default_return_url = 'dcim:powerpanel_list'
|
||||
|
||||
@ -2505,8 +2505,8 @@ class PowerFeedListView(PermissionRequiredMixin, ObjectListView):
|
||||
queryset = PowerFeed.objects.prefetch_related(
|
||||
'power_panel', 'rack'
|
||||
)
|
||||
filter = filters.PowerFeedFilter
|
||||
filter_form = forms.PowerFeedFilterForm
|
||||
filterset = filters.PowerFeedFilterSet
|
||||
filterset_form = forms.PowerFeedFilterForm
|
||||
table = tables.PowerFeedTable
|
||||
template_name = 'dcim/powerfeed_list.html'
|
||||
|
||||
@ -2551,7 +2551,7 @@ class PowerFeedBulkImportView(PermissionRequiredMixin, BulkImportView):
|
||||
class PowerFeedBulkEditView(PermissionRequiredMixin, BulkEditView):
|
||||
permission_required = 'dcim.change_powerfeed'
|
||||
queryset = PowerFeed.objects.prefetch_related('power_panel', 'rack')
|
||||
filter = filters.PowerFeedFilter
|
||||
filterset = filters.PowerFeedFilterSet
|
||||
table = tables.PowerFeedTable
|
||||
form = forms.PowerFeedBulkEditForm
|
||||
default_return_url = 'dcim:powerfeed_list'
|
||||
@ -2560,6 +2560,6 @@ class PowerFeedBulkEditView(PermissionRequiredMixin, BulkEditView):
|
||||
class PowerFeedBulkDeleteView(PermissionRequiredMixin, BulkDeleteView):
|
||||
permission_required = 'dcim.delete_powerfeed'
|
||||
queryset = PowerFeed.objects.prefetch_related('power_panel', 'rack')
|
||||
filter = filters.PowerFeedFilter
|
||||
filterset = filters.PowerFeedFilterSet
|
||||
table = tables.PowerFeedTable
|
||||
default_return_url = 'dcim:powerfeed_list'
|
||||
|
@ -102,7 +102,7 @@ class CustomFieldModelViewSet(ModelViewSet):
|
||||
class GraphViewSet(ModelViewSet):
|
||||
queryset = Graph.objects.all()
|
||||
serializer_class = serializers.GraphSerializer
|
||||
filterset_class = filters.GraphFilter
|
||||
filterset_class = filters.GraphFilterSet
|
||||
|
||||
|
||||
#
|
||||
@ -112,7 +112,7 @@ class GraphViewSet(ModelViewSet):
|
||||
class ExportTemplateViewSet(ModelViewSet):
|
||||
queryset = ExportTemplate.objects.all()
|
||||
serializer_class = serializers.ExportTemplateSerializer
|
||||
filterset_class = filters.ExportTemplateFilter
|
||||
filterset_class = filters.ExportTemplateFilterSet
|
||||
|
||||
|
||||
#
|
||||
@ -124,7 +124,7 @@ class TagViewSet(ModelViewSet):
|
||||
tagged_items=Count('extras_taggeditem_items', distinct=True)
|
||||
)
|
||||
serializer_class = serializers.TagSerializer
|
||||
filterset_class = filters.TagFilter
|
||||
filterset_class = filters.TagFilterSet
|
||||
|
||||
|
||||
#
|
||||
@ -145,7 +145,7 @@ class ConfigContextViewSet(ModelViewSet):
|
||||
'regions', 'sites', 'roles', 'platforms', 'tenant_groups', 'tenants',
|
||||
)
|
||||
serializer_class = serializers.ConfigContextSerializer
|
||||
filterset_class = filters.ConfigContextFilter
|
||||
filterset_class = filters.ConfigContextFilterSet
|
||||
|
||||
|
||||
#
|
||||
@ -284,4 +284,4 @@ class ObjectChangeViewSet(ReadOnlyModelViewSet):
|
||||
"""
|
||||
queryset = ObjectChange.objects.prefetch_related('user')
|
||||
serializer_class = serializers.ObjectChangeSerializer
|
||||
filterset_class = filters.ObjectChangeFilter
|
||||
filterset_class = filters.ObjectChangeFilterSet
|
||||
|
@ -9,15 +9,15 @@ from .models import ConfigContext, CustomField, Graph, ExportTemplate, ObjectCha
|
||||
|
||||
|
||||
__all__ = (
|
||||
'ConfigContextFilter',
|
||||
'ConfigContextFilterSet',
|
||||
'CreatedUpdatedFilterSet',
|
||||
'CustomFieldFilter',
|
||||
'CustomFieldFilterSet',
|
||||
'ExportTemplateFilter',
|
||||
'GraphFilter',
|
||||
'LocalConfigContextFilter',
|
||||
'ObjectChangeFilter',
|
||||
'TagFilter',
|
||||
'ExportTemplateFilterSet',
|
||||
'GraphFilterSet',
|
||||
'LocalConfigContextFilterSet',
|
||||
'ObjectChangeFilterSet',
|
||||
'TagFilterSet',
|
||||
)
|
||||
|
||||
|
||||
@ -88,21 +88,21 @@ class CustomFieldFilterSet(django_filters.FilterSet):
|
||||
self.filters['cf_{}'.format(cf.name)] = CustomFieldFilter(field_name=cf.name, custom_field=cf)
|
||||
|
||||
|
||||
class GraphFilter(django_filters.FilterSet):
|
||||
class GraphFilterSet(django_filters.FilterSet):
|
||||
|
||||
class Meta:
|
||||
model = Graph
|
||||
fields = ['type', 'name']
|
||||
|
||||
|
||||
class ExportTemplateFilter(django_filters.FilterSet):
|
||||
class ExportTemplateFilterSet(django_filters.FilterSet):
|
||||
|
||||
class Meta:
|
||||
model = ExportTemplate
|
||||
fields = ['content_type', 'name', 'template_language']
|
||||
|
||||
|
||||
class TagFilter(django_filters.FilterSet):
|
||||
class TagFilterSet(django_filters.FilterSet):
|
||||
q = django_filters.CharFilter(
|
||||
method='search',
|
||||
label='Search',
|
||||
@ -121,7 +121,7 @@ class TagFilter(django_filters.FilterSet):
|
||||
)
|
||||
|
||||
|
||||
class ConfigContextFilter(django_filters.FilterSet):
|
||||
class ConfigContextFilterSet(django_filters.FilterSet):
|
||||
q = django_filters.CharFilter(
|
||||
method='search',
|
||||
label='Search',
|
||||
@ -217,7 +217,7 @@ class ConfigContextFilter(django_filters.FilterSet):
|
||||
# Filter for Local Config Context Data
|
||||
#
|
||||
|
||||
class LocalConfigContextFilter(django_filters.FilterSet):
|
||||
class LocalConfigContextFilterSet(django_filters.FilterSet):
|
||||
local_context_data = django_filters.BooleanFilter(
|
||||
method='_local_context_data',
|
||||
label='Has local config context data',
|
||||
@ -227,7 +227,7 @@ class LocalConfigContextFilter(django_filters.FilterSet):
|
||||
return queryset.exclude(local_context_data__isnull=value)
|
||||
|
||||
|
||||
class ObjectChangeFilter(django_filters.FilterSet):
|
||||
class ObjectChangeFilterSet(django_filters.FilterSet):
|
||||
q = django_filters.CharFilter(
|
||||
method='search',
|
||||
label='Search',
|
||||
|
@ -10,7 +10,7 @@ from tenancy.models import Tenant, TenantGroup
|
||||
|
||||
class GraphTestCase(TestCase):
|
||||
queryset = Graph.objects.all()
|
||||
filterset = GraphFilter
|
||||
filterset = GraphFilterSet
|
||||
|
||||
@classmethod
|
||||
def setUpTestData(cls):
|
||||
@ -35,7 +35,7 @@ class GraphTestCase(TestCase):
|
||||
|
||||
class ExportTemplateTestCase(TestCase):
|
||||
queryset = ExportTemplate.objects.all()
|
||||
filterset = ExportTemplateFilter
|
||||
filterset = ExportTemplateFilterSet
|
||||
|
||||
@classmethod
|
||||
def setUpTestData(cls):
|
||||
@ -64,7 +64,7 @@ class ExportTemplateTestCase(TestCase):
|
||||
|
||||
class ConfigContextTestCase(TestCase):
|
||||
queryset = ConfigContext.objects.all()
|
||||
filterset = ConfigContextFilter
|
||||
filterset = ConfigContextFilterSet
|
||||
|
||||
@classmethod
|
||||
def setUpTestData(cls):
|
||||
|
@ -31,8 +31,8 @@ class TagListView(PermissionRequiredMixin, ObjectListView):
|
||||
).order_by(
|
||||
'name'
|
||||
)
|
||||
filter = filters.TagFilter
|
||||
filter_form = forms.TagFilterForm
|
||||
filterset = filters.TagFilterSet
|
||||
filterset_form = forms.TagFilterForm
|
||||
table = TagTable
|
||||
template_name = 'extras/tag_list.html'
|
||||
|
||||
@ -108,8 +108,8 @@ class TagBulkDeleteView(PermissionRequiredMixin, BulkDeleteView):
|
||||
class ConfigContextListView(PermissionRequiredMixin, ObjectListView):
|
||||
permission_required = 'extras.view_configcontext'
|
||||
queryset = ConfigContext.objects.all()
|
||||
filter = filters.ConfigContextFilter
|
||||
filter_form = forms.ConfigContextFilterForm
|
||||
filterset = filters.ConfigContextFilterSet
|
||||
filterset_form = forms.ConfigContextFilterForm
|
||||
table = ConfigContextTable
|
||||
template_name = 'extras/configcontext_list.html'
|
||||
|
||||
@ -141,7 +141,7 @@ class ConfigContextEditView(ConfigContextCreateView):
|
||||
class ConfigContextBulkEditView(PermissionRequiredMixin, BulkEditView):
|
||||
permission_required = 'extras.change_configcontext'
|
||||
queryset = ConfigContext.objects.all()
|
||||
filter = filters.ConfigContextFilter
|
||||
filterset = filters.ConfigContextFilterSet
|
||||
table = ConfigContextTable
|
||||
form = forms.ConfigContextBulkEditForm
|
||||
default_return_url = 'extras:configcontext_list'
|
||||
@ -187,8 +187,8 @@ class ObjectConfigContextView(View):
|
||||
class ObjectChangeListView(PermissionRequiredMixin, ObjectListView):
|
||||
permission_required = 'extras.view_objectchange'
|
||||
queryset = ObjectChange.objects.prefetch_related('user', 'changed_object_type')
|
||||
filter = filters.ObjectChangeFilter
|
||||
filter_form = forms.ObjectChangeFilterForm
|
||||
filterset = filters.ObjectChangeFilterSet
|
||||
filterset_form = forms.ObjectChangeFilterForm
|
||||
table = ObjectChangeTable
|
||||
template_name = 'extras/objectchange_list.html'
|
||||
|
||||
|
@ -38,7 +38,7 @@ class VRFViewSet(CustomFieldModelViewSet):
|
||||
prefix_count=get_subquery(Prefix, 'vrf')
|
||||
)
|
||||
serializer_class = serializers.VRFSerializer
|
||||
filterset_class = filters.VRFFilter
|
||||
filterset_class = filters.VRFFilterSet
|
||||
|
||||
|
||||
#
|
||||
@ -50,7 +50,7 @@ class RIRViewSet(ModelViewSet):
|
||||
aggregate_count=Count('aggregates')
|
||||
)
|
||||
serializer_class = serializers.RIRSerializer
|
||||
filterset_class = filters.RIRFilter
|
||||
filterset_class = filters.RIRFilterSet
|
||||
|
||||
|
||||
#
|
||||
@ -60,7 +60,7 @@ class RIRViewSet(ModelViewSet):
|
||||
class AggregateViewSet(CustomFieldModelViewSet):
|
||||
queryset = Aggregate.objects.prefetch_related('rir').prefetch_related('tags')
|
||||
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')
|
||||
)
|
||||
serializer_class = serializers.RoleSerializer
|
||||
filterset_class = filters.RoleFilter
|
||||
filterset_class = filters.RoleFilterSet
|
||||
|
||||
|
||||
#
|
||||
@ -83,7 +83,7 @@ class RoleViewSet(ModelViewSet):
|
||||
class PrefixViewSet(CustomFieldModelViewSet):
|
||||
queryset = Prefix.objects.prefetch_related('site', 'vrf__tenant', 'tenant', 'vlan', 'role', 'tags')
|
||||
serializer_class = serializers.PrefixSerializer
|
||||
filterset_class = filters.PrefixFilter
|
||||
filterset_class = filters.PrefixFilterSet
|
||||
|
||||
@action(detail=True, url_path='available-prefixes', methods=['get', 'post'])
|
||||
def available_prefixes(self, request, pk=None):
|
||||
@ -264,7 +264,7 @@ class IPAddressViewSet(CustomFieldModelViewSet):
|
||||
'nat_outside', 'tags',
|
||||
)
|
||||
serializer_class = serializers.IPAddressSerializer
|
||||
filterset_class = filters.IPAddressFilter
|
||||
filterset_class = filters.IPAddressFilterSet
|
||||
|
||||
|
||||
#
|
||||
@ -276,7 +276,7 @@ class VLANGroupViewSet(ModelViewSet):
|
||||
vlan_count=Count('vlans')
|
||||
)
|
||||
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')
|
||||
)
|
||||
serializer_class = serializers.VLANSerializer
|
||||
filterset_class = filters.VLANFilter
|
||||
filterset_class = filters.VLANFilterSet
|
||||
|
||||
|
||||
#
|
||||
@ -300,4 +300,4 @@ class VLANViewSet(CustomFieldModelViewSet):
|
||||
class ServiceViewSet(ModelViewSet):
|
||||
queryset = Service.objects.prefetch_related('device').prefetch_related('tags')
|
||||
serializer_class = serializers.ServiceSerializer
|
||||
filterset_class = filters.ServiceFilter
|
||||
filterset_class = filters.ServiceFilterSet
|
||||
|
@ -6,7 +6,7 @@ from netaddr.core import AddrFormatError
|
||||
|
||||
from dcim.models import Device, Interface, Region, Site
|
||||
from extras.filters import CustomFieldFilterSet, CreatedUpdatedFilterSet
|
||||
from tenancy.filtersets import TenancyFilterSet
|
||||
from tenancy.filters import TenancyFilterSet
|
||||
from utilities.filters import NameSlugSearchFilterSet, NumericInFilter, TagFilter, TreeNodeMultipleChoiceFilter
|
||||
from virtualization.models import VirtualMachine
|
||||
from .choices import *
|
||||
@ -14,19 +14,19 @@ from .models import Aggregate, IPAddress, Prefix, RIR, Role, Service, VLAN, VLAN
|
||||
|
||||
|
||||
__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(
|
||||
field_name='id',
|
||||
lookup_expr='in'
|
||||
@ -51,7 +51,7 @@ class VRFFilter(TenancyFilterSet, CustomFieldFilterSet, CreatedUpdatedFilterSet)
|
||||
fields = ['name', 'rd', 'enforce_unique']
|
||||
|
||||
|
||||
class RIRFilter(NameSlugSearchFilterSet):
|
||||
class RIRFilterSet(NameSlugSearchFilterSet):
|
||||
id__in = NumericInFilter(
|
||||
field_name='id',
|
||||
lookup_expr='in'
|
||||
@ -62,7 +62,7 @@ class RIRFilter(NameSlugSearchFilterSet):
|
||||
fields = ['name', 'slug', 'is_private']
|
||||
|
||||
|
||||
class AggregateFilter(CustomFieldFilterSet, CreatedUpdatedFilterSet):
|
||||
class AggregateFilterSet(CustomFieldFilterSet, CreatedUpdatedFilterSet):
|
||||
id__in = NumericInFilter(
|
||||
field_name='id',
|
||||
lookup_expr='in'
|
||||
@ -112,7 +112,7 @@ class AggregateFilter(CustomFieldFilterSet, CreatedUpdatedFilterSet):
|
||||
return queryset.none()
|
||||
|
||||
|
||||
class RoleFilter(NameSlugSearchFilterSet):
|
||||
class RoleFilterSet(NameSlugSearchFilterSet):
|
||||
q = django_filters.CharFilter(
|
||||
method='search',
|
||||
label='Search',
|
||||
@ -123,7 +123,7 @@ class RoleFilter(NameSlugSearchFilterSet):
|
||||
fields = ['id', 'name', 'slug']
|
||||
|
||||
|
||||
class PrefixFilter(TenancyFilterSet, CustomFieldFilterSet, CreatedUpdatedFilterSet):
|
||||
class PrefixFilterSet(TenancyFilterSet, CustomFieldFilterSet, CreatedUpdatedFilterSet):
|
||||
id__in = NumericInFilter(
|
||||
field_name='id',
|
||||
lookup_expr='in'
|
||||
@ -271,7 +271,7 @@ class PrefixFilter(TenancyFilterSet, CustomFieldFilterSet, CreatedUpdatedFilterS
|
||||
return queryset.filter(prefix__net_mask_length=value)
|
||||
|
||||
|
||||
class IPAddressFilter(TenancyFilterSet, CustomFieldFilterSet, CreatedUpdatedFilterSet):
|
||||
class IPAddressFilterSet(TenancyFilterSet, CustomFieldFilterSet, CreatedUpdatedFilterSet):
|
||||
id__in = NumericInFilter(
|
||||
field_name='id',
|
||||
lookup_expr='in'
|
||||
@ -398,7 +398,7 @@ class IPAddressFilter(TenancyFilterSet, CustomFieldFilterSet, CreatedUpdatedFilt
|
||||
return queryset.exclude(interface__isnull=value)
|
||||
|
||||
|
||||
class VLANGroupFilter(NameSlugSearchFilterSet):
|
||||
class VLANGroupFilterSet(NameSlugSearchFilterSet):
|
||||
region_id = TreeNodeMultipleChoiceFilter(
|
||||
queryset=Region.objects.all(),
|
||||
field_name='site__region__in',
|
||||
@ -426,7 +426,7 @@ class VLANGroupFilter(NameSlugSearchFilterSet):
|
||||
fields = ['id', 'name', 'slug']
|
||||
|
||||
|
||||
class VLANFilter(TenancyFilterSet, CustomFieldFilterSet, CreatedUpdatedFilterSet):
|
||||
class VLANFilterSet(TenancyFilterSet, CustomFieldFilterSet, CreatedUpdatedFilterSet):
|
||||
id__in = NumericInFilter(
|
||||
field_name='id',
|
||||
lookup_expr='in'
|
||||
@ -497,7 +497,7 @@ class VLANFilter(TenancyFilterSet, CustomFieldFilterSet, CreatedUpdatedFilterSet
|
||||
return queryset.filter(qs_filter)
|
||||
|
||||
|
||||
class ServiceFilter(CreatedUpdatedFilterSet):
|
||||
class ServiceFilterSet(CreatedUpdatedFilterSet):
|
||||
q = django_filters.CharFilter(
|
||||
method='search',
|
||||
label='Search',
|
||||
|
@ -9,7 +9,7 @@ from virtualization.models import Cluster, ClusterType, VirtualMachine
|
||||
|
||||
class VRFTestCase(TestCase):
|
||||
queryset = VRF.objects.all()
|
||||
filterset = VRFFilter
|
||||
filterset = VRFFilterSet
|
||||
|
||||
@classmethod
|
||||
def setUpTestData(cls):
|
||||
@ -46,7 +46,7 @@ class VRFTestCase(TestCase):
|
||||
|
||||
class RIRTestCase(TestCase):
|
||||
queryset = RIR.objects.all()
|
||||
filterset = RIRFilter
|
||||
filterset = RIRFilterSet
|
||||
|
||||
@classmethod
|
||||
def setUpTestData(cls):
|
||||
@ -83,7 +83,7 @@ class RIRTestCase(TestCase):
|
||||
|
||||
class AggregateTestCase(TestCase):
|
||||
queryset = Aggregate.objects.all()
|
||||
filterset = AggregateFilter
|
||||
filterset = AggregateFilterSet
|
||||
|
||||
@classmethod
|
||||
def setUpTestData(cls):
|
||||
@ -128,7 +128,7 @@ class AggregateTestCase(TestCase):
|
||||
|
||||
class RoleTestCase(TestCase):
|
||||
queryset = Role.objects.all()
|
||||
filterset = RoleFilter
|
||||
filterset = RoleFilterSet
|
||||
|
||||
@classmethod
|
||||
def setUpTestData(cls):
|
||||
@ -156,7 +156,7 @@ class RoleTestCase(TestCase):
|
||||
|
||||
class PrefixTestCase(TestCase):
|
||||
queryset = Prefix.objects.all()
|
||||
filterset = PrefixFilter
|
||||
filterset = PrefixFilterSet
|
||||
|
||||
@classmethod
|
||||
def setUpTestData(cls):
|
||||
@ -288,7 +288,7 @@ class PrefixTestCase(TestCase):
|
||||
|
||||
class IPAddressTestCase(TestCase):
|
||||
queryset = IPAddress.objects.all()
|
||||
filterset = IPAddressFilter
|
||||
filterset = IPAddressFilterSet
|
||||
|
||||
@classmethod
|
||||
def setUpTestData(cls):
|
||||
@ -424,7 +424,7 @@ class IPAddressTestCase(TestCase):
|
||||
|
||||
class VLANGroupTestCase(TestCase):
|
||||
queryset = VLANGroup.objects.all()
|
||||
filterset = VLANGroupFilter
|
||||
filterset = VLANGroupFilterSet
|
||||
|
||||
@classmethod
|
||||
def setUpTestData(cls):
|
||||
@ -483,7 +483,7 @@ class VLANGroupTestCase(TestCase):
|
||||
|
||||
class VLANTestCase(TestCase):
|
||||
queryset = VLAN.objects.all()
|
||||
filterset = VLANFilter
|
||||
filterset = VLANFilterSet
|
||||
|
||||
@classmethod
|
||||
def setUpTestData(cls):
|
||||
@ -576,7 +576,7 @@ class VLANTestCase(TestCase):
|
||||
|
||||
class ServiceTestCase(TestCase):
|
||||
queryset = Service.objects.all()
|
||||
filterset = ServiceFilter
|
||||
filterset = ServiceFilterSet
|
||||
|
||||
@classmethod
|
||||
def setUpTestData(cls):
|
||||
|
@ -117,8 +117,8 @@ def add_available_vlans(vlan_group, vlans):
|
||||
class VRFListView(PermissionRequiredMixin, ObjectListView):
|
||||
permission_required = 'ipam.view_vrf'
|
||||
queryset = VRF.objects.prefetch_related('tenant')
|
||||
filter = filters.VRFFilter
|
||||
filter_form = forms.VRFFilterForm
|
||||
filterset = filters.VRFFilterSet
|
||||
filterset_form = forms.VRFFilterForm
|
||||
table = tables.VRFTable
|
||||
template_name = 'ipam/vrf_list.html'
|
||||
|
||||
@ -165,7 +165,7 @@ class VRFBulkImportView(PermissionRequiredMixin, BulkImportView):
|
||||
class VRFBulkEditView(PermissionRequiredMixin, BulkEditView):
|
||||
permission_required = 'ipam.change_vrf'
|
||||
queryset = VRF.objects.prefetch_related('tenant')
|
||||
filter = filters.VRFFilter
|
||||
filterset = filters.VRFFilterSet
|
||||
table = tables.VRFTable
|
||||
form = forms.VRFBulkEditForm
|
||||
default_return_url = 'ipam:vrf_list'
|
||||
@ -174,7 +174,7 @@ class VRFBulkEditView(PermissionRequiredMixin, BulkEditView):
|
||||
class VRFBulkDeleteView(PermissionRequiredMixin, BulkDeleteView):
|
||||
permission_required = 'ipam.delete_vrf'
|
||||
queryset = VRF.objects.prefetch_related('tenant')
|
||||
filter = filters.VRFFilter
|
||||
filterset = filters.VRFFilterSet
|
||||
table = tables.VRFTable
|
||||
default_return_url = 'ipam:vrf_list'
|
||||
|
||||
@ -186,8 +186,8 @@ class VRFBulkDeleteView(PermissionRequiredMixin, BulkDeleteView):
|
||||
class RIRListView(PermissionRequiredMixin, ObjectListView):
|
||||
permission_required = 'ipam.view_rir'
|
||||
queryset = RIR.objects.annotate(aggregate_count=Count('aggregates'))
|
||||
filter = filters.RIRFilter
|
||||
filter_form = forms.RIRFilterForm
|
||||
filterset = filters.RIRFilterSet
|
||||
filterset_form = forms.RIRFilterForm
|
||||
table = tables.RIRDetailTable
|
||||
template_name = 'ipam/rir_list.html'
|
||||
|
||||
@ -281,7 +281,7 @@ class RIRBulkImportView(PermissionRequiredMixin, BulkImportView):
|
||||
class RIRBulkDeleteView(PermissionRequiredMixin, BulkDeleteView):
|
||||
permission_required = 'ipam.delete_rir'
|
||||
queryset = RIR.objects.annotate(aggregate_count=Count('aggregates'))
|
||||
filter = filters.RIRFilter
|
||||
filterset = filters.RIRFilterSet
|
||||
table = tables.RIRTable
|
||||
default_return_url = 'ipam:rir_list'
|
||||
|
||||
@ -296,8 +296,8 @@ class AggregateListView(PermissionRequiredMixin, ObjectListView):
|
||||
child_count=RawSQL('SELECT COUNT(*) FROM ipam_prefix WHERE ipam_prefix.prefix <<= ipam_aggregate.prefix', ())
|
||||
)
|
||||
|
||||
filter = filters.AggregateFilter
|
||||
filter_form = forms.AggregateFilterForm
|
||||
filterset = filters.AggregateFilterSet
|
||||
filterset_form = forms.AggregateFilterForm
|
||||
table = tables.AggregateDetailTable
|
||||
template_name = 'ipam/aggregate_list.html'
|
||||
|
||||
@ -391,7 +391,7 @@ class AggregateBulkImportView(PermissionRequiredMixin, BulkImportView):
|
||||
class AggregateBulkEditView(PermissionRequiredMixin, BulkEditView):
|
||||
permission_required = 'ipam.change_aggregate'
|
||||
queryset = Aggregate.objects.prefetch_related('rir')
|
||||
filter = filters.AggregateFilter
|
||||
filterset = filters.AggregateFilterSet
|
||||
table = tables.AggregateTable
|
||||
form = forms.AggregateBulkEditForm
|
||||
default_return_url = 'ipam:aggregate_list'
|
||||
@ -400,7 +400,7 @@ class AggregateBulkEditView(PermissionRequiredMixin, BulkEditView):
|
||||
class AggregateBulkDeleteView(PermissionRequiredMixin, BulkDeleteView):
|
||||
permission_required = 'ipam.delete_aggregate'
|
||||
queryset = Aggregate.objects.prefetch_related('rir')
|
||||
filter = filters.AggregateFilter
|
||||
filterset = filters.AggregateFilterSet
|
||||
table = tables.AggregateTable
|
||||
default_return_url = 'ipam:aggregate_list'
|
||||
|
||||
@ -448,8 +448,8 @@ class RoleBulkDeleteView(PermissionRequiredMixin, BulkDeleteView):
|
||||
class PrefixListView(PermissionRequiredMixin, ObjectListView):
|
||||
permission_required = 'ipam.view_prefix'
|
||||
queryset = Prefix.objects.prefetch_related('site', 'vrf__tenant', 'tenant', 'vlan', 'role')
|
||||
filter = filters.PrefixFilter
|
||||
filter_form = forms.PrefixFilterForm
|
||||
filterset = filters.PrefixFilterSet
|
||||
filterset_form = forms.PrefixFilterForm
|
||||
table = tables.PrefixDetailTable
|
||||
template_name = 'ipam/prefix_list.html'
|
||||
|
||||
@ -620,7 +620,7 @@ class PrefixBulkImportView(PermissionRequiredMixin, BulkImportView):
|
||||
class PrefixBulkEditView(PermissionRequiredMixin, BulkEditView):
|
||||
permission_required = 'ipam.change_prefix'
|
||||
queryset = Prefix.objects.prefetch_related('site', 'vrf__tenant', 'tenant', 'vlan', 'role')
|
||||
filter = filters.PrefixFilter
|
||||
filterset = filters.PrefixFilterSet
|
||||
table = tables.PrefixTable
|
||||
form = forms.PrefixBulkEditForm
|
||||
default_return_url = 'ipam:prefix_list'
|
||||
@ -629,7 +629,7 @@ class PrefixBulkEditView(PermissionRequiredMixin, BulkEditView):
|
||||
class PrefixBulkDeleteView(PermissionRequiredMixin, BulkDeleteView):
|
||||
permission_required = 'ipam.delete_prefix'
|
||||
queryset = Prefix.objects.prefetch_related('site', 'vrf__tenant', 'tenant', 'vlan', 'role')
|
||||
filter = filters.PrefixFilter
|
||||
filterset = filters.PrefixFilterSet
|
||||
table = tables.PrefixTable
|
||||
default_return_url = 'ipam:prefix_list'
|
||||
|
||||
@ -643,8 +643,8 @@ class IPAddressListView(PermissionRequiredMixin, ObjectListView):
|
||||
queryset = IPAddress.objects.prefetch_related(
|
||||
'vrf__tenant', 'tenant', 'nat_inside', 'interface__device', 'interface__virtual_machine'
|
||||
)
|
||||
filter = filters.IPAddressFilter
|
||||
filter_form = forms.IPAddressFilterForm
|
||||
filterset = filters.IPAddressFilterSet
|
||||
filterset_form = forms.IPAddressFilterForm
|
||||
table = tables.IPAddressDetailTable
|
||||
template_name = 'ipam/ipaddress_list.html'
|
||||
|
||||
@ -796,7 +796,7 @@ class IPAddressBulkImportView(PermissionRequiredMixin, BulkImportView):
|
||||
class IPAddressBulkEditView(PermissionRequiredMixin, BulkEditView):
|
||||
permission_required = 'ipam.change_ipaddress'
|
||||
queryset = IPAddress.objects.prefetch_related('vrf__tenant', 'tenant').prefetch_related('interface__device')
|
||||
filter = filters.IPAddressFilter
|
||||
filterset = filters.IPAddressFilterSet
|
||||
table = tables.IPAddressTable
|
||||
form = forms.IPAddressBulkEditForm
|
||||
default_return_url = 'ipam:ipaddress_list'
|
||||
@ -805,7 +805,7 @@ class IPAddressBulkEditView(PermissionRequiredMixin, BulkEditView):
|
||||
class IPAddressBulkDeleteView(PermissionRequiredMixin, BulkDeleteView):
|
||||
permission_required = 'ipam.delete_ipaddress'
|
||||
queryset = IPAddress.objects.prefetch_related('vrf__tenant', 'tenant').prefetch_related('interface__device')
|
||||
filter = filters.IPAddressFilter
|
||||
filterset = filters.IPAddressFilterSet
|
||||
table = tables.IPAddressTable
|
||||
default_return_url = 'ipam:ipaddress_list'
|
||||
|
||||
@ -817,8 +817,8 @@ class IPAddressBulkDeleteView(PermissionRequiredMixin, BulkDeleteView):
|
||||
class VLANGroupListView(PermissionRequiredMixin, ObjectListView):
|
||||
permission_required = 'ipam.view_vlangroup'
|
||||
queryset = VLANGroup.objects.prefetch_related('site').annotate(vlan_count=Count('vlans'))
|
||||
filter = filters.VLANGroupFilter
|
||||
filter_form = forms.VLANGroupFilterForm
|
||||
filterset = filters.VLANGroupFilterSet
|
||||
filterset_form = forms.VLANGroupFilterForm
|
||||
table = tables.VLANGroupTable
|
||||
template_name = 'ipam/vlangroup_list.html'
|
||||
|
||||
@ -844,7 +844,7 @@ class VLANGroupBulkImportView(PermissionRequiredMixin, BulkImportView):
|
||||
class VLANGroupBulkDeleteView(PermissionRequiredMixin, BulkDeleteView):
|
||||
permission_required = 'ipam.delete_vlangroup'
|
||||
queryset = VLANGroup.objects.prefetch_related('site').annotate(vlan_count=Count('vlans'))
|
||||
filter = filters.VLANGroupFilter
|
||||
filterset = filters.VLANGroupFilterSet
|
||||
table = tables.VLANGroupTable
|
||||
default_return_url = 'ipam:vlangroup_list'
|
||||
|
||||
@ -893,8 +893,8 @@ class VLANGroupVLANsView(PermissionRequiredMixin, View):
|
||||
class VLANListView(PermissionRequiredMixin, ObjectListView):
|
||||
permission_required = 'ipam.view_vlan'
|
||||
queryset = VLAN.objects.prefetch_related('site', 'group', 'tenant', 'role').prefetch_related('prefixes')
|
||||
filter = filters.VLANFilter
|
||||
filter_form = forms.VLANFilterForm
|
||||
filterset = filters.VLANFilterSet
|
||||
filterset_form = forms.VLANFilterForm
|
||||
table = tables.VLANDetailTable
|
||||
template_name = 'ipam/vlan_list.html'
|
||||
|
||||
@ -968,7 +968,7 @@ class VLANBulkImportView(PermissionRequiredMixin, BulkImportView):
|
||||
class VLANBulkEditView(PermissionRequiredMixin, BulkEditView):
|
||||
permission_required = 'ipam.change_vlan'
|
||||
queryset = VLAN.objects.prefetch_related('site', 'group', 'tenant', 'role')
|
||||
filter = filters.VLANFilter
|
||||
filterset = filters.VLANFilterSet
|
||||
table = tables.VLANTable
|
||||
form = forms.VLANBulkEditForm
|
||||
default_return_url = 'ipam:vlan_list'
|
||||
@ -977,7 +977,7 @@ class VLANBulkEditView(PermissionRequiredMixin, BulkEditView):
|
||||
class VLANBulkDeleteView(PermissionRequiredMixin, BulkDeleteView):
|
||||
permission_required = 'ipam.delete_vlan'
|
||||
queryset = VLAN.objects.prefetch_related('site', 'group', 'tenant', 'role')
|
||||
filter = filters.VLANFilter
|
||||
filterset = filters.VLANFilterSet
|
||||
table = tables.VLANTable
|
||||
default_return_url = 'ipam:vlan_list'
|
||||
|
||||
@ -989,8 +989,8 @@ class VLANBulkDeleteView(PermissionRequiredMixin, BulkDeleteView):
|
||||
class ServiceListView(PermissionRequiredMixin, ObjectListView):
|
||||
permission_required = 'ipam.view_service'
|
||||
queryset = Service.objects.prefetch_related('device', 'virtual_machine')
|
||||
filter = filters.ServiceFilter
|
||||
filter_form = forms.ServiceFilterForm
|
||||
filterset = filters.ServiceFilterSet
|
||||
filterset_form = forms.ServiceFilterForm
|
||||
table = tables.ServiceTable
|
||||
template_name = 'ipam/service_list.html'
|
||||
|
||||
@ -1036,7 +1036,7 @@ class ServiceDeleteView(PermissionRequiredMixin, ObjectDeleteView):
|
||||
class ServiceBulkEditView(PermissionRequiredMixin, BulkEditView):
|
||||
permission_required = 'ipam.change_service'
|
||||
queryset = Service.objects.prefetch_related('device', 'virtual_machine')
|
||||
filter = filters.ServiceFilter
|
||||
filterset = filters.ServiceFilterSet
|
||||
table = tables.ServiceTable
|
||||
form = forms.ServiceBulkEditForm
|
||||
default_return_url = 'ipam:service_list'
|
||||
@ -1045,6 +1045,6 @@ class ServiceBulkEditView(PermissionRequiredMixin, BulkEditView):
|
||||
class ServiceBulkDeleteView(PermissionRequiredMixin, BulkDeleteView):
|
||||
permission_required = 'ipam.delete_service'
|
||||
queryset = Service.objects.prefetch_related('device', 'virtual_machine')
|
||||
filter = filters.ServiceFilter
|
||||
filterset = filters.ServiceFilterSet
|
||||
table = tables.ServiceTable
|
||||
default_return_url = 'ipam:service_list'
|
||||
|
@ -7,12 +7,12 @@ from rest_framework.response import Response
|
||||
from rest_framework.reverse import reverse
|
||||
from rest_framework.views import APIView
|
||||
|
||||
from circuits.filters import CircuitFilter, ProviderFilter
|
||||
from circuits.filters import CircuitFilterSet, ProviderFilterSet
|
||||
from circuits.models import Circuit, CircuitTermination, Provider
|
||||
from circuits.tables import CircuitTable, ProviderTable
|
||||
from dcim.filters import (
|
||||
CableFilter, DeviceFilter, DeviceTypeFilter, PowerFeedFilter, RackFilter, RackGroupFilter, SiteFilter,
|
||||
VirtualChassisFilter,
|
||||
CableFilterSet, DeviceFilterSet, DeviceTypeFilterSet, PowerFeedFilterSet, RackFilterSet, RackGroupFilterSet, SiteFilterSet,
|
||||
VirtualChassisFilterSet,
|
||||
)
|
||||
from dcim.models import (
|
||||
Cable, ConsolePort, Device, DeviceType, Interface, PowerPanel, PowerFeed, PowerPort, Rack, RackGroup, Site, VirtualChassis
|
||||
@ -22,16 +22,16 @@ from dcim.tables import (
|
||||
VirtualChassisTable,
|
||||
)
|
||||
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.tables import AggregateTable, IPAddressTable, PrefixTable, VLANTable, VRFTable
|
||||
from secrets.filters import SecretFilter
|
||||
from secrets.filters import SecretFilterSet
|
||||
from secrets.models import Secret
|
||||
from secrets.tables import SecretTable
|
||||
from tenancy.filters import TenantFilter
|
||||
from tenancy.filters import TenantFilterSet
|
||||
from tenancy.models import Tenant
|
||||
from tenancy.tables import TenantTable
|
||||
from virtualization.filters import ClusterFilter, VirtualMachineFilter
|
||||
from virtualization.filters import ClusterFilterSet, VirtualMachineFilterSet
|
||||
from virtualization.models import Cluster, VirtualMachine
|
||||
from virtualization.tables import ClusterTable, VirtualMachineDetailTable
|
||||
from .forms import SearchForm
|
||||
@ -42,7 +42,7 @@ SEARCH_TYPES = OrderedDict((
|
||||
('provider', {
|
||||
'permission': 'circuits.view_provider',
|
||||
'queryset': Provider.objects.all(),
|
||||
'filter': ProviderFilter,
|
||||
'filterset': ProviderFilterSet,
|
||||
'table': ProviderTable,
|
||||
'url': 'circuits:provider_list',
|
||||
}),
|
||||
@ -59,7 +59,7 @@ SEARCH_TYPES = OrderedDict((
|
||||
CircuitTermination.objects.filter(circuit=OuterRef('pk')).filter(term_side='Z').values('site__name')[:1]
|
||||
),
|
||||
),
|
||||
'filter': CircuitFilter,
|
||||
'filterset': CircuitFilterSet,
|
||||
'table': CircuitTable,
|
||||
'url': 'circuits:circuit_list',
|
||||
}),
|
||||
@ -67,28 +67,28 @@ SEARCH_TYPES = OrderedDict((
|
||||
('site', {
|
||||
'permission': 'dcim.view_site',
|
||||
'queryset': Site.objects.prefetch_related('region', 'tenant'),
|
||||
'filter': SiteFilter,
|
||||
'filterset': SiteFilterSet,
|
||||
'table': SiteTable,
|
||||
'url': 'dcim:site_list',
|
||||
}),
|
||||
('rack', {
|
||||
'permission': 'dcim.view_rack',
|
||||
'queryset': Rack.objects.prefetch_related('site', 'group', 'tenant', 'role'),
|
||||
'filter': RackFilter,
|
||||
'filterset': RackFilterSet,
|
||||
'table': RackTable,
|
||||
'url': 'dcim:rack_list',
|
||||
}),
|
||||
('rackgroup', {
|
||||
'permission': 'dcim.view_rackgroup',
|
||||
'queryset': RackGroup.objects.prefetch_related('site').annotate(rack_count=Count('racks')),
|
||||
'filter': RackGroupFilter,
|
||||
'filterset': RackGroupFilterSet,
|
||||
'table': RackGroupTable,
|
||||
'url': 'dcim:rackgroup_list',
|
||||
}),
|
||||
('devicetype', {
|
||||
'permission': 'dcim.view_devicetype',
|
||||
'queryset': DeviceType.objects.prefetch_related('manufacturer').annotate(instance_count=Count('instances')),
|
||||
'filter': DeviceTypeFilter,
|
||||
'filterset': DeviceTypeFilterSet,
|
||||
'table': DeviceTypeTable,
|
||||
'url': 'dcim:devicetype_list',
|
||||
}),
|
||||
@ -97,28 +97,28 @@ SEARCH_TYPES = OrderedDict((
|
||||
'queryset': Device.objects.prefetch_related(
|
||||
'device_type__manufacturer', 'device_role', 'tenant', 'site', 'rack', 'primary_ip4', 'primary_ip6',
|
||||
),
|
||||
'filter': DeviceFilter,
|
||||
'filterset': DeviceFilterSet,
|
||||
'table': DeviceDetailTable,
|
||||
'url': 'dcim:device_list',
|
||||
}),
|
||||
('virtualchassis', {
|
||||
'permission': 'dcim.view_virtualchassis',
|
||||
'queryset': VirtualChassis.objects.prefetch_related('master').annotate(member_count=Count('members')),
|
||||
'filter': VirtualChassisFilter,
|
||||
'filterset': VirtualChassisFilterSet,
|
||||
'table': VirtualChassisTable,
|
||||
'url': 'dcim:virtualchassis_list',
|
||||
}),
|
||||
('cable', {
|
||||
'permission': 'dcim.view_cable',
|
||||
'queryset': Cable.objects.all(),
|
||||
'filter': CableFilter,
|
||||
'filterset': CableFilterSet,
|
||||
'table': CableTable,
|
||||
'url': 'dcim:cable_list',
|
||||
}),
|
||||
('powerfeed', {
|
||||
'permission': 'dcim.view_powerfeed',
|
||||
'queryset': PowerFeed.objects.all(),
|
||||
'filter': PowerFeedFilter,
|
||||
'filterset': PowerFeedFilterSet,
|
||||
'table': PowerFeedTable,
|
||||
'url': 'dcim:powerfeed_list',
|
||||
}),
|
||||
@ -126,7 +126,7 @@ SEARCH_TYPES = OrderedDict((
|
||||
('cluster', {
|
||||
'permission': 'virtualization.view_cluster',
|
||||
'queryset': Cluster.objects.prefetch_related('type', 'group'),
|
||||
'filter': ClusterFilter,
|
||||
'filterset': ClusterFilterSet,
|
||||
'table': ClusterTable,
|
||||
'url': 'virtualization:cluster_list',
|
||||
}),
|
||||
@ -135,7 +135,7 @@ SEARCH_TYPES = OrderedDict((
|
||||
'queryset': VirtualMachine.objects.prefetch_related(
|
||||
'cluster', 'tenant', 'platform', 'primary_ip4', 'primary_ip6',
|
||||
),
|
||||
'filter': VirtualMachineFilter,
|
||||
'filterset': VirtualMachineFilterSet,
|
||||
'table': VirtualMachineDetailTable,
|
||||
'url': 'virtualization:virtualmachine_list',
|
||||
}),
|
||||
@ -143,35 +143,35 @@ SEARCH_TYPES = OrderedDict((
|
||||
('vrf', {
|
||||
'permission': 'ipam.view_vrf',
|
||||
'queryset': VRF.objects.prefetch_related('tenant'),
|
||||
'filter': VRFFilter,
|
||||
'filterset': VRFFilterSet,
|
||||
'table': VRFTable,
|
||||
'url': 'ipam:vrf_list',
|
||||
}),
|
||||
('aggregate', {
|
||||
'permission': 'ipam.view_aggregate',
|
||||
'queryset': Aggregate.objects.prefetch_related('rir'),
|
||||
'filter': AggregateFilter,
|
||||
'filterset': AggregateFilterSet,
|
||||
'table': AggregateTable,
|
||||
'url': 'ipam:aggregate_list',
|
||||
}),
|
||||
('prefix', {
|
||||
'permission': 'ipam.view_prefix',
|
||||
'queryset': Prefix.objects.prefetch_related('site', 'vrf__tenant', 'tenant', 'vlan', 'role'),
|
||||
'filter': PrefixFilter,
|
||||
'filterset': PrefixFilterSet,
|
||||
'table': PrefixTable,
|
||||
'url': 'ipam:prefix_list',
|
||||
}),
|
||||
('ipaddress', {
|
||||
'permission': 'ipam.view_ipaddress',
|
||||
'queryset': IPAddress.objects.prefetch_related('vrf__tenant', 'tenant'),
|
||||
'filter': IPAddressFilter,
|
||||
'filterset': IPAddressFilterSet,
|
||||
'table': IPAddressTable,
|
||||
'url': 'ipam:ipaddress_list',
|
||||
}),
|
||||
('vlan', {
|
||||
'permission': 'ipam.view_vlan',
|
||||
'queryset': VLAN.objects.prefetch_related('site', 'group', 'tenant', 'role'),
|
||||
'filter': VLANFilter,
|
||||
'filterset': VLANFilterSet,
|
||||
'table': VLANTable,
|
||||
'url': 'ipam:vlan_list',
|
||||
}),
|
||||
@ -179,7 +179,7 @@ SEARCH_TYPES = OrderedDict((
|
||||
('secret', {
|
||||
'permission': 'secrets.view_secret',
|
||||
'queryset': Secret.objects.prefetch_related('role', 'device'),
|
||||
'filter': SecretFilter,
|
||||
'filterset': SecretFilterSet,
|
||||
'table': SecretTable,
|
||||
'url': 'secrets:secret_list',
|
||||
}),
|
||||
@ -187,7 +187,7 @@ SEARCH_TYPES = OrderedDict((
|
||||
('tenant', {
|
||||
'permission': 'tenancy.view_tenant',
|
||||
'queryset': Tenant.objects.prefetch_related('group'),
|
||||
'filter': TenantFilter,
|
||||
'filterset': TenantFilterSet,
|
||||
'table': TenantTable,
|
||||
'url': 'tenancy:tenant_list',
|
||||
}),
|
||||
@ -286,12 +286,12 @@ class SearchView(View):
|
||||
for obj_type in obj_types:
|
||||
|
||||
queryset = SEARCH_TYPES[obj_type]['queryset']
|
||||
filter_cls = SEARCH_TYPES[obj_type]['filter']
|
||||
filterset = SEARCH_TYPES[obj_type]['filterset']
|
||||
table = SEARCH_TYPES[obj_type]['table']
|
||||
url = SEARCH_TYPES[obj_type]['url']
|
||||
|
||||
# Construct the results table for this object type
|
||||
filtered_queryset = filter_cls({'q': form.cleaned_data['q']}, queryset=queryset).qs
|
||||
filtered_queryset = filterset({'q': form.cleaned_data['q']}, queryset=queryset).qs
|
||||
table = table(filtered_queryset, orderable=False)
|
||||
table.paginate(per_page=SEARCH_MAX_RESULTS)
|
||||
|
||||
|
@ -38,7 +38,7 @@ class SecretRoleViewSet(ModelViewSet):
|
||||
)
|
||||
serializer_class = serializers.SecretRoleSerializer
|
||||
permission_classes = [IsAuthenticated]
|
||||
filterset_class = filters.SecretRoleFilter
|
||||
filterset_class = filters.SecretRoleFilterSet
|
||||
|
||||
|
||||
#
|
||||
@ -50,7 +50,7 @@ class SecretViewSet(ModelViewSet):
|
||||
'device__primary_ip4', 'device__primary_ip6', 'role', 'role__users', 'role__groups', 'tags',
|
||||
)
|
||||
serializer_class = serializers.SecretSerializer
|
||||
filterset_class = filters.SecretFilter
|
||||
filterset_class = filters.SecretFilterSet
|
||||
|
||||
master_key = None
|
||||
|
||||
|
@ -8,19 +8,19 @@ from .models import Secret, SecretRole
|
||||
|
||||
|
||||
__all__ = (
|
||||
'SecretFilter',
|
||||
'SecretRoleFilter',
|
||||
'SecretFilterSet',
|
||||
'SecretRoleFilterSet',
|
||||
)
|
||||
|
||||
|
||||
class SecretRoleFilter(NameSlugSearchFilterSet):
|
||||
class SecretRoleFilterSet(NameSlugSearchFilterSet):
|
||||
|
||||
class Meta:
|
||||
model = SecretRole
|
||||
fields = ['id', 'name', 'slug']
|
||||
|
||||
|
||||
class SecretFilter(CustomFieldFilterSet, CreatedUpdatedFilterSet):
|
||||
class SecretFilterSet(CustomFieldFilterSet, CreatedUpdatedFilterSet):
|
||||
id__in = NumericInFilter(
|
||||
field_name='id',
|
||||
lookup_expr='in'
|
||||
|
@ -7,7 +7,7 @@ from secrets.models import Secret, SecretRole
|
||||
|
||||
class SecretRoleTestCase(TestCase):
|
||||
queryset = SecretRole.objects.all()
|
||||
filterset = SecretRoleFilter
|
||||
filterset = SecretRoleFilterSet
|
||||
|
||||
@classmethod
|
||||
def setUpTestData(cls):
|
||||
@ -35,7 +35,7 @@ class SecretRoleTestCase(TestCase):
|
||||
|
||||
class SecretTestCase(TestCase):
|
||||
queryset = Secret.objects.all()
|
||||
filterset = SecretFilter
|
||||
filterset = SecretFilterSet
|
||||
|
||||
@classmethod
|
||||
def setUpTestData(cls):
|
||||
|
@ -70,8 +70,8 @@ class SecretRoleBulkDeleteView(PermissionRequiredMixin, BulkDeleteView):
|
||||
class SecretListView(PermissionRequiredMixin, ObjectListView):
|
||||
permission_required = 'secrets.view_secret'
|
||||
queryset = Secret.objects.prefetch_related('role', 'device')
|
||||
filter = filters.SecretFilter
|
||||
filter_form = forms.SecretFilterForm
|
||||
filterset = filters.SecretFilterSet
|
||||
filterset_form = forms.SecretFilterForm
|
||||
table = tables.SecretTable
|
||||
template_name = 'secrets/secret_list.html'
|
||||
|
||||
@ -248,7 +248,7 @@ class SecretBulkImportView(BulkImportView):
|
||||
class SecretBulkEditView(PermissionRequiredMixin, BulkEditView):
|
||||
permission_required = 'secrets.change_secret'
|
||||
queryset = Secret.objects.prefetch_related('role', 'device')
|
||||
filter = filters.SecretFilter
|
||||
filterset = filters.SecretFilterSet
|
||||
table = tables.SecretTable
|
||||
form = forms.SecretBulkEditForm
|
||||
default_return_url = 'secrets:secret_list'
|
||||
@ -257,6 +257,6 @@ class SecretBulkEditView(PermissionRequiredMixin, BulkEditView):
|
||||
class SecretBulkDeleteView(PermissionRequiredMixin, BulkDeleteView):
|
||||
permission_required = 'secrets.delete_secret'
|
||||
queryset = Secret.objects.prefetch_related('role', 'device')
|
||||
filter = filters.SecretFilter
|
||||
filterset = filters.SecretFilterSet
|
||||
table = tables.SecretTable
|
||||
default_return_url = 'secrets:secret_list'
|
||||
|
@ -27,7 +27,7 @@ class TenantGroupViewSet(ModelViewSet):
|
||||
tenant_count=get_subquery(Tenant, 'group')
|
||||
)
|
||||
serializer_class = serializers.TenantGroupSerializer
|
||||
filterset_class = filters.TenantGroupFilter
|
||||
filterset_class = filters.TenantGroupFilterSet
|
||||
|
||||
|
||||
#
|
||||
@ -49,4 +49,4 @@ class TenantViewSet(CustomFieldModelViewSet):
|
||||
vrf_count=get_subquery(VRF, 'tenant')
|
||||
)
|
||||
serializer_class = serializers.TenantSerializer
|
||||
filterset_class = filters.TenantFilter
|
||||
filterset_class = filters.TenantFilterSet
|
||||
|
@ -7,19 +7,20 @@ from .models import Tenant, TenantGroup
|
||||
|
||||
|
||||
__all__ = (
|
||||
'TenantFilter',
|
||||
'TenantGroupFilter',
|
||||
'TenancyFilterSet',
|
||||
'TenantFilterSet',
|
||||
'TenantGroupFilterSet',
|
||||
)
|
||||
|
||||
|
||||
class TenantGroupFilter(NameSlugSearchFilterSet):
|
||||
class TenantGroupFilterSet(NameSlugSearchFilterSet):
|
||||
|
||||
class Meta:
|
||||
model = TenantGroup
|
||||
fields = ['id', 'name', 'slug']
|
||||
|
||||
|
||||
class TenantFilter(CustomFieldFilterSet, CreatedUpdatedFilterSet):
|
||||
class TenantFilterSet(CustomFieldFilterSet, CreatedUpdatedFilterSet):
|
||||
id__in = NumericInFilter(
|
||||
field_name='id',
|
||||
lookup_expr='in'
|
||||
@ -53,3 +54,31 @@ class TenantFilter(CustomFieldFilterSet, CreatedUpdatedFilterSet):
|
||||
Q(description__icontains=value) |
|
||||
Q(comments__icontains=value)
|
||||
)
|
||||
|
||||
|
||||
class TenancyFilterSet(django_filters.FilterSet):
|
||||
"""
|
||||
An inheritable FilterSet for models which support Tenant assignment.
|
||||
"""
|
||||
tenant_group_id = django_filters.ModelMultipleChoiceFilter(
|
||||
field_name='tenant__group__id',
|
||||
queryset=TenantGroup.objects.all(),
|
||||
to_field_name='id',
|
||||
label='Tenant Group (ID)',
|
||||
)
|
||||
tenant_group = django_filters.ModelMultipleChoiceFilter(
|
||||
field_name='tenant__group__slug',
|
||||
queryset=TenantGroup.objects.all(),
|
||||
to_field_name='slug',
|
||||
label='Tenant Group (slug)',
|
||||
)
|
||||
tenant_id = django_filters.ModelMultipleChoiceFilter(
|
||||
queryset=Tenant.objects.all(),
|
||||
label='Tenant (ID)',
|
||||
)
|
||||
tenant = django_filters.ModelMultipleChoiceFilter(
|
||||
field_name='tenant__slug',
|
||||
queryset=Tenant.objects.all(),
|
||||
to_field_name='slug',
|
||||
label='Tenant (slug)',
|
||||
)
|
||||
|
@ -1,28 +0,0 @@
|
||||
import django_filters
|
||||
|
||||
from .models import Tenant, TenantGroup
|
||||
|
||||
|
||||
class TenancyFilterSet(django_filters.FilterSet):
|
||||
tenant_group_id = django_filters.ModelMultipleChoiceFilter(
|
||||
field_name='tenant__group__id',
|
||||
queryset=TenantGroup.objects.all(),
|
||||
to_field_name='id',
|
||||
label='Tenant Group (ID)',
|
||||
)
|
||||
tenant_group = django_filters.ModelMultipleChoiceFilter(
|
||||
field_name='tenant__group__slug',
|
||||
queryset=TenantGroup.objects.all(),
|
||||
to_field_name='slug',
|
||||
label='Tenant Group (slug)',
|
||||
)
|
||||
tenant_id = django_filters.ModelMultipleChoiceFilter(
|
||||
queryset=Tenant.objects.all(),
|
||||
label='Tenant (ID)',
|
||||
)
|
||||
tenant = django_filters.ModelMultipleChoiceFilter(
|
||||
field_name='tenant__slug',
|
||||
queryset=Tenant.objects.all(),
|
||||
to_field_name='slug',
|
||||
label='Tenant (slug)',
|
||||
)
|
@ -6,7 +6,7 @@ from tenancy.models import Tenant, TenantGroup
|
||||
|
||||
class TenantGroupTestCase(TestCase):
|
||||
queryset = TenantGroup.objects.all()
|
||||
filterset = TenantGroupFilter
|
||||
filterset = TenantGroupFilterSet
|
||||
|
||||
@classmethod
|
||||
def setUpTestData(cls):
|
||||
@ -34,7 +34,7 @@ class TenantGroupTestCase(TestCase):
|
||||
|
||||
class TenantTestCase(TestCase):
|
||||
queryset = Tenant.objects.all()
|
||||
filterset = TenantFilter
|
||||
filterset = TenantFilterSet
|
||||
|
||||
@classmethod
|
||||
def setUpTestData(cls):
|
||||
|
@ -57,8 +57,8 @@ class TenantGroupBulkDeleteView(PermissionRequiredMixin, BulkDeleteView):
|
||||
class TenantListView(PermissionRequiredMixin, ObjectListView):
|
||||
permission_required = 'tenancy.view_tenant'
|
||||
queryset = Tenant.objects.prefetch_related('group')
|
||||
filter = filters.TenantFilter
|
||||
filter_form = forms.TenantFilterForm
|
||||
filterset = filters.TenantFilterSet
|
||||
filterset_form = forms.TenantFilterForm
|
||||
table = tables.TenantTable
|
||||
template_name = 'tenancy/tenant_list.html'
|
||||
|
||||
@ -117,7 +117,7 @@ class TenantBulkImportView(PermissionRequiredMixin, BulkImportView):
|
||||
class TenantBulkEditView(PermissionRequiredMixin, BulkEditView):
|
||||
permission_required = 'tenancy.change_tenant'
|
||||
queryset = Tenant.objects.prefetch_related('group')
|
||||
filter = filters.TenantFilter
|
||||
filterset = filters.TenantFilterSet
|
||||
table = tables.TenantTable
|
||||
form = forms.TenantBulkEditForm
|
||||
default_return_url = 'tenancy:tenant_list'
|
||||
@ -126,6 +126,6 @@ class TenantBulkEditView(PermissionRequiredMixin, BulkEditView):
|
||||
class TenantBulkDeleteView(PermissionRequiredMixin, BulkDeleteView):
|
||||
permission_required = 'tenancy.delete_tenant'
|
||||
queryset = Tenant.objects.prefetch_related('group')
|
||||
filter = filters.TenantFilter
|
||||
filterset = filters.TenantFilterSet
|
||||
table = tables.TenantTable
|
||||
default_return_url = 'tenancy:tenant_list'
|
||||
|
@ -70,8 +70,8 @@ class ObjectListView(View):
|
||||
template_name: The name of the template
|
||||
"""
|
||||
queryset = None
|
||||
filter = None
|
||||
filter_form = None
|
||||
filterset = None
|
||||
filterset_form = None
|
||||
table = None
|
||||
template_name = None
|
||||
|
||||
@ -97,8 +97,8 @@ class ObjectListView(View):
|
||||
model = self.queryset.model
|
||||
content_type = ContentType.objects.get_for_model(model)
|
||||
|
||||
if self.filter:
|
||||
self.queryset = self.filter(request.GET, self.queryset).qs
|
||||
if self.filterset:
|
||||
self.queryset = self.filterset(request.GET, self.queryset).qs
|
||||
|
||||
# If this type of object has one or more custom fields, prefetch any relevant custom field values
|
||||
custom_fields = CustomField.objects.filter(
|
||||
@ -161,7 +161,7 @@ class ObjectListView(View):
|
||||
'content_type': content_type,
|
||||
'table': table,
|
||||
'permissions': permissions,
|
||||
'filter_form': self.filter_form(request.GET, label_suffix='') if self.filter_form else None,
|
||||
'filter_form': self.filterset_form(request.GET, label_suffix='') if self.filterset_form else None,
|
||||
'tags': tags,
|
||||
}
|
||||
context.update(self.extra_context())
|
||||
@ -598,7 +598,7 @@ class BulkEditView(GetReturnURLMixin, View):
|
||||
"""
|
||||
queryset = None
|
||||
parent_model = None
|
||||
filter = None
|
||||
filterset = None
|
||||
table = None
|
||||
form = None
|
||||
template_name = 'utilities/obj_bulk_edit.html'
|
||||
@ -617,8 +617,8 @@ class BulkEditView(GetReturnURLMixin, View):
|
||||
parent_obj = None
|
||||
|
||||
# Are we editing *all* objects in the queryset or just a selected subset?
|
||||
if request.POST.get('_all') and self.filter is not None:
|
||||
pk_list = [obj.pk for obj in self.filter(request.GET, model.objects.only('pk')).qs]
|
||||
if request.POST.get('_all') and self.filterset is not None:
|
||||
pk_list = [obj.pk for obj in self.filterset(request.GET, model.objects.only('pk')).qs]
|
||||
else:
|
||||
pk_list = [int(pk) for pk in request.POST.getlist('pk')]
|
||||
|
||||
@ -719,7 +719,7 @@ class BulkDeleteView(GetReturnURLMixin, View):
|
||||
"""
|
||||
queryset = None
|
||||
parent_model = None
|
||||
filter = None
|
||||
filterset = None
|
||||
table = None
|
||||
form = None
|
||||
template_name = 'utilities/obj_bulk_delete.html'
|
||||
@ -739,8 +739,8 @@ class BulkDeleteView(GetReturnURLMixin, View):
|
||||
|
||||
# Are we deleting *all* objects in the queryset or just a selected subset?
|
||||
if request.POST.get('_all'):
|
||||
if self.filter is not None:
|
||||
pk_list = [obj.pk for obj in self.filter(request.GET, model.objects.only('pk')).qs]
|
||||
if self.filterset is not None:
|
||||
pk_list = [obj.pk for obj in self.filterset(request.GET, model.objects.only('pk')).qs]
|
||||
else:
|
||||
pk_list = model.objects.values_list('pk', flat=True)
|
||||
else:
|
||||
@ -883,7 +883,7 @@ class BulkComponentCreateView(GetReturnURLMixin, View):
|
||||
form = None
|
||||
model = None
|
||||
model_form = None
|
||||
filter = None
|
||||
filterset = None
|
||||
table = None
|
||||
template_name = 'utilities/obj_bulk_add_component.html'
|
||||
|
||||
@ -893,8 +893,8 @@ class BulkComponentCreateView(GetReturnURLMixin, View):
|
||||
model_name = self.model._meta.verbose_name_plural
|
||||
|
||||
# Are we editing *all* objects in the queryset or just a selected subset?
|
||||
if request.POST.get('_all') and self.filter is not None:
|
||||
pk_list = [obj.pk for obj in self.filter(request.GET, self.parent_model.objects.only('pk')).qs]
|
||||
if request.POST.get('_all') and self.filterset is not None:
|
||||
pk_list = [obj.pk for obj in self.filterset(request.GET, self.parent_model.objects.only('pk')).qs]
|
||||
else:
|
||||
pk_list = [int(pk) for pk in request.POST.getlist('pk')]
|
||||
|
||||
|
@ -28,7 +28,7 @@ class ClusterTypeViewSet(ModelViewSet):
|
||||
cluster_count=Count('clusters')
|
||||
)
|
||||
serializer_class = serializers.ClusterTypeSerializer
|
||||
filterset_class = filters.ClusterTypeFilter
|
||||
filterset_class = filters.ClusterTypeFilterSet
|
||||
|
||||
|
||||
class ClusterGroupViewSet(ModelViewSet):
|
||||
@ -36,7 +36,7 @@ class ClusterGroupViewSet(ModelViewSet):
|
||||
cluster_count=Count('clusters')
|
||||
)
|
||||
serializer_class = serializers.ClusterGroupSerializer
|
||||
filterset_class = filters.ClusterGroupFilter
|
||||
filterset_class = filters.ClusterGroupFilterSet
|
||||
|
||||
|
||||
class ClusterViewSet(CustomFieldModelViewSet):
|
||||
@ -47,7 +47,7 @@ class ClusterViewSet(CustomFieldModelViewSet):
|
||||
virtualmachine_count=get_subquery(VirtualMachine, 'cluster')
|
||||
)
|
||||
serializer_class = serializers.ClusterSerializer
|
||||
filterset_class = filters.ClusterFilter
|
||||
filterset_class = filters.ClusterFilterSet
|
||||
|
||||
|
||||
#
|
||||
@ -58,7 +58,7 @@ class VirtualMachineViewSet(CustomFieldModelViewSet):
|
||||
queryset = VirtualMachine.objects.prefetch_related(
|
||||
'cluster__site', 'role', 'tenant', 'platform', 'primary_ip4', 'primary_ip6', 'tags'
|
||||
)
|
||||
filterset_class = filters.VirtualMachineFilter
|
||||
filterset_class = filters.VirtualMachineFilterSet
|
||||
|
||||
def get_serializer_class(self):
|
||||
"""
|
||||
@ -88,7 +88,7 @@ class InterfaceViewSet(ModelViewSet):
|
||||
'virtual_machine', 'tags'
|
||||
)
|
||||
serializer_class = serializers.InterfaceSerializer
|
||||
filterset_class = filters.InterfaceFilter
|
||||
filterset_class = filters.InterfaceFilterSet
|
||||
|
||||
def get_serializer_class(self):
|
||||
request = self.get_serializer_context()['request']
|
||||
|
@ -3,7 +3,7 @@ from django.db.models import Q
|
||||
|
||||
from dcim.models import DeviceRole, Interface, Platform, Region, Site
|
||||
from extras.filters import CustomFieldFilterSet, CreatedUpdatedFilterSet
|
||||
from tenancy.filtersets import TenancyFilterSet
|
||||
from tenancy.filters import TenancyFilterSet
|
||||
from tenancy.models import Tenant
|
||||
from utilities.filters import (
|
||||
MultiValueMACAddressFilter, NameSlugSearchFilterSet, NumericInFilter, TagFilter, TreeNodeMultipleChoiceFilter,
|
||||
@ -13,29 +13,29 @@ from .models import Cluster, ClusterGroup, ClusterType, VirtualMachine
|
||||
|
||||
|
||||
__all__ = (
|
||||
'ClusterFilter',
|
||||
'ClusterGroupFilter',
|
||||
'ClusterTypeFilter',
|
||||
'InterfaceFilter',
|
||||
'VirtualMachineFilter',
|
||||
'ClusterFilterSet',
|
||||
'ClusterGroupFilterSet',
|
||||
'ClusterTypeFilterSet',
|
||||
'InterfaceFilterSet',
|
||||
'VirtualMachineFilterSet',
|
||||
)
|
||||
|
||||
|
||||
class ClusterTypeFilter(NameSlugSearchFilterSet):
|
||||
class ClusterTypeFilterSet(NameSlugSearchFilterSet):
|
||||
|
||||
class Meta:
|
||||
model = ClusterType
|
||||
fields = ['id', 'name', 'slug']
|
||||
|
||||
|
||||
class ClusterGroupFilter(NameSlugSearchFilterSet):
|
||||
class ClusterGroupFilterSet(NameSlugSearchFilterSet):
|
||||
|
||||
class Meta:
|
||||
model = ClusterGroup
|
||||
fields = ['id', 'name', 'slug']
|
||||
|
||||
|
||||
class ClusterFilter(CustomFieldFilterSet, CreatedUpdatedFilterSet):
|
||||
class ClusterFilterSet(CustomFieldFilterSet, CreatedUpdatedFilterSet):
|
||||
id__in = NumericInFilter(
|
||||
field_name='id',
|
||||
lookup_expr='in'
|
||||
@ -104,7 +104,7 @@ class ClusterFilter(CustomFieldFilterSet, CreatedUpdatedFilterSet):
|
||||
)
|
||||
|
||||
|
||||
class VirtualMachineFilter(TenancyFilterSet, CustomFieldFilterSet, CreatedUpdatedFilterSet):
|
||||
class VirtualMachineFilterSet(TenancyFilterSet, CustomFieldFilterSet, CreatedUpdatedFilterSet):
|
||||
id__in = NumericInFilter(
|
||||
field_name='id',
|
||||
lookup_expr='in'
|
||||
@ -204,7 +204,7 @@ class VirtualMachineFilter(TenancyFilterSet, CustomFieldFilterSet, CreatedUpdate
|
||||
)
|
||||
|
||||
|
||||
class InterfaceFilter(django_filters.FilterSet):
|
||||
class InterfaceFilterSet(django_filters.FilterSet):
|
||||
q = django_filters.CharFilter(
|
||||
method='search',
|
||||
label='Search',
|
||||
|
@ -8,7 +8,7 @@ from virtualization.models import Cluster, ClusterGroup, ClusterType, VirtualMac
|
||||
|
||||
class ClusterTypeTestCase(TestCase):
|
||||
queryset = ClusterType.objects.all()
|
||||
filterset = ClusterTypeFilter
|
||||
filterset = ClusterTypeFilterSet
|
||||
|
||||
@classmethod
|
||||
def setUpTestData(cls):
|
||||
@ -36,7 +36,7 @@ class ClusterTypeTestCase(TestCase):
|
||||
|
||||
class ClusterGroupTestCase(TestCase):
|
||||
queryset = ClusterGroup.objects.all()
|
||||
filterset = ClusterGroupFilter
|
||||
filterset = ClusterGroupFilterSet
|
||||
|
||||
@classmethod
|
||||
def setUpTestData(cls):
|
||||
@ -64,7 +64,7 @@ class ClusterGroupTestCase(TestCase):
|
||||
|
||||
class ClusterTestCase(TestCase):
|
||||
queryset = Cluster.objects.all()
|
||||
filterset = ClusterFilter
|
||||
filterset = ClusterFilterSet
|
||||
|
||||
@classmethod
|
||||
def setUpTestData(cls):
|
||||
@ -146,7 +146,7 @@ class ClusterTestCase(TestCase):
|
||||
|
||||
class VirtualMachineTestCase(TestCase):
|
||||
queryset = VirtualMachine.objects.all()
|
||||
filterset = VirtualMachineFilter
|
||||
filterset = VirtualMachineFilterSet
|
||||
|
||||
@classmethod
|
||||
def setUpTestData(cls):
|
||||
@ -303,7 +303,7 @@ class VirtualMachineTestCase(TestCase):
|
||||
|
||||
class InterfaceTestCase(TestCase):
|
||||
queryset = Interface.objects.all()
|
||||
filterset = InterfaceFilter
|
||||
filterset = InterfaceFilterSet
|
||||
|
||||
@classmethod
|
||||
def setUpTestData(cls):
|
||||
|
@ -98,8 +98,8 @@ class ClusterListView(PermissionRequiredMixin, ObjectListView):
|
||||
permission_required = 'virtualization.view_cluster'
|
||||
queryset = Cluster.objects.prefetch_related('type', 'group', 'site', 'tenant')
|
||||
table = tables.ClusterTable
|
||||
filter = filters.ClusterFilter
|
||||
filter_form = forms.ClusterFilterForm
|
||||
filterset = filters.ClusterFilterSet
|
||||
filterset_form = forms.ClusterFilterForm
|
||||
template_name = 'virtualization/cluster_list.html'
|
||||
|
||||
|
||||
@ -149,7 +149,7 @@ class ClusterBulkImportView(PermissionRequiredMixin, BulkImportView):
|
||||
class ClusterBulkEditView(PermissionRequiredMixin, BulkEditView):
|
||||
permission_required = 'virtualization.change_cluster'
|
||||
queryset = Cluster.objects.prefetch_related('type', 'group', 'site')
|
||||
filter = filters.ClusterFilter
|
||||
filterset = filters.ClusterFilterSet
|
||||
table = tables.ClusterTable
|
||||
form = forms.ClusterBulkEditForm
|
||||
default_return_url = 'virtualization:cluster_list'
|
||||
@ -158,7 +158,7 @@ class ClusterBulkEditView(PermissionRequiredMixin, BulkEditView):
|
||||
class ClusterBulkDeleteView(PermissionRequiredMixin, BulkDeleteView):
|
||||
permission_required = 'virtualization.delete_cluster'
|
||||
queryset = Cluster.objects.prefetch_related('type', 'group', 'site')
|
||||
filter = filters.ClusterFilter
|
||||
filterset = filters.ClusterFilterSet
|
||||
table = tables.ClusterTable
|
||||
default_return_url = 'virtualization:cluster_list'
|
||||
|
||||
@ -254,8 +254,8 @@ class ClusterRemoveDevicesView(PermissionRequiredMixin, View):
|
||||
class VirtualMachineListView(PermissionRequiredMixin, ObjectListView):
|
||||
permission_required = 'virtualization.view_virtualmachine'
|
||||
queryset = VirtualMachine.objects.prefetch_related('cluster', 'tenant', 'role', 'primary_ip4', 'primary_ip6')
|
||||
filter = filters.VirtualMachineFilter
|
||||
filter_form = forms.VirtualMachineFilterForm
|
||||
filterset = filters.VirtualMachineFilterSet
|
||||
filterset_form = forms.VirtualMachineFilterForm
|
||||
table = tables.VirtualMachineDetailTable
|
||||
template_name = 'virtualization/virtualmachine_list.html'
|
||||
|
||||
@ -310,7 +310,7 @@ class VirtualMachineBulkImportView(PermissionRequiredMixin, BulkImportView):
|
||||
class VirtualMachineBulkEditView(PermissionRequiredMixin, BulkEditView):
|
||||
permission_required = 'virtualization.change_virtualmachine'
|
||||
queryset = VirtualMachine.objects.prefetch_related('cluster', 'tenant', 'role')
|
||||
filter = filters.VirtualMachineFilter
|
||||
filterset = filters.VirtualMachineFilterSet
|
||||
table = tables.VirtualMachineTable
|
||||
form = forms.VirtualMachineBulkEditForm
|
||||
default_return_url = 'virtualization:virtualmachine_list'
|
||||
@ -319,7 +319,7 @@ class VirtualMachineBulkEditView(PermissionRequiredMixin, BulkEditView):
|
||||
class VirtualMachineBulkDeleteView(PermissionRequiredMixin, BulkDeleteView):
|
||||
permission_required = 'virtualization.delete_virtualmachine'
|
||||
queryset = VirtualMachine.objects.prefetch_related('cluster', 'tenant', 'role')
|
||||
filter = filters.VirtualMachineFilter
|
||||
filterset = filters.VirtualMachineFilterSet
|
||||
table = tables.VirtualMachineTable
|
||||
default_return_url = 'virtualization:virtualmachine_list'
|
||||
|
||||
@ -376,6 +376,6 @@ class VirtualMachineBulkAddInterfaceView(PermissionRequiredMixin, BulkComponentC
|
||||
form = forms.VirtualMachineBulkAddInterfaceForm
|
||||
model = Interface
|
||||
model_form = forms.InterfaceForm
|
||||
filter = filters.VirtualMachineFilter
|
||||
filterset = filters.VirtualMachineFilterSet
|
||||
table = tables.VirtualMachineTable
|
||||
default_return_url = 'virtualization:virtualmachine_list'
|
||||
|
Loading…
Reference in New Issue
Block a user