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

Upgraded django-filter to 2.0.0

This commit is contained in:
Jeremy Stretch
2018-11-02 13:46:28 -04:00
parent bb5c0989f3
commit 29d546a3f1
15 changed files with 248 additions and 197 deletions

View File

@ -29,7 +29,7 @@ class CircuitsFieldChoicesViewSet(FieldChoicesViewSet):
class ProviderViewSet(CustomFieldModelViewSet): class ProviderViewSet(CustomFieldModelViewSet):
queryset = Provider.objects.prefetch_related('tags') queryset = Provider.objects.prefetch_related('tags')
serializer_class = serializers.ProviderSerializer serializer_class = serializers.ProviderSerializer
filter_class = filters.ProviderFilter filterset_class = filters.ProviderFilter
@action(detail=True) @action(detail=True)
def graphs(self, request, pk=None): def graphs(self, request, pk=None):
@ -49,7 +49,7 @@ class ProviderViewSet(CustomFieldModelViewSet):
class CircuitTypeViewSet(ModelViewSet): class CircuitTypeViewSet(ModelViewSet):
queryset = CircuitType.objects.all() queryset = CircuitType.objects.all()
serializer_class = serializers.CircuitTypeSerializer serializer_class = serializers.CircuitTypeSerializer
filter_class = filters.CircuitTypeFilter filterset_class = filters.CircuitTypeFilter
# #
@ -59,7 +59,7 @@ class CircuitTypeViewSet(ModelViewSet):
class CircuitViewSet(CustomFieldModelViewSet): class CircuitViewSet(CustomFieldModelViewSet):
queryset = Circuit.objects.select_related('type', 'tenant', 'provider').prefetch_related('tags') queryset = Circuit.objects.select_related('type', 'tenant', 'provider').prefetch_related('tags')
serializer_class = serializers.CircuitSerializer serializer_class = serializers.CircuitSerializer
filter_class = filters.CircuitFilter filterset_class = filters.CircuitFilter
# #
@ -69,4 +69,4 @@ class CircuitViewSet(CustomFieldModelViewSet):
class CircuitTerminationViewSet(ModelViewSet): class CircuitTerminationViewSet(ModelViewSet):
queryset = CircuitTermination.objects.select_related('circuit', 'site') queryset = CircuitTermination.objects.select_related('circuit', 'site')
serializer_class = serializers.CircuitTerminationSerializer serializer_class = serializers.CircuitTerminationSerializer
filter_class = filters.CircuitTerminationFilter filterset_class = filters.CircuitTerminationFilter

View File

