mirror of
https://github.com/netbox-community/netbox.git
synced 2024-05-10 07:54:54 +00:00
Added an endpoint for CircuitTerminations
This commit is contained in:
@ -5,13 +5,14 @@ from rest_framework import routers
|
|||||||
from extras.models import GRAPH_TYPE_PROVIDER
|
from extras.models import GRAPH_TYPE_PROVIDER
|
||||||
from extras.api.views import GraphListView
|
from extras.api.views import GraphListView
|
||||||
|
|
||||||
from .views import CircuitViewSet, CircuitTypeViewSet, ProviderViewSet
|
from . import views
|
||||||
|
|
||||||
|
|
||||||
router = routers.DefaultRouter()
|
router = routers.DefaultRouter()
|
||||||
router.register(r'providers', ProviderViewSet)
|
router.register(r'providers', views.ProviderViewSet)
|
||||||
router.register(r'circuit-types', CircuitTypeViewSet)
|
router.register(r'circuit-types', views.CircuitTypeViewSet)
|
||||||
router.register(r'circuits', CircuitViewSet)
|
router.register(r'circuits', views.CircuitViewSet)
|
||||||
|
router.register(r'circuit-terminations', views.CircuitTerminationViewSet)
|
||||||
|
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
|
|
||||||
@ -21,4 +22,7 @@ urlpatterns = [
|
|||||||
url(r'^providers/(?P<pk>\d+)/graphs/$', GraphListView.as_view(), {'type': GRAPH_TYPE_PROVIDER},
|
url(r'^providers/(?P<pk>\d+)/graphs/$', GraphListView.as_view(), {'type': GRAPH_TYPE_PROVIDER},
|
||||||
name='provider_graphs'),
|
name='provider_graphs'),
|
||||||
|
|
||||||
|
# Circuits
|
||||||
|
url(r'^circuits/(?P<pk>\d+)/terminations/$', views.NestedCircuitTerminationViewSet.as_view({'get': 'list'})),
|
||||||
|
|
||||||
]
|
]
|
||||||
|
@ -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 circuits.filters import CircuitFilter
|
||||||
|
|
||||||
from extras.api.views import CustomFieldModelViewSet
|
from extras.api.views import CustomFieldModelViewSet
|
||||||
@ -12,9 +17,6 @@ from . import serializers
|
|||||||
#
|
#
|
||||||
|
|
||||||
class ProviderViewSet(CustomFieldModelViewSet):
|
class ProviderViewSet(CustomFieldModelViewSet):
|
||||||
"""
|
|
||||||
List and retrieve circuit providers
|
|
||||||
"""
|
|
||||||
queryset = Provider.objects.all()
|
queryset = Provider.objects.all()
|
||||||
serializer_class = serializers.ProviderSerializer
|
serializer_class = serializers.ProviderSerializer
|
||||||
|
|
||||||
@ -24,9 +26,6 @@ class ProviderViewSet(CustomFieldModelViewSet):
|
|||||||
#
|
#
|
||||||
|
|
||||||
class CircuitTypeViewSet(ModelViewSet):
|
class CircuitTypeViewSet(ModelViewSet):
|
||||||
"""
|
|
||||||
List and retrieve circuit types
|
|
||||||
"""
|
|
||||||
queryset = CircuitType.objects.all()
|
queryset = CircuitType.objects.all()
|
||||||
serializer_class = serializers.CircuitTypeSerializer
|
serializer_class = serializers.CircuitTypeSerializer
|
||||||
|
|
||||||
@ -36,9 +35,6 @@ class CircuitTypeViewSet(ModelViewSet):
|
|||||||
#
|
#
|
||||||
|
|
||||||
class CircuitViewSet(CustomFieldModelViewSet):
|
class CircuitViewSet(CustomFieldModelViewSet):
|
||||||
"""
|
|
||||||
List and retrieve circuits
|
|
||||||
"""
|
|
||||||
queryset = Circuit.objects.select_related('type', 'tenant', 'provider')
|
queryset = Circuit.objects.select_related('type', 'tenant', 'provider')
|
||||||
filter_class = CircuitFilter
|
filter_class = CircuitFilter
|
||||||
|
|
||||||
@ -46,3 +42,20 @@ class CircuitViewSet(CustomFieldModelViewSet):
|
|||||||
if self.action == 'retrieve':
|
if self.action == 'retrieve':
|
||||||
return serializers.CircuitDetailSerializer
|
return serializers.CircuitDetailSerializer
|
||||||
return serializers.CircuitSerializer
|
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
|
||||||
|
Reference in New Issue
Block a user