|
@@ -1,6 +1,11 @@
|
|
|
-from rest_framework.viewsets import ModelViewSet
|
|
|
+from django.shortcuts import get_object_or_404
|
|
|
|
|
|
-from circuits.models import Provider, CircuitType, Circuit
|
|
|
+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
|
|
|
from circuits.filters import CircuitFilter
|
|
|
|
|
|
from extras.api.views import CustomFieldModelViewSet
|
|
@@ -12,9 +17,6 @@ from . import serializers
|
|
|
#
|
|
|
|
|
|
class ProviderViewSet(CustomFieldModelViewSet):
|
|
|
- """
|
|
|
- List and retrieve circuit providers
|
|
|
- """
|
|
|
queryset = Provider.objects.all()
|
|
|
serializer_class = serializers.ProviderSerializer
|
|
|
|
|
@@ -24,9 +26,6 @@ class ProviderViewSet(CustomFieldModelViewSet):
|
|
|
#
|
|
|
|
|
|
class CircuitTypeViewSet(ModelViewSet):
|
|
|
- """
|
|
|
- List and retrieve circuit types
|
|
|
- """
|
|
|
queryset = CircuitType.objects.all()
|
|
|
serializer_class = serializers.CircuitTypeSerializer
|
|
|
|
|
@@ -36,9 +35,6 @@ class CircuitTypeViewSet(ModelViewSet):
|
|
|
#
|
|
|
|
|
|
class CircuitViewSet(CustomFieldModelViewSet):
|
|
|
- """
|
|
|
- List and retrieve circuits
|
|
|
- """
|
|
|
queryset = Circuit.objects.select_related('type', 'tenant', 'provider')
|
|
|
filter_class = CircuitFilter
|
|
|
|
|
@@ -46,3 +42,20 @@ class CircuitViewSet(CustomFieldModelViewSet):
|
|
|
if self.action == 'retrieve':
|
|
|
return serializers.CircuitDetailSerializer
|
|
|
return serializers.CircuitSerializer
|
|
|
+
|
|
|
+
|
|
|
+class NestedCircuitTerminationViewSet(CreateModelMixin, ListModelMixin, 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')
|
|
|
+
|
|
|
+
|
|
|
+#
|
|
|
+# Circuit Terminations
|
|
|
+#
|
|
|
+
|
|
|
+class CircuitTerminationViewSet(RetrieveModelMixin, UpdateModelMixin, DestroyModelMixin, GenericViewSet):
|
|
|
+ queryset = CircuitTermination.objects.select_related('site', 'interface__device')
|
|
|
+ serializer_class = serializers.CircuitTerminationSerializer
|