@ -10,24 +10,27 @@ from .models import Provider, Circuit, CircuitTermination, CircuitType
class ProviderFilter(CustomFieldFilterSet, django_filters.FilterSet): class ProviderFilter(CustomFieldFilterSet, django_filters.FilterSet):
id__in = NumericInFilter(name='id', lookup_expr='in') id__in = NumericInFilter(
field_name='id',
lookup_expr='in'
)
q = django_filters.CharFilter( q = django_filters.CharFilter(
method='search', method='search',
label='Search', label='Search',
) )
site_id = django_filters.ModelMultipleChoiceFilter( site_id = django_filters.ModelMultipleChoiceFilter(
name='circuits__terminations__site', field_name='circuits__terminations__site',
queryset=Site.objects.all(), queryset=Site.objects.all(),
label='Site', label='Site',
) )
site = django_filters.ModelMultipleChoiceFilter( site = django_filters.ModelMultipleChoiceFilter(
name='circuits__terminations__site__slug', field_name='circuits__terminations__site__slug',
queryset=Site.objects.all(), queryset=Site.objects.all(),
to_field_name='slug', to_field_name='slug',
label='Site (slug)', label='Site (slug)',
) )
tag = django_filters.CharFilter( tag = django_filters.CharFilter(
name='tags__slug', field_name='tags__slug',
) )
class Meta: class Meta:
@ -54,7 +57,10 @@ class CircuitTypeFilter(django_filters.FilterSet):
class CircuitFilter(CustomFieldFilterSet, django_filters.FilterSet): class CircuitFilter(CustomFieldFilterSet, django_filters.FilterSet):
id__in = NumericInFilter(name='id', lookup_expr='in') id__in = NumericInFilter(
field_name='id',
lookup_expr='in'
)
q = django_filters.CharFilter( q = django_filters.CharFilter(
method='search', method='search',
label='Search', label='Search',
@ -64,7 +70,7 @@ class CircuitFilter(CustomFieldFilterSet, django_filters.FilterSet):
label='Provider (ID)', label='Provider (ID)',
) )
provider = django_filters.ModelMultipleChoiceFilter( provider = django_filters.ModelMultipleChoiceFilter(
name='provider__slug', field_name='provider__slug',
queryset=Provider.objects.all(), queryset=Provider.objects.all(),
to_field_name='slug', to_field_name='slug',
label='Provider (slug)', label='Provider (slug)',
@ -74,7 +80,7 @@ class CircuitFilter(CustomFieldFilterSet, django_filters.FilterSet):
label='Circuit type (ID)', label='Circuit type (ID)',
) )
type = django_filters.ModelMultipleChoiceFilter( type = django_filters.ModelMultipleChoiceFilter(
name='type__slug', field_name='type__slug',
queryset=CircuitType.objects.all(), queryset=CircuitType.objects.all(),
to_field_name='slug', to_field_name='slug',
label='Circuit type (slug)', label='Circuit type (slug)',
@ -88,24 +94,24 @@ class CircuitFilter(CustomFieldFilterSet, django_filters.FilterSet):
label='Tenant (ID)', label='Tenant (ID)',
) )
tenant = django_filters.ModelMultipleChoiceFilter( tenant = django_filters.ModelMultipleChoiceFilter(
name='tenant__slug', field_name='tenant__slug',
queryset=Tenant.objects.all(), queryset=Tenant.objects.all(),
to_field_name='slug', to_field_name='slug',
label='Tenant (slug)', label='Tenant (slug)',
) )
site_id = django_filters.ModelMultipleChoiceFilter( site_id = django_filters.ModelMultipleChoiceFilter(
name='terminations__site', field_name='terminations__site',
queryset=Site.objects.all(), queryset=Site.objects.all(),
label='Site (ID)', label='Site (ID)',
) )
site = django_filters.ModelMultipleChoiceFilter( site = django_filters.ModelMultipleChoiceFilter(
name='terminations__site__slug', field_name='terminations__site__slug',
queryset=Site.objects.all(), queryset=Site.objects.all(),
to_field_name='slug', to_field_name='slug',
label='Site (slug)', label='Site (slug)',
) )
tag = django_filters.CharFilter( tag = django_filters.CharFilter(
name='tags__slug', field_name='tags__slug',
) )
class Meta: class Meta:
@ -138,7 +144,7 @@ class CircuitTerminationFilter(django_filters.FilterSet):
label='Site (ID)', label='Site (ID)',
) )
site = django_filters.ModelMultipleChoiceFilter( site = django_filters.ModelMultipleChoiceFilter(
name='site__slug', field_name='site__slug',
queryset=Site.objects.all(), queryset=Site.objects.all(),
to_field_name='slug', to_field_name='slug',
label='Site (slug)', label='Site (slug)',

View File

@ -86,7 +86,7 @@ class CableTraceMixin(object):
class RegionViewSet(ModelViewSet): class RegionViewSet(ModelViewSet):
queryset = Region.objects.all() queryset = Region.objects.all()
serializer_class = serializers.RegionSerializer serializer_class = serializers.RegionSerializer
filter_class = filters.RegionFilter filterset_class = filters.RegionFilter
# #
@ -96,7 +96,7 @@ class RegionViewSet(ModelViewSet):
class SiteViewSet(CustomFieldModelViewSet): class SiteViewSet(CustomFieldModelViewSet):
queryset = Site.objects.select_related('region', 'tenant').prefetch_related('tags') queryset = Site.objects.select_related('region', 'tenant').prefetch_related('tags')
serializer_class = serializers.SiteSerializer serializer_class = serializers.SiteSerializer
filter_class = filters.SiteFilter filterset_class = filters.SiteFilter
@action(detail=True) @action(detail=True)
def graphs(self, request, pk=None): def graphs(self, request, pk=None):
@ -116,7 +116,7 @@ class SiteViewSet(CustomFieldModelViewSet):
class RackGroupViewSet(ModelViewSet): class RackGroupViewSet(ModelViewSet):
queryset = RackGroup.objects.select_related('site') queryset = RackGroup.objects.select_related('site')
serializer_class = serializers.RackGroupSerializer serializer_class = serializers.RackGroupSerializer
filter_class = filters.RackGroupFilter filterset_class = filters.RackGroupFilter
# #
@ -126,7 +126,7 @@ class RackGroupViewSet(ModelViewSet):
class RackRoleViewSet(ModelViewSet): class RackRoleViewSet(ModelViewSet):
queryset = RackRole.objects.all() queryset = RackRole.objects.all()
serializer_class = serializers.RackRoleSerializer serializer_class = serializers.RackRoleSerializer
filter_class = filters.RackRoleFilter filterset_class = filters.RackRoleFilter
# #
@ -136,7 +136,7 @@ class RackRoleViewSet(ModelViewSet):
class RackViewSet(CustomFieldModelViewSet): class RackViewSet(CustomFieldModelViewSet):
queryset = Rack.objects.select_related('site', 'group__site', 'tenant').prefetch_related('tags') queryset = Rack.objects.select_related('site', 'group__site', 'tenant').prefetch_related('tags')
serializer_class = serializers.RackSerializer serializer_class = serializers.RackSerializer
filter_class = filters.RackFilter filterset_class = filters.RackFilter
@action(detail=True) @action(detail=True)
def units(self, request, pk=None): def units(self, request, pk=None):
@ -166,7 +166,7 @@ class RackViewSet(CustomFieldModelViewSet):
class RackReservationViewSet(ModelViewSet): class RackReservationViewSet(ModelViewSet):
queryset = RackReservation.objects.select_related('rack', 'user', 'tenant') queryset = RackReservation.objects.select_related('rack', 'user', 'tenant')
serializer_class = serializers.RackReservationSerializer serializer_class = serializers.RackReservationSerializer
filter_class = filters.RackReservationFilter filterset_class = filters.RackReservationFilter
# Assign user from request # Assign user from request
def perform_create(self, serializer): def perform_create(self, serializer):
@ -180,7 +180,7 @@ class RackReservationViewSet(ModelViewSet):
class ManufacturerViewSet(ModelViewSet): class ManufacturerViewSet(ModelViewSet):
queryset = Manufacturer.objects.all() queryset = Manufacturer.objects.all()
serializer_class = serializers.ManufacturerSerializer serializer_class = serializers.ManufacturerSerializer
filter_class = filters.ManufacturerFilter filterset_class = filters.ManufacturerFilter
# #
@ -190,7 +190,7 @@ class ManufacturerViewSet(ModelViewSet):
class DeviceTypeViewSet(CustomFieldModelViewSet): class DeviceTypeViewSet(CustomFieldModelViewSet):
queryset = DeviceType.objects.select_related('manufacturer').prefetch_related('tags') queryset = DeviceType.objects.select_related('manufacturer').prefetch_related('tags')
serializer_class = serializers.DeviceTypeSerializer serializer_class = serializers.DeviceTypeSerializer
filter_class = filters.DeviceTypeFilter filterset_class = filters.DeviceTypeFilter
# #
@ -200,49 +200,49 @@ class DeviceTypeViewSet(CustomFieldModelViewSet):
class ConsolePortTemplateViewSet(ModelViewSet): class ConsolePortTemplateViewSet(ModelViewSet):
queryset = ConsolePortTemplate.objects.select_related('device_type__manufacturer') queryset = ConsolePortTemplate.objects.select_related('device_type__manufacturer')
serializer_class = serializers.ConsolePortTemplateSerializer serializer_class = serializers.ConsolePortTemplateSerializer
filter_class = filters.ConsolePortTemplateFilter filterset_class = filters.ConsolePortTemplateFilter
class ConsoleServerPortTemplateViewSet(ModelViewSet): class ConsoleServerPortTemplateViewSet(ModelViewSet):
queryset = ConsoleServerPortTemplate.objects.select_related('device_type__manufacturer') queryset = ConsoleServerPortTemplate.objects.select_related('device_type__manufacturer')
serializer_class = serializers.ConsoleServerPortTemplateSerializer serializer_class = serializers.ConsoleServerPortTemplateSerializer
filter_class = filters.ConsoleServerPortTemplateFilter filterset_class = filters.ConsoleServerPortTemplateFilter
class PowerPortTemplateViewSet(ModelViewSet): class PowerPortTemplateViewSet(ModelViewSet):
queryset = PowerPortTemplate.objects.select_related('device_type__manufacturer') queryset = PowerPortTemplate.objects.select_related('device_type__manufacturer')
serializer_class = serializers.PowerPortTemplateSerializer serializer_class = serializers.PowerPortTemplateSerializer
filter_class = filters.PowerPortTemplateFilter filterset_class = filters.PowerPortTemplateFilter
class PowerOutletTemplateViewSet(ModelViewSet): class PowerOutletTemplateViewSet(ModelViewSet):
queryset = PowerOutletTemplate.objects.select_related('device_type__manufacturer') queryset = PowerOutletTemplate.objects.select_related('device_type__manufacturer')
serializer_class = serializers.PowerOutletTemplateSerializer serializer_class = serializers.PowerOutletTemplateSerializer
filter_class = filters.PowerOutletTemplateFilter filterset_class = filters.PowerOutletTemplateFilter
class InterfaceTemplateViewSet(ModelViewSet): class InterfaceTemplateViewSet(ModelViewSet):
queryset = InterfaceTemplate.objects.select_related('device_type__manufacturer') queryset = InterfaceTemplate.objects.select_related('device_type__manufacturer')
serializer_class = serializers.InterfaceTemplateSerializer serializer_class = serializers.InterfaceTemplateSerializer
filter_class = filters.InterfaceTemplateFilter filterset_class = filters.InterfaceTemplateFilter
class FrontPortTemplateViewSet(ModelViewSet): class FrontPortTemplateViewSet(ModelViewSet):
queryset = FrontPortTemplate.objects.select_related('device_type__manufacturer') queryset = FrontPortTemplate.objects.select_related('device_type__manufacturer')
serializer_class = serializers.FrontPortTemplateSerializer serializer_class = serializers.FrontPortTemplateSerializer
filter_class = filters.FrontPortTemplateFilter filterset_class = filters.FrontPortTemplateFilter
class RearPortTemplateViewSet(ModelViewSet): class RearPortTemplateViewSet(ModelViewSet):
queryset = RearPortTemplate.objects.select_related('device_type__manufacturer') queryset = RearPortTemplate.objects.select_related('device_type__manufacturer')
serializer_class = serializers.RearPortTemplateSerializer serializer_class = serializers.RearPortTemplateSerializer
filter_class = filters.RearPortTemplateFilter filterset_class = filters.RearPortTemplateFilter
class DeviceBayTemplateViewSet(ModelViewSet): class DeviceBayTemplateViewSet(ModelViewSet):
queryset = DeviceBayTemplate.objects.select_related('device_type__manufacturer') queryset = DeviceBayTemplate.objects.select_related('device_type__manufacturer')
serializer_class = serializers.DeviceBayTemplateSerializer serializer_class = serializers.DeviceBayTemplateSerializer
filter_class = filters.DeviceBayTemplateFilter filterset_class = filters.DeviceBayTemplateFilter
# #
@ -252,7 +252,7 @@ class DeviceBayTemplateViewSet(ModelViewSet):
class DeviceRoleViewSet(ModelViewSet): class DeviceRoleViewSet(ModelViewSet):
queryset = DeviceRole.objects.all() queryset = DeviceRole.objects.all()
serializer_class = serializers.DeviceRoleSerializer serializer_class = serializers.DeviceRoleSerializer
filter_class = filters.DeviceRoleFilter filterset_class = filters.DeviceRoleFilter
# #
@ -262,7 +262,7 @@ class DeviceRoleViewSet(ModelViewSet):
class PlatformViewSet(ModelViewSet): class PlatformViewSet(ModelViewSet):
queryset = Platform.objects.all() queryset = Platform.objects.all()
serializer_class = serializers.PlatformSerializer serializer_class = serializers.PlatformSerializer
filter_class = filters.PlatformFilter filterset_class = filters.PlatformFilter
# #
@ -276,7 +276,7 @@ class DeviceViewSet(CustomFieldModelViewSet):
).prefetch_related( ).prefetch_related(
'primary_ip4__nat_outside', 'primary_ip6__nat_outside', 'tags', 'primary_ip4__nat_outside', 'primary_ip6__nat_outside', 'tags',
) )
filter_class = filters.DeviceFilter filterset_class = filters.DeviceFilter
def get_serializer_class(self): def get_serializer_class(self):
""" """
@ -372,7 +372,7 @@ class ConsolePortViewSet(CableTraceMixin, ModelViewSet):
'tags' 'tags'
) )
serializer_class = serializers.ConsolePortSerializer serializer_class = serializers.ConsolePortSerializer
filter_class = filters.ConsolePortFilter filterset_class = filters.ConsolePortFilter
class ConsoleServerPortViewSet(CableTraceMixin, ModelViewSet): class ConsoleServerPortViewSet(CableTraceMixin, ModelViewSet):
@ -382,7 +382,7 @@ class ConsoleServerPortViewSet(CableTraceMixin, ModelViewSet):
'tags' 'tags'
) )
serializer_class = serializers.ConsoleServerPortSerializer serializer_class = serializers.ConsoleServerPortSerializer
filter_class = filters.ConsoleServerPortFilter filterset_class = filters.ConsoleServerPortFilter
class PowerPortViewSet(CableTraceMixin, ModelViewSet): class PowerPortViewSet(CableTraceMixin, ModelViewSet):
@ -392,7 +392,7 @@ class PowerPortViewSet(CableTraceMixin, ModelViewSet):
'tags' 'tags'
) )
serializer_class = serializers.PowerPortSerializer serializer_class = serializers.PowerPortSerializer
filter_class = filters.PowerPortFilter filterset_class = filters.PowerPortFilter
class PowerOutletViewSet(CableTraceMixin, ModelViewSet): class PowerOutletViewSet(CableTraceMixin, ModelViewSet):
@ -402,7 +402,7 @@ class PowerOutletViewSet(CableTraceMixin, ModelViewSet):
'tags' 'tags'
) )
serializer_class = serializers.PowerOutletSerializer serializer_class = serializers.PowerOutletSerializer
filter_class = filters.PowerOutletFilter filterset_class = filters.PowerOutletFilter
class InterfaceViewSet(CableTraceMixin, ModelViewSet): class InterfaceViewSet(CableTraceMixin, ModelViewSet):
@ -412,7 +412,7 @@ class InterfaceViewSet(CableTraceMixin, ModelViewSet):
'tags' 'tags'
) )
serializer_class = serializers.InterfaceSerializer serializer_class = serializers.InterfaceSerializer
filter_class = filters.InterfaceFilter filterset_class = filters.InterfaceFilter
@action(detail=True) @action(detail=True)
def graphs(self, request, pk=None): def graphs(self, request, pk=None):
@ -432,7 +432,7 @@ class FrontPortViewSet(ModelViewSet):
'tags' 'tags'
) )
serializer_class = serializers.FrontPortSerializer serializer_class = serializers.FrontPortSerializer
filter_class = filters.FrontPortFilter filterset_class = filters.FrontPortFilter
class RearPortViewSet(ModelViewSet): class RearPortViewSet(ModelViewSet):
@ -442,19 +442,19 @@ class RearPortViewSet(ModelViewSet):
'tags' 'tags'
) )
serializer_class = serializers.RearPortSerializer serializer_class = serializers.RearPortSerializer
filter_class = filters.RearPortFilter filterset_class = filters.RearPortFilter
class DeviceBayViewSet(ModelViewSet): class DeviceBayViewSet(ModelViewSet):
queryset = DeviceBay.objects.select_related('installed_device').prefetch_related('tags') queryset = DeviceBay.objects.select_related('installed_device').prefetch_related('tags')
serializer_class = serializers.DeviceBaySerializer serializer_class = serializers.DeviceBaySerializer
filter_class = filters.DeviceBayFilter filterset_class = filters.DeviceBayFilter
class InventoryItemViewSet(ModelViewSet): class InventoryItemViewSet(ModelViewSet):
queryset = InventoryItem.objects.select_related('device', 'manufacturer').prefetch_related('tags') queryset = InventoryItem.objects.select_related('device', 'manufacturer').prefetch_related('tags')
serializer_class = serializers.InventoryItemSerializer serializer_class = serializers.InventoryItemSerializer
filter_class = filters.InventoryItemFilter filterset_class = filters.InventoryItemFilter
# #
@ -468,7 +468,7 @@ class ConsoleConnectionViewSet(ListModelMixin, GenericViewSet):
connected_endpoint__isnull=False connected_endpoint__isnull=False
) )
serializer_class = serializers.ConsolePortSerializer serializer_class = serializers.ConsolePortSerializer
filter_class = filters.ConsoleConnectionFilter filterset_class = filters.ConsoleConnectionFilter
class PowerConnectionViewSet(ListModelMixin, GenericViewSet): class PowerConnectionViewSet(ListModelMixin, GenericViewSet):
@ -478,7 +478,7 @@ class PowerConnectionViewSet(ListModelMixin, GenericViewSet):
connected_endpoint__isnull=False connected_endpoint__isnull=False
) )
serializer_class = serializers.PowerPortSerializer serializer_class = serializers.PowerPortSerializer
filter_class = filters.PowerConnectionFilter filterset_class = filters.PowerConnectionFilter
class InterfaceConnectionViewSet(ModelViewSet): class InterfaceConnectionViewSet(ModelViewSet):
@ -490,7 +490,7 @@ class InterfaceConnectionViewSet(ModelViewSet):
Q(_connected_circuittermination__isnull=False) Q(_connected_circuittermination__isnull=False)
) )
serializer_class = serializers.InterfaceConnectionSerializer serializer_class = serializers.InterfaceConnectionSerializer
filter_class = filters.InterfaceConnectionFilter filterset_class = filters.InterfaceConnectionFilter
# #
@ -502,7 +502,7 @@ class CableViewSet(ModelViewSet):
'termination_a', 'termination_b' 'termination_a', 'termination_b'
) )
serializer_class = serializers.CableSerializer serializer_class = serializers.CableSerializer
filter_class = filters.CableFilter filterset_class = filters.CableFilter
# #

