| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- from rest_framework.routers import APIRootView
- from circuits import filtersets
- from circuits.models import *
- from dcim.api.views import PassThroughPortMixin
- from netbox.api.viewsets import NetBoxModelViewSet
- from utilities.utils import count_related
- from . import serializers
- class CircuitsRootView(APIRootView):
- """
- Circuits API root view
- """
- def get_view_name(self):
- return 'Circuits'
- #
- # Providers
- #
- class ProviderViewSet(NetBoxModelViewSet):
- queryset = Provider.objects.prefetch_related('asns', 'tags').annotate(
- circuit_count=count_related(Circuit, 'provider')
- )
- serializer_class = serializers.ProviderSerializer
- filterset_class = filtersets.ProviderFilterSet
- #
- # Circuit Types
- #
- class CircuitTypeViewSet(NetBoxModelViewSet):
- queryset = CircuitType.objects.prefetch_related('tags').annotate(
- circuit_count=count_related(Circuit, 'type')
- )
- serializer_class = serializers.CircuitTypeSerializer
- filterset_class = filtersets.CircuitTypeFilterSet
- #
- # Circuits
- #
- class CircuitViewSet(NetBoxModelViewSet):
- queryset = Circuit.objects.prefetch_related(
- 'type', 'tenant', 'provider', 'provider_account', 'termination_a', 'termination_z'
- ).prefetch_related('tags')
- serializer_class = serializers.CircuitSerializer
- filterset_class = filtersets.CircuitFilterSet
- #
- # Circuit Terminations
- #
- class CircuitTerminationViewSet(PassThroughPortMixin, NetBoxModelViewSet):
- queryset = CircuitTermination.objects.prefetch_related(
- 'circuit', 'site', 'provider_network', 'cable__terminations'
- )
- serializer_class = serializers.CircuitTerminationSerializer
- filterset_class = filtersets.CircuitTerminationFilterSet
- brief_prefetch_fields = ['circuit']
- #
- # Provider accounts
- #
- class ProviderAccountViewSet(NetBoxModelViewSet):
- queryset = ProviderAccount.objects.prefetch_related('provider', 'tags')
- serializer_class = serializers.ProviderAccountSerializer
- filterset_class = filtersets.ProviderAccountFilterSet
- #
- # Provider networks
- #
- class ProviderNetworkViewSet(NetBoxModelViewSet):
- queryset = ProviderNetwork.objects.prefetch_related('tags')
- serializer_class = serializers.ProviderNetworkSerializer
- filterset_class = filtersets.ProviderNetworkFilterSet
|