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

60 lines
1.8 KiB
Python
Raw Normal View History

from django.shortcuts import get_object_or_404
2016-03-01 11:23:03 -05:00
from rest_framework.mixins import (
CreateModelMixin, DestroyModelMixin, ListModelMixin, RetrieveModelMixin, UpdateModelMixin,
)
from rest_framework.viewsets import GenericViewSet, ModelViewSet
from circuits.models import Provider, CircuitTermination, CircuitType, Circuit
2016-03-01 11:23:03 -05:00
from circuits.filters import CircuitFilter
2016-05-18 15:17:58 -04:00
2017-01-24 17:12:16 -05:00
from extras.api.views import CustomFieldModelViewSet
2017-01-27 14:36:13 -05:00
from utilities.api import WritableSerializerMixin
2016-05-18 15:17:58 -04:00
from . import serializers
2016-03-01 11:23:03 -05:00
2017-01-24 17:12:16 -05:00
#
# Providers
#
2016-03-01 11:23:03 -05:00
2017-01-24 17:12:16 -05:00
class ProviderViewSet(CustomFieldModelViewSet):
queryset = Provider.objects.all()
2016-05-18 15:17:58 -04:00
serializer_class = serializers.ProviderSerializer
2016-03-01 11:23:03 -05:00
2017-01-24 17:12:16 -05:00
#
# Circuit Types
#
2016-03-01 11:23:03 -05:00
2017-01-24 17:12:16 -05:00
class CircuitTypeViewSet(ModelViewSet):
2016-03-01 11:23:03 -05:00
queryset = CircuitType.objects.all()
2016-05-18 15:17:58 -04:00
serializer_class = serializers.CircuitTypeSerializer
2016-03-01 11:23:03 -05:00
2017-01-24 17:12:16 -05:00
#
# Circuits
#
2016-03-01 11:23:03 -05:00
2017-01-27 14:36:13 -05:00
class CircuitViewSet(WritableSerializerMixin, CustomFieldModelViewSet):
2017-01-24 17:12:16 -05:00
queryset = Circuit.objects.select_related('type', 'tenant', 'provider')
2017-01-27 14:36:13 -05:00
serializer_class = serializers.CircuitSerializer
2017-01-24 17:12:16 -05:00
filter_class = CircuitFilter
2017-01-26 15:33:41 -05:00
#
# Circuit Terminations
#
2017-01-27 14:36:13 -05:00
class CircuitTerminationViewSet(RetrieveModelMixin, UpdateModelMixin, DestroyModelMixin, WritableSerializerMixin,
GenericViewSet):
queryset = CircuitTermination.objects.select_related('site', 'interface__device')
serializer_class = serializers.CircuitTerminationSerializer
2017-01-27 14:36:13 -05:00
class NestedCircuitTerminationViewSet(CreateModelMixin, ListModelMixin ,WritableSerializerMixin, GenericViewSet):
serializer_class = serializers.CircuitTerminationSerializer
def get_queryset(self):
circuit = get_object_or_404(Circuit, pk=self.kwargs['pk'])
return CircuitTermination.objects.filter(circuit=circuit).select_related('site', 'interface__device')