Browse Source

Removed circuit-specific endpoint for CircuitTerminations

Jeremy Stretch 8 years ago
parent
commit
ea51f1c896

+ 25 - 13
netbox/circuits/api/serializers.py

@@ -58,19 +58,6 @@ class NestedCircuitTypeSerializer(serializers.ModelSerializer):
 
 
 #
-# Circuit Terminations
-#
-
-class CircuitTerminationSerializer(serializers.ModelSerializer):
-    site = NestedSiteSerializer()
-    interface = InterfaceSerializer()
-
-    class Meta:
-        model = CircuitTermination
-        fields = ['id', 'term_side', 'site', 'interface', 'port_speed', 'upstream_speed', 'xconnect_id', 'pp_info']
-
-
-#
 # Circuits
 #
 
@@ -103,3 +90,28 @@ class WritableCircuitSerializer(serializers.ModelSerializer):
         fields = [
             'id', 'cid', 'provider', 'type', 'tenant', 'install_date', 'commit_rate', 'description', 'comments',
         ]
+
+
+#
+# Circuit Terminations
+#
+
+class CircuitTerminationSerializer(serializers.ModelSerializer):
+    circuit = NestedCircuitSerializer()
+    site = NestedSiteSerializer()
+    interface = InterfaceSerializer()
+
+    class Meta:
+        model = CircuitTermination
+        fields = [
+            'id', 'circuit', 'term_side', 'site', 'interface', 'port_speed', 'upstream_speed', 'xconnect_id', 'pp_info',
+        ]
+
+
+class WritableCircuitTerminationSerializer(serializers.ModelSerializer):
+
+    class Meta:
+        model = CircuitTermination
+        fields = [
+            'id', 'circuit', 'term_side', 'site', 'interface', 'port_speed', 'upstream_speed', 'xconnect_id', 'pp_info',
+        ]

+ 0 - 3
netbox/circuits/api/urls.py

@@ -15,7 +15,4 @@ urlpatterns = [
 
     url(r'', include(router.urls)),
 
-    # Circuits
-    url(r'^circuits/(?P<pk>\d+)/terminations/$', views.NestedCircuitTerminationViewSet.as_view({'get': 'list'})),
-
 ]

+ 8 - 18
netbox/circuits/api/views.py

@@ -1,15 +1,11 @@
 from django.shortcuts import get_object_or_404
 
 from rest_framework.decorators import detail_route
-from rest_framework.mixins import (
-    CreateModelMixin, DestroyModelMixin, ListModelMixin, RetrieveModelMixin, UpdateModelMixin,
-)
 from rest_framework.response import Response
-from rest_framework.viewsets import GenericViewSet, ModelViewSet
+from rest_framework.viewsets import ModelViewSet
 
+from circuits import filters
 from circuits.models import Provider, CircuitTermination, CircuitType, Circuit
-from circuits.filters import CircuitFilter
-
 from extras.models import Graph, GRAPH_TYPE_PROVIDER
 from extras.api.serializers import GraphSerializer
 from extras.api.views import CustomFieldModelViewSet
@@ -25,6 +21,7 @@ class ProviderViewSet(WritableSerializerMixin, CustomFieldModelViewSet):
     queryset = Provider.objects.all()
     serializer_class = serializers.ProviderSerializer
     write_serializer_class = serializers.WritableProviderSerializer
+    filter_class = filters.ProviderFilter
 
     @detail_route()
     def graphs(self, request, pk=None):
@@ -51,22 +48,15 @@ class CircuitViewSet(WritableSerializerMixin, CustomFieldModelViewSet):
     queryset = Circuit.objects.select_related('type', 'tenant', 'provider')
     serializer_class = serializers.CircuitSerializer
     write_serializer_class = serializers.WritableCircuitSerializer
-    filter_class = CircuitFilter
+    filter_class = filters.CircuitFilter
 
 
 #
 # Circuit Terminations
 #
 
-class CircuitTerminationViewSet(RetrieveModelMixin, UpdateModelMixin, DestroyModelMixin, WritableSerializerMixin,
-                                GenericViewSet):
-    queryset = CircuitTermination.objects.select_related('site', 'interface__device')
+class CircuitTerminationViewSet(WritableSerializerMixin, ModelViewSet):
+    queryset = CircuitTermination.objects.select_related('circuit', 'site', 'interface__device')
     serializer_class = serializers.CircuitTerminationSerializer
-
-
-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')
+    write_serializer_class = serializers.WritableCircuitTerminationSerializer
+    filter_class = filters.CircuitTerminationFilter

+ 13 - 2
netbox/circuits/filters.py

@@ -6,8 +6,7 @@ from dcim.models import Site
 from extras.filters import CustomFieldFilterSet
 from tenancy.models import Tenant
 from utilities.filters import NullableModelMultipleChoiceFilter
-
-from .models import Provider, Circuit, CircuitType
+from .models import Provider, Circuit, CircuitTermination, CircuitType
 
 
 class ProviderFilter(CustomFieldFilterSet, django_filters.FilterSet):
@@ -101,3 +100,15 @@ class CircuitFilter(CustomFieldFilterSet, django_filters.FilterSet):
             Q(description__icontains=value) |
             Q(comments__icontains=value)
         ).distinct()
+
+
+class CircuitTerminationFilter(django_filters.FilterSet):
+    circuit_id = django_filters.ModelMultipleChoiceFilter(
+        name='circuit',
+        queryset=Circuit.objects.all(),
+        label='Circuit',
+    )
+
+    class Meta:
+        model = CircuitTermination
+        fields = ['term_side', 'site']