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:
@ -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
|
||||||
|
@ -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)',
|
||||||
|
@ -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
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@ -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:
|
||||||
|
@ -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
|
||||||
|
@ -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)',
|
||||||
|
@ -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
|
||||||
|
@ -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:
|
||||||
|
@ -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
|
||||||
|
|
||||||
|
@ -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:
|
||||||
|
@ -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
|
||||||
|
@ -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:
|
||||||
|
@ -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']
|
||||||
|
@ -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',
|
||||||
|
@ -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
|
||||||
|
Reference in New Issue
Block a user