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

79 lines
2.3 KiB
Python
Raw Normal View History

2017-05-24 11:33:11 -04:00
from __future__ import unicode_literals
2016-03-01 11:23:03 -05:00
2017-01-30 17:00:58 -05:00
from rest_framework.decorators import detail_route
from rest_framework.response import Response
from rest_framework.viewsets import ModelViewSet
2017-05-24 11:33:11 -04:00
from django.shortcuts import get_object_or_404
from circuits import filters
from circuits.models import Provider, CircuitTermination, CircuitType, Circuit
2017-01-30 17:00:58 -05:00
from extras.models import Graph, GRAPH_TYPE_PROVIDER
2017-03-20 15:14:33 -04:00
from extras.api.serializers import RenderedGraphSerializer
2017-01-24 17:12:16 -05:00
from extras.api.views import CustomFieldModelViewSet
from utilities.api import FieldChoicesViewSet, WritableSerializerMixin
2016-05-18 15:17:58 -04:00
from . import serializers
2016-03-01 11:23:03 -05:00
#
# Field choices
#
class CircuitsFieldChoicesViewSet(FieldChoicesViewSet):
fields = (
(CircuitTermination, ['term_side']),
)
2017-01-24 17:12:16 -05:00
#
# Providers
#
2016-03-01 11:23:03 -05:00
class ProviderViewSet(WritableSerializerMixin, CustomFieldModelViewSet):
2017-01-24 17:12:16 -05:00
queryset = Provider.objects.all()
2016-05-18 15:17:58 -04:00
serializer_class = serializers.ProviderSerializer
write_serializer_class = serializers.WritableProviderSerializer
filter_class = filters.ProviderFilter
2016-03-01 11:23:03 -05:00
2017-01-30 17:00:58 -05:00
@detail_route()
def graphs(self, request, pk=None):
2017-03-20 15:14:33 -04:00
"""
A convenience method for rendering graphs for a particular provider.
"""
2017-01-30 17:00:58 -05:00
provider = get_object_or_404(Provider, pk=pk)
queryset = Graph.objects.filter(type=GRAPH_TYPE_PROVIDER)
2017-03-20 15:14:33 -04:00
serializer = RenderedGraphSerializer(queryset, many=True, context={'graphed_object': provider})
2017-01-30 17:00:58 -05:00
return Response(serializer.data)
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
filter_class = filters.CircuitTypeFilter
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
write_serializer_class = serializers.WritableCircuitSerializer
filter_class = filters.CircuitFilter
2017-01-26 15:33:41 -05:00
#
# Circuit Terminations
#
class CircuitTerminationViewSet(WritableSerializerMixin, ModelViewSet):
queryset = CircuitTermination.objects.select_related('circuit', 'site', 'interface__device')
serializer_class = serializers.CircuitTerminationSerializer
write_serializer_class = serializers.WritableCircuitTerminationSerializer
filter_class = filters.CircuitTerminationFilter