View File

@ -27,7 +27,7 @@ class RegionFilter(django_filters.FilterSet):
label='Parent region (ID)', label='Parent region (ID)',
) )
parent = django_filters.ModelMultipleChoiceFilter( parent = django_filters.ModelMultipleChoiceFilter(
name='parent__slug', field_name='parent__slug',
queryset=Region.objects.all(), queryset=Region.objects.all(),
to_field_name='slug', to_field_name='slug',
label='Parent region (slug)', label='Parent region (slug)',
@ -48,7 +48,10 @@ class RegionFilter(django_filters.FilterSet):
class SiteFilter(CustomFieldFilterSet, django_filters.FilterSet): class SiteFilter(CustomFieldFilterSet, django_filters.FilterSet):
id__in = NumericInFilter(name='id', lookup_expr='in') id__in = NumericInFilter(
field_name='id',
lookup_expr='in'
)
q = django_filters.CharFilter( q = django_filters.CharFilter(
method='search', method='search',
label='Search', label='Search',
@ -62,7 +65,7 @@ class SiteFilter(CustomFieldFilterSet, django_filters.FilterSet):
label='Region (ID)', label='Region (ID)',
) )
region = django_filters.ModelMultipleChoiceFilter( region = django_filters.ModelMultipleChoiceFilter(
name='region__slug', field_name='region__slug',
queryset=Region.objects.all(), queryset=Region.objects.all(),
to_field_name='slug', to_field_name='slug',
label='Region (slug)', label='Region (slug)',
@ -72,13 +75,13 @@ class SiteFilter(CustomFieldFilterSet, django_filters.FilterSet):
label='Tenant (ID)', label='Tenant (ID)',
) )
tenant = django_filters.ModelMultipleChoiceFilter( tenant = django_filters.ModelMultipleChoiceFilter(
name='tenant__slug', field_name='tenant__slug',
queryset=Tenant.objects.all(), queryset=Tenant.objects.all(),
to_field_name='slug', to_field_name='slug',
label='Tenant (slug)', label='Tenant (slug)',
) )
tag = django_filters.CharFilter( tag = django_filters.CharFilter(
name='tags__slug', field_name='tags__slug',
) )
class Meta: class Meta:
@ -116,7 +119,7 @@ class RackGroupFilter(django_filters.FilterSet):
label='Site (ID)', label='Site (ID)',
) )
site = django_filters.ModelMultipleChoiceFilter( site = django_filters.ModelMultipleChoiceFilter(
name='site__slug', field_name='site__slug',
queryset=Site.objects.all(), queryset=Site.objects.all(),
to_field_name='slug', to_field_name='slug',
label='Site (slug)', label='Site (slug)',
@ -144,7 +147,10 @@ class RackRoleFilter(django_filters.FilterSet):
class RackFilter(CustomFieldFilterSet, django_filters.FilterSet): class RackFilter(CustomFieldFilterSet, django_filters.FilterSet):
id__in = NumericInFilter(name='id', lookup_expr='in') id__in = NumericInFilter(
field_name='id',
lookup_expr='in'
)
q = django_filters.CharFilter( q = django_filters.CharFilter(
method='search', method='search',
label='Search', label='Search',
@ -155,7 +161,7 @@ class RackFilter(CustomFieldFilterSet, django_filters.FilterSet):
label='Site (ID)', label='Site (ID)',
) )
site = django_filters.ModelMultipleChoiceFilter( site = django_filters.ModelMultipleChoiceFilter(
name='site__slug', field_name='site__slug',
queryset=Site.objects.all(), queryset=Site.objects.all(),
to_field_name='slug', to_field_name='slug',
label='Site (slug)', label='Site (slug)',
@ -165,7 +171,7 @@ class RackFilter(CustomFieldFilterSet, django_filters.FilterSet):
label='Group (ID)', label='Group (ID)',
) )
group = django_filters.ModelMultipleChoiceFilter( group = django_filters.ModelMultipleChoiceFilter(
name='group__slug', field_name='group__slug',
queryset=RackGroup.objects.all(), queryset=RackGroup.objects.all(),
to_field_name='slug', to_field_name='slug',
label='Group', label='Group',
@ -175,7 +181,7 @@ class RackFilter(CustomFieldFilterSet, django_filters.FilterSet):
label='Tenant (ID)', label='Tenant (ID)',
) )
tenant = django_filters.ModelMultipleChoiceFilter( tenant = django_filters.ModelMultipleChoiceFilter(
name='tenant__slug', field_name='tenant__slug',
queryset=Tenant.objects.all(), queryset=Tenant.objects.all(),
to_field_name='slug', to_field_name='slug',
label='Tenant (slug)', label='Tenant (slug)',
@ -189,14 +195,14 @@ class RackFilter(CustomFieldFilterSet, django_filters.FilterSet):
label='Role (ID)', label='Role (ID)',
) )
role = django_filters.ModelMultipleChoiceFilter( role = django_filters.ModelMultipleChoiceFilter(
name='role__slug', field_name='role__slug',
queryset=RackRole.objects.all(), queryset=RackRole.objects.all(),
to_field_name='slug', to_field_name='slug',
label='Role (slug)', label='Role (slug)',
) )
asset_tag = NullableCharFieldFilter() asset_tag = NullableCharFieldFilter()
tag = django_filters.CharFilter( tag = django_filters.CharFilter(
name='tags__slug', field_name='tags__slug',
) )
class Meta: class Meta:
@ -219,7 +225,10 @@ class RackFilter(CustomFieldFilterSet, django_filters.FilterSet):
class RackReservationFilter(django_filters.FilterSet): class RackReservationFilter(django_filters.FilterSet):
id__in = NumericInFilter(name='id', lookup_expr='in') id__in = NumericInFilter(
field_name='id',
lookup_expr='in'
)
q = django_filters.CharFilter( q = django_filters.CharFilter(
method='search', method='search',
label='Search', label='Search',
@ -229,23 +238,23 @@ class RackReservationFilter(django_filters.FilterSet):
label='Rack (ID)', label='Rack (ID)',
) )
site_id = django_filters.ModelMultipleChoiceFilter( site_id = django_filters.ModelMultipleChoiceFilter(
name='rack__site', field_name='rack__site',
queryset=Site.objects.all(), queryset=Site.objects.all(),
label='Site (ID)', label='Site (ID)',
) )
site = django_filters.ModelMultipleChoiceFilter( site = django_filters.ModelMultipleChoiceFilter(
name='rack__site__slug', field_name='rack__site__slug',
queryset=Site.objects.all(), queryset=Site.objects.all(),
to_field_name='slug', to_field_name='slug',
label='Site (slug)', label='Site (slug)',
) )
group_id = django_filters.ModelMultipleChoiceFilter( group_id = django_filters.ModelMultipleChoiceFilter(
name='rack__group', field_name='rack__group',
queryset=RackGroup.objects.all(), queryset=RackGroup.objects.all(),
label='Group (ID)', label='Group (ID)',
) )
group = django_filters.ModelMultipleChoiceFilter( group = django_filters.ModelMultipleChoiceFilter(
name='rack__group__slug', field_name='rack__group__slug',
queryset=RackGroup.objects.all(), queryset=RackGroup.objects.all(),
to_field_name='slug', to_field_name='slug',
label='Group', label='Group',
@ -255,7 +264,7 @@ class RackReservationFilter(django_filters.FilterSet):
label='Tenant (ID)', label='Tenant (ID)',
) )
tenant = django_filters.ModelMultipleChoiceFilter( tenant = django_filters.ModelMultipleChoiceFilter(
name='tenant__slug', field_name='tenant__slug',
queryset=Tenant.objects.all(), queryset=Tenant.objects.all(),
to_field_name='slug', to_field_name='slug',
label='Tenant (slug)', label='Tenant (slug)',
@ -265,7 +274,7 @@ class RackReservationFilter(django_filters.FilterSet):
label='User (ID)', label='User (ID)',
) )
user = django_filters.ModelMultipleChoiceFilter( user = django_filters.ModelMultipleChoiceFilter(
name='user', field_name='user',
queryset=User.objects.all(), queryset=User.objects.all(),
to_field_name='username', to_field_name='username',
label='User (name)', label='User (name)',
@ -294,7 +303,10 @@ class ManufacturerFilter(django_filters.FilterSet):
class DeviceTypeFilter(CustomFieldFilterSet, django_filters.FilterSet): class DeviceTypeFilter(CustomFieldFilterSet, django_filters.FilterSet):
id__in = NumericInFilter(name='id', lookup_expr='in') id__in = NumericInFilter(
field_name='id',
lookup_expr='in'
)
q = django_filters.CharFilter( q = django_filters.CharFilter(
method='search', method='search',
label='Search', label='Search',
@ -304,7 +316,7 @@ class DeviceTypeFilter(CustomFieldFilterSet, django_filters.FilterSet):
label='Manufacturer (ID)', label='Manufacturer (ID)',
) )
manufacturer = django_filters.ModelMultipleChoiceFilter( manufacturer = django_filters.ModelMultipleChoiceFilter(
name='manufacturer__slug', field_name='manufacturer__slug',
queryset=Manufacturer.objects.all(), queryset=Manufacturer.objects.all(),
to_field_name='slug', to_field_name='slug',
label='Manufacturer (slug)', label='Manufacturer (slug)',
@ -334,7 +346,7 @@ class DeviceTypeFilter(CustomFieldFilterSet, django_filters.FilterSet):
label='Has pass-through ports', label='Has pass-through ports',
) )
tag = django_filters.CharFilter( tag = django_filters.CharFilter(
name='tags__slug', field_name='tags__slug',
) )
class Meta: class Meta:
@ -384,7 +396,7 @@ class DeviceTypeFilter(CustomFieldFilterSet, django_filters.FilterSet):
class DeviceTypeComponentFilterSet(django_filters.FilterSet): class DeviceTypeComponentFilterSet(django_filters.FilterSet):
devicetype_id = django_filters.ModelMultipleChoiceFilter( devicetype_id = django_filters.ModelMultipleChoiceFilter(
queryset=DeviceType.objects.all(), queryset=DeviceType.objects.all(),
name='device_type_id', field_name='device_type_id',
label='Device type (ID)', label='Device type (ID)',
) )
@ -454,12 +466,12 @@ class DeviceRoleFilter(django_filters.FilterSet):
class PlatformFilter(django_filters.FilterSet): class PlatformFilter(django_filters.FilterSet):
manufacturer_id = django_filters.ModelMultipleChoiceFilter( manufacturer_id = django_filters.ModelMultipleChoiceFilter(
name='manufacturer', field_name='manufacturer',
queryset=Manufacturer.objects.all(), queryset=Manufacturer.objects.all(),
label='Manufacturer (ID)', label='Manufacturer (ID)',
) )
manufacturer = django_filters.ModelMultipleChoiceFilter( manufacturer = django_filters.ModelMultipleChoiceFilter(
name='manufacturer__slug', field_name='manufacturer__slug',
queryset=Manufacturer.objects.all(), queryset=Manufacturer.objects.all(),
to_field_name='slug', to_field_name='slug',
label='Manufacturer (slug)', label='Manufacturer (slug)',
@ -471,18 +483,21 @@ class PlatformFilter(django_filters.FilterSet):
class DeviceFilter(CustomFieldFilterSet, django_filters.FilterSet): class DeviceFilter(CustomFieldFilterSet, django_filters.FilterSet):
id__in = NumericInFilter(name='id', lookup_expr='in') id__in = NumericInFilter(
field_name='id',
lookup_expr='in'
)
q = django_filters.CharFilter( q = django_filters.CharFilter(
method='search', method='search',
label='Search', label='Search',
) )
manufacturer_id = django_filters.ModelMultipleChoiceFilter( manufacturer_id = django_filters.ModelMultipleChoiceFilter(
name='device_type__manufacturer', field_name='device_type__manufacturer',
queryset=Manufacturer.objects.all(), queryset=Manufacturer.objects.all(),
label='Manufacturer (ID)', label='Manufacturer (ID)',
) )
manufacturer = django_filters.ModelMultipleChoiceFilter( manufacturer = django_filters.ModelMultipleChoiceFilter(
name='device_type__manufacturer__slug', field_name='device_type__manufacturer__slug',
queryset=Manufacturer.objects.all(), queryset=Manufacturer.objects.all(),
to_field_name='slug', to_field_name='slug',
label='Manufacturer (slug)', label='Manufacturer (slug)',
@ -492,12 +507,12 @@ class DeviceFilter(CustomFieldFilterSet, django_filters.FilterSet):
label='Device type (ID)', label='Device type (ID)',
) )
role_id = django_filters.ModelMultipleChoiceFilter( role_id = django_filters.ModelMultipleChoiceFilter(
name='device_role_id', field_name='device_role_id',
queryset=DeviceRole.objects.all(), queryset=DeviceRole.objects.all(),
label='Role (ID)', label='Role (ID)',
) )
role = django_filters.ModelMultipleChoiceFilter( role = django_filters.ModelMultipleChoiceFilter(
name='device_role__slug', field_name='device_role__slug',
queryset=DeviceRole.objects.all(), queryset=DeviceRole.objects.all(),
to_field_name='slug', to_field_name='slug',
label='Role (slug)', label='Role (slug)',
@ -507,7 +522,7 @@ class DeviceFilter(CustomFieldFilterSet, django_filters.FilterSet):
label='Tenant (ID)', label='Tenant (ID)',
) )
tenant = django_filters.ModelMultipleChoiceFilter( tenant = django_filters.ModelMultipleChoiceFilter(
name='tenant__slug', field_name='tenant__slug',
queryset=Tenant.objects.all(), queryset=Tenant.objects.all(),
to_field_name='slug', to_field_name='slug',
label='Tenant (slug)', label='Tenant (slug)',
@ -517,7 +532,7 @@ class DeviceFilter(CustomFieldFilterSet, django_filters.FilterSet):
label='Platform (ID)', label='Platform (ID)',
) )
platform = django_filters.ModelMultipleChoiceFilter( platform = django_filters.ModelMultipleChoiceFilter(
name='platform__slug', field_name='platform__slug',
queryset=Platform.objects.all(), queryset=Platform.objects.all(),
to_field_name='slug', to_field_name='slug',
label='Platform (slug)', label='Platform (slug)',
@ -529,18 +544,18 @@ class DeviceFilter(CustomFieldFilterSet, django_filters.FilterSet):
label='Site (ID)', label='Site (ID)',
) )
site = django_filters.ModelMultipleChoiceFilter( site = django_filters.ModelMultipleChoiceFilter(
name='site__slug', field_name='site__slug',
queryset=Site.objects.all(), queryset=Site.objects.all(),
to_field_name='slug', to_field_name='slug',
label='Site name (slug)', label='Site name (slug)',
) )
rack_group_id = django_filters.ModelMultipleChoiceFilter( rack_group_id = django_filters.ModelMultipleChoiceFilter(
name='rack__group', field_name='rack__group',
queryset=RackGroup.objects.all(), queryset=RackGroup.objects.all(),
label='Rack group (ID)', label='Rack group (ID)',
) )
rack_id = django_filters.ModelMultipleChoiceFilter( rack_id = django_filters.ModelMultipleChoiceFilter(
name='rack', field_name='rack',
queryset=Rack.objects.all(), queryset=Rack.objects.all(),
label='Rack (ID)', label='Rack (ID)',
) )
@ -549,7 +564,7 @@ class DeviceFilter(CustomFieldFilterSet, django_filters.FilterSet):
label='VM cluster (ID)', label='VM cluster (ID)',
) )
model = django_filters.ModelMultipleChoiceFilter( model = django_filters.ModelMultipleChoiceFilter(
name='device_type__slug', field_name='device_type__slug',
queryset=DeviceType.objects.all(), queryset=DeviceType.objects.all(),
to_field_name='slug', to_field_name='slug',
label='Device model (slug)', label='Device model (slug)',
@ -559,7 +574,7 @@ class DeviceFilter(CustomFieldFilterSet, django_filters.FilterSet):
null_value=None null_value=None
) )
is_full_depth = django_filters.BooleanFilter( is_full_depth = django_filters.BooleanFilter(
name='device_type__is_full_depth', field_name='device_type__is_full_depth',
label='Is full depth', label='Is full depth',
) )
console_ports = django_filters.CharFilter( console_ports = django_filters.CharFilter(
@ -595,12 +610,12 @@ class DeviceFilter(CustomFieldFilterSet, django_filters.FilterSet):
label='Has a primary IP', label='Has a primary IP',
) )
virtual_chassis_id = django_filters.ModelMultipleChoiceFilter( virtual_chassis_id = django_filters.ModelMultipleChoiceFilter(
name='virtual_chassis', field_name='virtual_chassis',
queryset=VirtualChassis.objects.all(), queryset=VirtualChassis.objects.all(),
label='Virtual chassis (ID)', label='Virtual chassis (ID)',
) )
tag = django_filters.CharFilter( tag = django_filters.CharFilter(
name='tags__slug', field_name='tags__slug',
) )
class Meta: class Meta:
@ -679,7 +694,7 @@ class DeviceComponentFilterSet(django_filters.FilterSet):
label='Device (name)', label='Device (name)',
) )
tag = django_filters.CharFilter( tag = django_filters.CharFilter(
name='tags__slug', field_name='tags__slug',
) )
@ -718,12 +733,12 @@ class InterfaceFilter(django_filters.FilterSet):
""" """
device = django_filters.CharFilter( device = django_filters.CharFilter(
method='filter_device', method='filter_device',
name='name', field_name='name',
label='Device', label='Device',
) )
device_id = django_filters.NumberFilter( device_id = django_filters.NumberFilter(
method='filter_device', method='filter_device',
name='pk', field_name='pk',
label='Device (ID)', label='Device (ID)',
) )
type = django_filters.CharFilter( type = django_filters.CharFilter(
@ -731,7 +746,7 @@ class InterfaceFilter(django_filters.FilterSet):
label='Interface type', label='Interface type',
) )
lag_id = django_filters.ModelMultipleChoiceFilter( lag_id = django_filters.ModelMultipleChoiceFilter(
name='lag', field_name='lag',
queryset=Interface.objects.all(), queryset=Interface.objects.all(),
label='LAG interface (ID)', label='LAG interface (ID)',
) )
@ -740,7 +755,7 @@ class InterfaceFilter(django_filters.FilterSet):
label='MAC address', label='MAC address',
) )
tag = django_filters.CharFilter( tag = django_filters.CharFilter(
name='tags__slug', field_name='tags__slug',
) )
class Meta: class Meta:
@ -811,7 +826,7 @@ class InventoryItemFilter(DeviceComponentFilterSet):
label='Manufacturer (ID)', label='Manufacturer (ID)',
) )
manufacturer = django_filters.ModelMultipleChoiceFilter( manufacturer = django_filters.ModelMultipleChoiceFilter(
name='manufacturer__slug', field_name='manufacturer__slug',
queryset=Manufacturer.objects.all(), queryset=Manufacturer.objects.all(),
to_field_name='slug', to_field_name='slug',
label='Manufacturer (slug)', label='Manufacturer (slug)',
@ -841,29 +856,29 @@ class VirtualChassisFilter(django_filters.FilterSet):
label='Search', label='Search',
) )
site_id = django_filters.ModelMultipleChoiceFilter( site_id = django_filters.ModelMultipleChoiceFilter(
name='master__site', field_name='master__site',
queryset=Site.objects.all(), queryset=Site.objects.all(),
label='Site (ID)', label='Site (ID)',
) )
site = django_filters.ModelMultipleChoiceFilter( site = django_filters.ModelMultipleChoiceFilter(
name='master__site__slug', field_name='master__site__slug',
queryset=Site.objects.all(), queryset=Site.objects.all(),
to_field_name='slug', to_field_name='slug',
label='Site name (slug)', label='Site name (slug)',
) )
tenant_id = django_filters.ModelMultipleChoiceFilter( tenant_id = django_filters.ModelMultipleChoiceFilter(
name='master__tenant', field_name='master__tenant',
queryset=Tenant.objects.all(), queryset=Tenant.objects.all(),
label='Tenant (ID)', label='Tenant (ID)',
) )
tenant = django_filters.ModelMultipleChoiceFilter( tenant = django_filters.ModelMultipleChoiceFilter(
name='master__tenant__slug', field_name='master__tenant__slug',
queryset=Tenant.objects.all(), queryset=Tenant.objects.all(),
to_field_name='slug', to_field_name='slug',
label='Tenant (slug)', label='Tenant (slug)',
) )
tag = django_filters.CharFilter( tag = django_filters.CharFilter(
name='tags__slug', field_name='tags__slug',
) )
class Meta: class Meta:

