Merge pull request #3881 from netbox-community/3729-filterset-naming

Fixes #3729: Standardize FilterSet names
This commit is contained in:
Jeremy Stretch 2020-01-10 08:58:17 -05:00 committed by GitHub
commit 03b22594e8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
31 changed files with 458 additions and 457 deletions

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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