View File

@ -69,7 +69,7 @@ class CustomFieldModelViewSet(ModelViewSet):
class GraphViewSet(ModelViewSet): class GraphViewSet(ModelViewSet):
queryset = Graph.objects.all() queryset = Graph.objects.all()
serializer_class = serializers.GraphSerializer serializer_class = serializers.GraphSerializer
filter_class = filters.GraphFilter filterset_class = filters.GraphFilter
# #
@ -79,7 +79,7 @@ class GraphViewSet(ModelViewSet):
class ExportTemplateViewSet(ModelViewSet): class ExportTemplateViewSet(ModelViewSet):
queryset = ExportTemplate.objects.all() queryset = ExportTemplate.objects.all()
serializer_class = serializers.ExportTemplateSerializer serializer_class = serializers.ExportTemplateSerializer
filter_class = filters.ExportTemplateFilter filterset_class = filters.ExportTemplateFilter
# #
@ -89,7 +89,7 @@ class ExportTemplateViewSet(ModelViewSet):
class TopologyMapViewSet(ModelViewSet): class TopologyMapViewSet(ModelViewSet):
queryset = TopologyMap.objects.select_related('site') queryset = TopologyMap.objects.select_related('site')
serializer_class = serializers.TopologyMapSerializer serializer_class = serializers.TopologyMapSerializer
filter_class = filters.TopologyMapFilter filterset_class = filters.TopologyMapFilter
@action(detail=True) @action(detail=True)
def render(self, request, pk): def render(self, request, pk):
@ -118,7 +118,7 @@ class TopologyMapViewSet(ModelViewSet):
class TagViewSet(ModelViewSet): class TagViewSet(ModelViewSet):
queryset = Tag.objects.annotate(tagged_items=Count('taggit_taggeditem_items')) queryset = Tag.objects.annotate(tagged_items=Count('taggit_taggeditem_items'))
serializer_class = serializers.TagSerializer serializer_class = serializers.TagSerializer
filter_class = filters.TagFilter filterset_class = filters.TagFilter
# #
@ -139,7 +139,7 @@ class ConfigContextViewSet(ModelViewSet):
'regions', 'sites', 'roles', 'platforms', 'tenant_groups', 'tenants', 'regions', 'sites', 'roles', 'platforms', 'tenant_groups', 'tenants',
) )
serializer_class = serializers.ConfigContextSerializer serializer_class = serializers.ConfigContextSerializer
filter_class = filters.ConfigContextFilter filterset_class = filters.ConfigContextFilter
# #
@ -228,4 +228,4 @@ class ObjectChangeViewSet(ReadOnlyModelViewSet):
""" """
queryset = ObjectChange.objects.select_related('user') queryset = ObjectChange.objects.select_related('user')
serializer_class = serializers.ObjectChangeSerializer serializer_class = serializers.ObjectChangeSerializer
filter_class = filters.ObjectChangeFilter filterset_class = filters.ObjectChangeFilter

View File

@ -22,7 +22,7 @@ class CustomFieldFilter(django_filters.Filter):
def filter(self, queryset, value): def filter(self, queryset, value):
# Skip filter on empty value # Skip filter on empty value
if not value.strip(): if value is None or not value.strip():
return queryset return queryset
# Selection fields get special treatment (values must be integers) # Selection fields get special treatment (values must be integers)
@ -68,7 +68,7 @@ class CustomFieldFilterSet(django_filters.FilterSet):
obj_type = ContentType.objects.get_for_model(self._meta.model) obj_type = ContentType.objects.get_for_model(self._meta.model)
custom_fields = CustomField.objects.filter(obj_type=obj_type).exclude(filter_logic=CF_FILTER_DISABLED) custom_fields = CustomField.objects.filter(obj_type=obj_type).exclude(filter_logic=CF_FILTER_DISABLED)
for cf in custom_fields: for cf in custom_fields:
self.filters['cf_{}'.format(cf.name)] = CustomFieldFilter(name=cf.name, custom_field=cf) self.filters['cf_{}'.format(cf.name)] = CustomFieldFilter(field_name=cf.name, custom_field=cf)
class GraphFilter(django_filters.FilterSet): class GraphFilter(django_filters.FilterSet):
@ -106,12 +106,12 @@ class TagFilter(django_filters.FilterSet):
class TopologyMapFilter(django_filters.FilterSet): class TopologyMapFilter(django_filters.FilterSet):
site_id = django_filters.ModelMultipleChoiceFilter( site_id = django_filters.ModelMultipleChoiceFilter(
name='site', field_name='site',
queryset=Site.objects.all(), queryset=Site.objects.all(),
label='Site', label='Site',
) )
site = django_filters.ModelMultipleChoiceFilter( site = django_filters.ModelMultipleChoiceFilter(
name='site__slug', field_name='site__slug',
queryset=Site.objects.all(), queryset=Site.objects.all(),
to_field_name='slug', to_field_name='slug',
label='Site (slug)', label='Site (slug)',
@ -128,67 +128,67 @@ class ConfigContextFilter(django_filters.FilterSet):
label='Search', label='Search',
) )
region_id = django_filters.ModelMultipleChoiceFilter( region_id = django_filters.ModelMultipleChoiceFilter(
name='regions', field_name='regions',
queryset=Region.objects.all(), queryset=Region.objects.all(),
label='Region', label='Region',
) )
region = django_filters.ModelMultipleChoiceFilter( region = django_filters.ModelMultipleChoiceFilter(
name='regions__slug', field_name='regions__slug',
queryset=Region.objects.all(), queryset=Region.objects.all(),
to_field_name='slug', to_field_name='slug',
label='Region (slug)', label='Region (slug)',
) )
site_id = django_filters.ModelMultipleChoiceFilter( site_id = django_filters.ModelMultipleChoiceFilter(
name='sites', field_name='sites',
queryset=Site.objects.all(), queryset=Site.objects.all(),
label='Site', label='Site',
) )
site = django_filters.ModelMultipleChoiceFilter( site = django_filters.ModelMultipleChoiceFilter(
name='sites__slug', field_name='sites__slug',
queryset=Site.objects.all(), queryset=Site.objects.all(),
to_field_name='slug', to_field_name='slug',
label='Site (slug)', label='Site (slug)',
) )
role_id = django_filters.ModelMultipleChoiceFilter( role_id = django_filters.ModelMultipleChoiceFilter(
name='roles', field_name='roles',
queryset=DeviceRole.objects.all(), queryset=DeviceRole.objects.all(),
label='Role', label='Role',
) )
role = django_filters.ModelMultipleChoiceFilter( role = django_filters.ModelMultipleChoiceFilter(
name='roles__slug', field_name='roles__slug',
queryset=DeviceRole.objects.all(), queryset=DeviceRole.objects.all(),
to_field_name='slug', to_field_name='slug',
label='Role (slug)', label='Role (slug)',
) )
platform_id = django_filters.ModelMultipleChoiceFilter( platform_id = django_filters.ModelMultipleChoiceFilter(
name='platforms', field_name='platforms',
queryset=Platform.objects.all(), queryset=Platform.objects.all(),
label='Platform', label='Platform',
) )
platform = django_filters.ModelMultipleChoiceFilter( platform = django_filters.ModelMultipleChoiceFilter(
name='platforms__slug', field_name='platforms__slug',
queryset=Platform.objects.all(), queryset=Platform.objects.all(),
to_field_name='slug', to_field_name='slug',
label='Platform (slug)', label='Platform (slug)',
) )
tenant_group_id = django_filters.ModelMultipleChoiceFilter( tenant_group_id = django_filters.ModelMultipleChoiceFilter(
name='tenant_groups', field_name='tenant_groups',
queryset=TenantGroup.objects.all(), queryset=TenantGroup.objects.all(),
label='Tenant group', label='Tenant group',
) )
tenant_group = django_filters.ModelMultipleChoiceFilter( tenant_group = django_filters.ModelMultipleChoiceFilter(
name='tenant_groups__slug', field_name='tenant_groups__slug',
queryset=TenantGroup.objects.all(), queryset=TenantGroup.objects.all(),
to_field_name='slug', to_field_name='slug',
label='Tenant group (slug)', label='Tenant group (slug)',
) )
tenant_id = django_filters.ModelMultipleChoiceFilter( tenant_id = django_filters.ModelMultipleChoiceFilter(
name='tenants', field_name='tenants',
queryset=Tenant.objects.all(), queryset=Tenant.objects.all(),
label='Tenant', label='Tenant',
) )
tenant = django_filters.ModelMultipleChoiceFilter( tenant = django_filters.ModelMultipleChoiceFilter(
name='tenants__slug', field_name='tenants__slug',
queryset=Tenant.objects.all(), queryset=Tenant.objects.all(),
to_field_name='slug', to_field_name='slug',
label='Tenant (slug)', label='Tenant (slug)',

View File

@ -33,7 +33,7 @@ class IPAMFieldChoicesViewSet(FieldChoicesViewSet):
class VRFViewSet(CustomFieldModelViewSet): class VRFViewSet(CustomFieldModelViewSet):
queryset = VRF.objects.select_related('tenant').prefetch_related('tags') queryset = VRF.objects.select_related('tenant').prefetch_related('tags')
serializer_class = serializers.VRFSerializer serializer_class = serializers.VRFSerializer
filter_class = filters.VRFFilter filterset_class = filters.VRFFilter
# #
@ -43,7 +43,7 @@ class VRFViewSet(CustomFieldModelViewSet):
class RIRViewSet(ModelViewSet): class RIRViewSet(ModelViewSet):
queryset = RIR.objects.all() queryset = RIR.objects.all()
serializer_class = serializers.RIRSerializer serializer_class = serializers.RIRSerializer
filter_class = filters.RIRFilter filterset_class = filters.RIRFilter
# #
@ -53,7 +53,7 @@ class RIRViewSet(ModelViewSet):
class AggregateViewSet(CustomFieldModelViewSet): class AggregateViewSet(CustomFieldModelViewSet):
queryset = Aggregate.objects.select_related('rir').prefetch_related('tags') queryset = Aggregate.objects.select_related('rir').prefetch_related('tags')
serializer_class = serializers.AggregateSerializer serializer_class = serializers.AggregateSerializer
filter_class = filters.AggregateFilter filterset_class = filters.AggregateFilter
# #
@ -63,7 +63,7 @@ class AggregateViewSet(CustomFieldModelViewSet):
class RoleViewSet(ModelViewSet): class RoleViewSet(ModelViewSet):
queryset = Role.objects.all() queryset = Role.objects.all()
serializer_class = serializers.RoleSerializer serializer_class = serializers.RoleSerializer
filter_class = filters.RoleFilter filterset_class = filters.RoleFilter
# #
@ -73,7 +73,7 @@ class RoleViewSet(ModelViewSet):
class PrefixViewSet(CustomFieldModelViewSet): class PrefixViewSet(CustomFieldModelViewSet):
queryset = Prefix.objects.select_related('site', 'vrf__tenant', 'tenant', 'vlan', 'role').prefetch_related('tags') queryset = Prefix.objects.select_related('site', 'vrf__tenant', 'tenant', 'vlan', 'role').prefetch_related('tags')
serializer_class = serializers.PrefixSerializer serializer_class = serializers.PrefixSerializer
filter_class = filters.PrefixFilter filterset_class = filters.PrefixFilter
@action(detail=True, url_path='available-prefixes', methods=['get', 'post']) @action(detail=True, url_path='available-prefixes', methods=['get', 'post'])
def available_prefixes(self, request, pk=None): def available_prefixes(self, request, pk=None):
@ -246,7 +246,7 @@ class IPAddressViewSet(CustomFieldModelViewSet):
'nat_outside', 'tags', 'nat_outside', 'tags',
) )
serializer_class = serializers.IPAddressSerializer serializer_class = serializers.IPAddressSerializer
filter_class = filters.IPAddressFilter filterset_class = filters.IPAddressFilter
# #
@ -256,7 +256,7 @@ class IPAddressViewSet(CustomFieldModelViewSet):
class VLANGroupViewSet(ModelViewSet): class VLANGroupViewSet(ModelViewSet):
queryset = VLANGroup.objects.select_related('site') queryset = VLANGroup.objects.select_related('site')
serializer_class = serializers.VLANGroupSerializer serializer_class = serializers.VLANGroupSerializer
filter_class = filters.VLANGroupFilter filterset_class = filters.VLANGroupFilter
# #
@ -266,7 +266,7 @@ class VLANGroupViewSet(ModelViewSet):
class VLANViewSet(CustomFieldModelViewSet): class VLANViewSet(CustomFieldModelViewSet):
queryset = VLAN.objects.select_related('site', 'group', 'tenant', 'role').prefetch_related('tags') queryset = VLAN.objects.select_related('site', 'group', 'tenant', 'role').prefetch_related('tags')
serializer_class = serializers.VLANSerializer serializer_class = serializers.VLANSerializer
filter_class = filters.VLANFilter filterset_class = filters.VLANFilter
# #
@ -276,4 +276,4 @@ class VLANViewSet(CustomFieldModelViewSet):
class ServiceViewSet(ModelViewSet): class ServiceViewSet(ModelViewSet):
queryset = Service.objects.select_related('device').prefetch_related('tags') queryset = Service.objects.select_related('device').prefetch_related('tags')
serializer_class = serializers.ServiceSerializer serializer_class = serializers.ServiceSerializer
filter_class = filters.ServiceFilter filterset_class = filters.ServiceFilter

View File

@ -14,7 +14,10 @@ from .models import Aggregate, IPAddress, Prefix, RIR, Role, Service, VLAN, VLAN
class VRFFilter(CustomFieldFilterSet, django_filters.FilterSet): class VRFFilter(CustomFieldFilterSet, django_filters.FilterSet):
id__in = NumericInFilter(name='id', lookup_expr='in') id__in = NumericInFilter(
field_name='id',
lookup_expr='in'
)
q = django_filters.CharFilter( q = django_filters.CharFilter(
method='search', method='search',
label='Search', label='Search',
@ -24,13 +27,13 @@ class VRFFilter(CustomFieldFilterSet, django_filters.FilterSet):
label='Tenant (ID)', label='Tenant (ID)',
) )
tenant = django_filters.ModelMultipleChoiceFilter( tenant = django_filters.ModelMultipleChoiceFilter(
name='tenant__slug', field_name='tenant__slug',
queryset=Tenant.objects.all(), queryset=Tenant.objects.all(),
to_field_name='slug', to_field_name='slug',
label='Tenant (slug)', label='Tenant (slug)',
) )
tag = django_filters.CharFilter( tag = django_filters.CharFilter(
name='tags__slug', field_name='tags__slug',
) )
def search(self, queryset, name, value): def search(self, queryset, name, value):
@ -48,7 +51,10 @@ class VRFFilter(CustomFieldFilterSet, django_filters.FilterSet):
class RIRFilter(django_filters.FilterSet): class RIRFilter(django_filters.FilterSet):
id__in = NumericInFilter(name='id', lookup_expr='in') id__in = NumericInFilter(
field_name='id',
lookup_expr='in'
)
class Meta: class Meta:
model = RIR model = RIR
@ -56,7 +62,10 @@ class RIRFilter(django_filters.FilterSet):
class AggregateFilter(CustomFieldFilterSet, django_filters.FilterSet): class AggregateFilter(CustomFieldFilterSet, django_filters.FilterSet):
id__in = NumericInFilter(name='id', lookup_expr='in') id__in = NumericInFilter(
field_name='id',
lookup_expr='in'
)
q = django_filters.CharFilter( q = django_filters.CharFilter(
method='search', method='search',
label='Search', label='Search',
@ -66,13 +75,13 @@ class AggregateFilter(CustomFieldFilterSet, django_filters.FilterSet):
label='RIR (ID)', label='RIR (ID)',
) )
rir = django_filters.ModelMultipleChoiceFilter( rir = django_filters.ModelMultipleChoiceFilter(
name='rir__slug', field_name='rir__slug',
queryset=RIR.objects.all(), queryset=RIR.objects.all(),
to_field_name='slug', to_field_name='slug',
label='RIR (slug)', label='RIR (slug)',
) )
tag = django_filters.CharFilter( tag = django_filters.CharFilter(
name='tags__slug', field_name='tags__slug',
) )
class Meta: class Meta:
@ -99,7 +108,10 @@ class RoleFilter(django_filters.FilterSet):
class PrefixFilter(CustomFieldFilterSet, django_filters.FilterSet): class PrefixFilter(CustomFieldFilterSet, django_filters.FilterSet):
id__in = NumericInFilter(name='id', lookup_expr='in') id__in = NumericInFilter(
field_name='id',
lookup_expr='in'
)
q = django_filters.CharFilter( q = django_filters.CharFilter(
method='search', method='search',
label='Search', label='Search',
@ -125,7 +137,7 @@ class PrefixFilter(CustomFieldFilterSet, django_filters.FilterSet):
label='VRF', label='VRF',
) )
vrf = django_filters.ModelMultipleChoiceFilter( vrf = django_filters.ModelMultipleChoiceFilter(
name='vrf__rd', field_name='vrf__rd',
queryset=VRF.objects.all(), queryset=VRF.objects.all(),
to_field_name='rd', to_field_name='rd',
label='VRF (RD)', label='VRF (RD)',
@ -135,7 +147,7 @@ class PrefixFilter(CustomFieldFilterSet, django_filters.FilterSet):
label='Tenant (ID)', label='Tenant (ID)',
) )
tenant = django_filters.ModelMultipleChoiceFilter( tenant = django_filters.ModelMultipleChoiceFilter(
name='tenant__slug', field_name='tenant__slug',
queryset=Tenant.objects.all(), queryset=Tenant.objects.all(),
to_field_name='slug', to_field_name='slug',
label='Tenant (slug)', label='Tenant (slug)',
@ -145,7 +157,7 @@ class PrefixFilter(CustomFieldFilterSet, django_filters.FilterSet):
label='Site (ID)', label='Site (ID)',
) )
site = django_filters.ModelMultipleChoiceFilter( site = django_filters.ModelMultipleChoiceFilter(
name='site__slug', field_name='site__slug',
queryset=Site.objects.all(), queryset=Site.objects.all(),
to_field_name='slug', to_field_name='slug',
label='Site (slug)', label='Site (slug)',
@ -155,7 +167,7 @@ class PrefixFilter(CustomFieldFilterSet, django_filters.FilterSet):
label='VLAN (ID)', label='VLAN (ID)',
) )
vlan_vid = django_filters.NumberFilter( vlan_vid = django_filters.NumberFilter(
name='vlan__vid', field_name='vlan__vid',
label='VLAN number (1-4095)', label='VLAN number (1-4095)',
) )
role_id = django_filters.ModelMultipleChoiceFilter( role_id = django_filters.ModelMultipleChoiceFilter(
@ -163,7 +175,7 @@ class PrefixFilter(CustomFieldFilterSet, django_filters.FilterSet):
label='Role (ID)', label='Role (ID)',
) )
role = django_filters.ModelMultipleChoiceFilter( role = django_filters.ModelMultipleChoiceFilter(
name='role__slug', field_name='role__slug',
queryset=Role.objects.all(), queryset=Role.objects.all(),
to_field_name='slug', to_field_name='slug',
label='Role (slug)', label='Role (slug)',
@ -173,7 +185,7 @@ class PrefixFilter(CustomFieldFilterSet, django_filters.FilterSet):
null_value=None null_value=None
) )
tag = django_filters.CharFilter( tag = django_filters.CharFilter(
name='tags__slug', field_name='tags__slug',
) )
class Meta: class Meta:
@ -232,7 +244,10 @@ class PrefixFilter(CustomFieldFilterSet, django_filters.FilterSet):
class IPAddressFilter(CustomFieldFilterSet, django_filters.FilterSet): class IPAddressFilter(CustomFieldFilterSet, django_filters.FilterSet):
id__in = NumericInFilter(name='id', lookup_expr='in') id__in = NumericInFilter(
field_name='id',
lookup_expr='in'
)
q = django_filters.CharFilter( q = django_filters.CharFilter(
method='search', method='search',
label='Search', label='Search',
@ -254,7 +269,7 @@ class IPAddressFilter(CustomFieldFilterSet, django_filters.FilterSet):
label='VRF', label='VRF',
) )
vrf = django_filters.ModelMultipleChoiceFilter( vrf = django_filters.ModelMultipleChoiceFilter(
name='vrf__rd', field_name='vrf__rd',
queryset=VRF.objects.all(), queryset=VRF.objects.all(),
to_field_name='rd', to_field_name='rd',
label='VRF (RD)', label='VRF (RD)',
@ -264,28 +279,28 @@ class IPAddressFilter(CustomFieldFilterSet, django_filters.FilterSet):
label='Tenant (ID)', label='Tenant (ID)',
) )
tenant = django_filters.ModelMultipleChoiceFilter( tenant = django_filters.ModelMultipleChoiceFilter(
name='tenant__slug', field_name='tenant__slug',
queryset=Tenant.objects.all(), queryset=Tenant.objects.all(),
to_field_name='slug', to_field_name='slug',
label='Tenant (slug)', label='Tenant (slug)',
) )
device = django_filters.CharFilter( device = django_filters.CharFilter(
method='filter_device', method='filter_device',
name='name', field_name='name',
label='Device', label='Device',
) )
device_id = django_filters.NumberFilter( device_id = django_filters.NumberFilter(
method='filter_device', method='filter_device',
name='pk', field_name='pk',
label='Device (ID)', label='Device (ID)',
) )
virtual_machine_id = django_filters.ModelMultipleChoiceFilter( virtual_machine_id = django_filters.ModelMultipleChoiceFilter(
name='interface__virtual_machine', field_name='interface__virtual_machine',
queryset=VirtualMachine.objects.all(), queryset=VirtualMachine.objects.all(),
label='Virtual machine (ID)', label='Virtual machine (ID)',
) )
virtual_machine = django_filters.ModelMultipleChoiceFilter( virtual_machine = django_filters.ModelMultipleChoiceFilter(
name='interface__virtual_machine__name', field_name='interface__virtual_machine__name',
queryset=VirtualMachine.objects.all(), queryset=VirtualMachine.objects.all(),
to_field_name='name', to_field_name='name',
label='Virtual machine (name)', label='Virtual machine (name)',
@ -302,7 +317,7 @@ class IPAddressFilter(CustomFieldFilterSet, django_filters.FilterSet):
choices=IPADDRESS_ROLE_CHOICES choices=IPADDRESS_ROLE_CHOICES
) )
tag = django_filters.CharFilter( tag = django_filters.CharFilter(
name='tags__slug', field_name='tags__slug',
) )
class Meta: class Meta:
@ -359,7 +374,7 @@ class VLANGroupFilter(django_filters.FilterSet):
label='Site (ID)', label='Site (ID)',
) )
site = django_filters.ModelMultipleChoiceFilter( site = django_filters.ModelMultipleChoiceFilter(
name='site__slug', field_name='site__slug',
queryset=Site.objects.all(), queryset=Site.objects.all(),
to_field_name='slug', to_field_name='slug',
label='Site (slug)', label='Site (slug)',
@ -371,7 +386,10 @@ class VLANGroupFilter(django_filters.FilterSet):
class VLANFilter(CustomFieldFilterSet, django_filters.FilterSet): class VLANFilter(CustomFieldFilterSet, django_filters.FilterSet):
id__in = NumericInFilter(name='id', lookup_expr='in') id__in = NumericInFilter(
field_name='id',
lookup_expr='in'
)
q = django_filters.CharFilter( q = django_filters.CharFilter(
method='search', method='search',
label='Search', label='Search',
@ -381,7 +399,7 @@ class VLANFilter(CustomFieldFilterSet, django_filters.FilterSet):
label='Site (ID)', label='Site (ID)',
) )
site = django_filters.ModelMultipleChoiceFilter( site = django_filters.ModelMultipleChoiceFilter(
name='site__slug', field_name='site__slug',
queryset=Site.objects.all(), queryset=Site.objects.all(),
to_field_name='slug', to_field_name='slug',
label='Site (slug)', label='Site (slug)',
@ -391,7 +409,7 @@ class VLANFilter(CustomFieldFilterSet, django_filters.FilterSet):
label='Group (ID)', label='Group (ID)',
) )
group = django_filters.ModelMultipleChoiceFilter( group = django_filters.ModelMultipleChoiceFilter(
name='group__slug', field_name='group__slug',
queryset=VLANGroup.objects.all(), queryset=VLANGroup.objects.all(),
to_field_name='slug', to_field_name='slug',
label='Group', label='Group',
@ -401,7 +419,7 @@ class VLANFilter(CustomFieldFilterSet, django_filters.FilterSet):
label='Tenant (ID)', label='Tenant (ID)',
) )
tenant = django_filters.ModelMultipleChoiceFilter( tenant = django_filters.ModelMultipleChoiceFilter(
name='tenant__slug', field_name='tenant__slug',
queryset=Tenant.objects.all(), queryset=Tenant.objects.all(),
to_field_name='slug', to_field_name='slug',
label='Tenant (slug)', label='Tenant (slug)',
@ -411,7 +429,7 @@ class VLANFilter(CustomFieldFilterSet, django_filters.FilterSet):
label='Role (ID)', label='Role (ID)',
) )
role = django_filters.ModelMultipleChoiceFilter( role = django_filters.ModelMultipleChoiceFilter(
name='role__slug', field_name='role__slug',
queryset=Role.objects.all(), queryset=Role.objects.all(),
to_field_name='slug', to_field_name='slug',
label='Role (slug)', label='Role (slug)',
@ -421,7 +439,7 @@ class VLANFilter(CustomFieldFilterSet, django_filters.FilterSet):
null_value=None null_value=None
) )
tag = django_filters.CharFilter( tag = django_filters.CharFilter(
name='tags__slug', field_name='tags__slug',
) )
class Meta: class Meta:
@ -449,7 +467,7 @@ class ServiceFilter(django_filters.FilterSet):
label='Device (ID)', label='Device (ID)',
) )
device = django_filters.ModelMultipleChoiceFilter( device = django_filters.ModelMultipleChoiceFilter(
name='device__name', field_name='device__name',
queryset=Device.objects.all(), queryset=Device.objects.all(),
to_field_name='name', to_field_name='name',
label='Device (name)', label='Device (name)',
@ -459,13 +477,13 @@ class ServiceFilter(django_filters.FilterSet):
label='Virtual machine (ID)', label='Virtual machine (ID)',
) )
virtual_machine = django_filters.ModelMultipleChoiceFilter( virtual_machine = django_filters.ModelMultipleChoiceFilter(
name='virtual_machine__name', field_name='virtual_machine__name',
queryset=VirtualMachine.objects.all(), queryset=VirtualMachine.objects.all(),
to_field_name='name', to_field_name='name',
label='Virtual machine (name)', label='Virtual machine (name)',
) )
tag = django_filters.CharFilter( tag = django_filters.CharFilter(
name='tags__slug', field_name='tags__slug',
) )
class Meta: class Meta:

View File

@ -35,7 +35,7 @@ class SecretRoleViewSet(ModelViewSet):
queryset = SecretRole.objects.all() queryset = SecretRole.objects.all()
serializer_class = serializers.SecretRoleSerializer serializer_class = serializers.SecretRoleSerializer
permission_classes = [IsAuthenticated] permission_classes = [IsAuthenticated]
filter_class = filters.SecretRoleFilter filterset_class = filters.SecretRoleFilter
# #
@ -49,7 +49,7 @@ class SecretViewSet(ModelViewSet):
'role__users', 'role__groups', 'tags', 'role__users', 'role__groups', 'tags',
) )
serializer_class = serializers.SecretSerializer serializer_class = serializers.SecretSerializer
filter_class = filters.SecretFilter filterset_class = filters.SecretFilter
master_key = None master_key = None

View File

@ -15,7 +15,10 @@ class SecretRoleFilter(django_filters.FilterSet):
class SecretFilter(CustomFieldFilterSet, django_filters.FilterSet): class SecretFilter(CustomFieldFilterSet, django_filters.FilterSet):
id__in = NumericInFilter(name='id', lookup_expr='in') id__in = NumericInFilter(
field_name='id',
lookup_expr='in'
)
q = django_filters.CharFilter( q = django_filters.CharFilter(
method='search', method='search',
label='Search', label='Search',
@ -25,7 +28,7 @@ class SecretFilter(CustomFieldFilterSet, django_filters.FilterSet):
label='Role (ID)', label='Role (ID)',
) )
role = django_filters.ModelMultipleChoiceFilter( role = django_filters.ModelMultipleChoiceFilter(
name='role__slug', field_name='role__slug',
queryset=SecretRole.objects.all(), queryset=SecretRole.objects.all(),
to_field_name='slug', to_field_name='slug',
label='Role (slug)', label='Role (slug)',
@ -35,13 +38,13 @@ class SecretFilter(CustomFieldFilterSet, django_filters.FilterSet):
label='Device (ID)', label='Device (ID)',
) )
device = django_filters.ModelMultipleChoiceFilter( device = django_filters.ModelMultipleChoiceFilter(
name='device__name', field_name='device__name',
queryset=Device.objects.all(), queryset=Device.objects.all(),
to_field_name='name', to_field_name='name',
label='Device (name)', label='Device (name)',
) )
tag = django_filters.CharFilter( tag = django_filters.CharFilter(
name='tags__slug', field_name='tags__slug',
) )
class Meta: class Meta:

View File

@ -20,7 +20,7 @@ class TenancyFieldChoicesViewSet(FieldChoicesViewSet):
class TenantGroupViewSet(ModelViewSet): class TenantGroupViewSet(ModelViewSet):
queryset = TenantGroup.objects.all() queryset = TenantGroup.objects.all()
serializer_class = serializers.TenantGroupSerializer serializer_class = serializers.TenantGroupSerializer
filter_class = filters.TenantGroupFilter filterset_class = filters.TenantGroupFilter
# #
@ -30,4 +30,4 @@ class TenantGroupViewSet(ModelViewSet):
class TenantViewSet(CustomFieldModelViewSet): class TenantViewSet(CustomFieldModelViewSet):
queryset = Tenant.objects.select_related('group').prefetch_related('tags') queryset = Tenant.objects.select_related('group').prefetch_related('tags')
serializer_class = serializers.TenantSerializer serializer_class = serializers.TenantSerializer
filter_class = filters.TenantFilter filterset_class = filters.TenantFilter

View File

@ -14,7 +14,10 @@ class TenantGroupFilter(django_filters.FilterSet):
class TenantFilter(CustomFieldFilterSet, django_filters.FilterSet): class TenantFilter(CustomFieldFilterSet, django_filters.FilterSet):
id__in = NumericInFilter(name='id', lookup_expr='in') id__in = NumericInFilter(
field_name='id',
lookup_expr='in'
)
q = django_filters.CharFilter( q = django_filters.CharFilter(
method='search', method='search',
label='Search', label='Search',
@ -24,13 +27,13 @@ class TenantFilter(CustomFieldFilterSet, django_filters.FilterSet):
label='Group (ID)', label='Group (ID)',
) )
group = django_filters.ModelMultipleChoiceFilter( group = django_filters.ModelMultipleChoiceFilter(
name='group__slug', field_name='group__slug',
queryset=TenantGroup.objects.all(), queryset=TenantGroup.objects.all(),
to_field_name='slug', to_field_name='slug',
label='Group (slug)', label='Group (slug)',
) )
tag = django_filters.CharFilter( tag = django_filters.CharFilter(
name='tags__slug', field_name='tags__slug',
) )
class Meta: class Meta:

View File

@ -23,19 +23,19 @@ class VirtualizationFieldChoicesViewSet(FieldChoicesViewSet):
class ClusterTypeViewSet(ModelViewSet): class ClusterTypeViewSet(ModelViewSet):
queryset = ClusterType.objects.all() queryset = ClusterType.objects.all()
serializer_class = serializers.ClusterTypeSerializer serializer_class = serializers.ClusterTypeSerializer
filter_class = filters.ClusterTypeFilter filterset_class = filters.ClusterTypeFilter
class ClusterGroupViewSet(ModelViewSet): class ClusterGroupViewSet(ModelViewSet):
queryset = ClusterGroup.objects.all() queryset = ClusterGroup.objects.all()
serializer_class = serializers.ClusterGroupSerializer serializer_class = serializers.ClusterGroupSerializer
filter_class = filters.ClusterGroupFilter filterset_class = filters.ClusterGroupFilter
class ClusterViewSet(CustomFieldModelViewSet): class ClusterViewSet(CustomFieldModelViewSet):
queryset = Cluster.objects.select_related('type', 'group').prefetch_related('tags') queryset = Cluster.objects.select_related('type', 'group').prefetch_related('tags')
serializer_class = serializers.ClusterSerializer serializer_class = serializers.ClusterSerializer
filter_class = filters.ClusterFilter filterset_class = filters.ClusterFilter
# #
@ -46,7 +46,7 @@ class VirtualMachineViewSet(CustomFieldModelViewSet):
queryset = VirtualMachine.objects.select_related( queryset = VirtualMachine.objects.select_related(
'cluster__site', 'role', 'tenant', 'platform', 'primary_ip4', 'primary_ip6' 'cluster__site', 'role', 'tenant', 'platform', 'primary_ip4', 'primary_ip6'
).prefetch_related('tags') ).prefetch_related('tags')
filter_class = filters.VirtualMachineFilter filterset_class = filters.VirtualMachineFilter
def get_serializer_class(self): def get_serializer_class(self):
""" """
@ -67,7 +67,7 @@ class InterfaceViewSet(ModelViewSet):
virtual_machine__isnull=False virtual_machine__isnull=False
).select_related('virtual_machine').prefetch_related('tags') ).select_related('virtual_machine').prefetch_related('tags')
serializer_class = serializers.InterfaceSerializer serializer_class = serializers.InterfaceSerializer
filter_class = filters.InterfaceFilter filterset_class = filters.InterfaceFilter
def get_serializer_class(self): def get_serializer_class(self):
request = self.get_serializer_context()['request'] request = self.get_serializer_context()['request']

View File

@ -26,7 +26,10 @@ class ClusterGroupFilter(django_filters.FilterSet):
class ClusterFilter(CustomFieldFilterSet): class ClusterFilter(CustomFieldFilterSet):
id__in = NumericInFilter(name='id', lookup_expr='in') id__in = NumericInFilter(
field_name='id',
lookup_expr='in'
)
q = django_filters.CharFilter( q = django_filters.CharFilter(
method='search', method='search',
label='Search', label='Search',
@ -36,7 +39,7 @@ class ClusterFilter(CustomFieldFilterSet):
label='Parent group (ID)', label='Parent group (ID)',
) )
group = django_filters.ModelMultipleChoiceFilter( group = django_filters.ModelMultipleChoiceFilter(
name='group__slug', field_name='group__slug',
queryset=ClusterGroup.objects.all(), queryset=ClusterGroup.objects.all(),
to_field_name='slug', to_field_name='slug',
label='Parent group (slug)', label='Parent group (slug)',
@ -46,7 +49,7 @@ class ClusterFilter(CustomFieldFilterSet):
label='Cluster type (ID)', label='Cluster type (ID)',
) )
type = django_filters.ModelMultipleChoiceFilter( type = django_filters.ModelMultipleChoiceFilter(
name='type__slug', field_name='type__slug',
queryset=ClusterType.objects.all(), queryset=ClusterType.objects.all(),
to_field_name='slug', to_field_name='slug',
label='Cluster type (slug)', label='Cluster type (slug)',
@ -56,13 +59,13 @@ class ClusterFilter(CustomFieldFilterSet):
label='Site (ID)', label='Site (ID)',
) )
site = django_filters.ModelMultipleChoiceFilter( site = django_filters.ModelMultipleChoiceFilter(
name='site__slug', field_name='site__slug',
queryset=Site.objects.all(), queryset=Site.objects.all(),
to_field_name='slug', to_field_name='slug',
label='Site (slug)', label='Site (slug)',
) )
tag = django_filters.CharFilter( tag = django_filters.CharFilter(
name='tags__slug', field_name='tags__slug',
) )
class Meta: class Meta:
@ -79,7 +82,10 @@ class ClusterFilter(CustomFieldFilterSet):
class VirtualMachineFilter(CustomFieldFilterSet): class VirtualMachineFilter(CustomFieldFilterSet):
id__in = NumericInFilter(name='id', lookup_expr='in') id__in = NumericInFilter(
field_name='id',
lookup_expr='in'
)
q = django_filters.CharFilter( q = django_filters.CharFilter(
method='search', method='search',
label='Search', label='Search',
@ -89,23 +95,23 @@ class VirtualMachineFilter(CustomFieldFilterSet):
null_value=None null_value=None
) )
cluster_group_id = django_filters.ModelMultipleChoiceFilter( cluster_group_id = django_filters.ModelMultipleChoiceFilter(
name='cluster__group', field_name='cluster__group',
queryset=ClusterGroup.objects.all(), queryset=ClusterGroup.objects.all(),
label='Cluster group (ID)', label='Cluster group (ID)',
) )
cluster_group = django_filters.ModelMultipleChoiceFilter( cluster_group = django_filters.ModelMultipleChoiceFilter(
name='cluster__group__slug', field_name='cluster__group__slug',
queryset=ClusterGroup.objects.all(), queryset=ClusterGroup.objects.all(),
to_field_name='slug', to_field_name='slug',
label='Cluster group (slug)', label='Cluster group (slug)',
) )
cluster_type_id = django_filters.ModelMultipleChoiceFilter( cluster_type_id = django_filters.ModelMultipleChoiceFilter(
name='cluster__type', field_name='cluster__type',
queryset=ClusterType.objects.all(), queryset=ClusterType.objects.all(),
label='Cluster type (ID)', label='Cluster type (ID)',
) )
cluster_type = django_filters.ModelMultipleChoiceFilter( cluster_type = django_filters.ModelMultipleChoiceFilter(
name='cluster__type__slug', field_name='cluster__type__slug',
queryset=ClusterType.objects.all(), queryset=ClusterType.objects.all(),
to_field_name='slug', to_field_name='slug',
label='Cluster type (slug)', label='Cluster type (slug)',
@ -115,12 +121,12 @@ class VirtualMachineFilter(CustomFieldFilterSet):
label='Cluster (ID)', label='Cluster (ID)',
) )
site_id = django_filters.ModelMultipleChoiceFilter( site_id = django_filters.ModelMultipleChoiceFilter(
name='cluster__site', field_name='cluster__site',
queryset=Site.objects.all(), queryset=Site.objects.all(),
label='Site (ID)', label='Site (ID)',
) )
site = django_filters.ModelMultipleChoiceFilter( site = django_filters.ModelMultipleChoiceFilter(
name='cluster__site__slug', field_name='cluster__site__slug',
queryset=Site.objects.all(), queryset=Site.objects.all(),
to_field_name='slug', to_field_name='slug',
label='Site (slug)', label='Site (slug)',
@ -130,7 +136,7 @@ class VirtualMachineFilter(CustomFieldFilterSet):
label='Role (ID)', label='Role (ID)',
) )
role = django_filters.ModelMultipleChoiceFilter( role = django_filters.ModelMultipleChoiceFilter(
name='role__slug', field_name='role__slug',
queryset=DeviceRole.objects.all(), queryset=DeviceRole.objects.all(),
to_field_name='slug', to_field_name='slug',
label='Role (slug)', label='Role (slug)',
@ -140,7 +146,7 @@ class VirtualMachineFilter(CustomFieldFilterSet):
label='Tenant (ID)', label='Tenant (ID)',
) )
tenant = django_filters.ModelMultipleChoiceFilter( tenant = django_filters.ModelMultipleChoiceFilter(
name='tenant__slug', field_name='tenant__slug',
queryset=Tenant.objects.all(), queryset=Tenant.objects.all(),
to_field_name='slug', to_field_name='slug',
label='Tenant (slug)', label='Tenant (slug)',
@ -150,13 +156,13 @@ class VirtualMachineFilter(CustomFieldFilterSet):
label='Platform (ID)', label='Platform (ID)',
) )
platform = django_filters.ModelMultipleChoiceFilter( platform = django_filters.ModelMultipleChoiceFilter(
name='platform__slug', field_name='platform__slug',
queryset=Platform.objects.all(), queryset=Platform.objects.all(),
to_field_name='slug', to_field_name='slug',
label='Platform (slug)', label='Platform (slug)',
) )
tag = django_filters.CharFilter( tag = django_filters.CharFilter(
name='tags__slug', field_name='tags__slug',
) )
class Meta: class Meta:
@ -174,12 +180,12 @@ class VirtualMachineFilter(CustomFieldFilterSet):
class InterfaceFilter(django_filters.FilterSet): class InterfaceFilter(django_filters.FilterSet):
virtual_machine_id = django_filters.ModelMultipleChoiceFilter( virtual_machine_id = django_filters.ModelMultipleChoiceFilter(
name='virtual_machine', field_name='virtual_machine',
queryset=VirtualMachine.objects.all(), queryset=VirtualMachine.objects.all(),
label='Virtual machine (ID)', label='Virtual machine (ID)',
) )
virtual_machine = django_filters.ModelMultipleChoiceFilter( virtual_machine = django_filters.ModelMultipleChoiceFilter(
name='virtual_machine__name', field_name='virtual_machine__name',
queryset=VirtualMachine.objects.all(), queryset=VirtualMachine.objects.all(),
to_field_name='name', to_field_name='name',
label='Virtual machine', label='Virtual machine',

View File

@ -1,13 +1,13 @@
Django>=2.0,<2.1 Django>=2.0,<2.1
django-cors-headers==2.4.0 django-cors-headers==2.4.0
django-debug-toolbar==1.9.1 django-debug-toolbar==1.9.1
django-filter==1.1.0 django-filter==2.0.0
django-mptt==0.9.1 django-mptt==0.9.1
django-tables2==1.21.2 django-tables2==1.21.2
django-taggit==0.22.2 django-taggit==0.22.2
django-taggit-serializer==0.1.7 django-taggit-serializer==0.1.7
django-timezone-field==2.1 django-timezone-field==2.1
djangorestframework==3.8.2 djangorestframework==3.9.0
drf-yasg[validation]==1.9.2 drf-yasg[validation]==1.9.2
graphviz==0.8.4 graphviz==0.8.4
Markdown==2.6.11 Markdown==2.6.11