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

76 lines
1.9 KiB
Python
Raw Normal View History

from rest_framework.routers import APIRootView
2021-04-29 16:38:56 -04:00
from circuits import filtersets
2021-03-18 11:10:48 -04:00
from circuits.models import *
from dcim.api.views import PassThroughPortMixin
2022-03-09 11:09:06 -05:00
from netbox.api.viewsets import NetBoxModelViewSet
from utilities.utils import count_related
2016-05-18 15:17:58 -04:00
from . import serializers
2016-03-01 11:23:03 -05:00
class CircuitsRootView(APIRootView):
"""
Circuits API root view
"""
def get_view_name(self):
return 'Circuits'
2017-01-24 17:12:16 -05:00
#
# Providers
#
2016-03-01 11:23:03 -05:00
class ProviderViewSet(NetBoxModelViewSet):
queryset = Provider.objects.prefetch_related('asns', 'tags').annotate(
circuit_count=count_related(Circuit, 'provider')
)
2016-05-18 15:17:58 -04:00
serializer_class = serializers.ProviderSerializer
2021-04-29 16:38:56 -04:00
filterset_class = filtersets.ProviderFilterSet
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
class CircuitTypeViewSet(NetBoxModelViewSet):
queryset = CircuitType.objects.prefetch_related('tags').annotate(
circuit_count=count_related(Circuit, 'type')
)
2016-05-18 15:17:58 -04:00
serializer_class = serializers.CircuitTypeSerializer
2021-04-29 16:38:56 -04:00
filterset_class = filtersets.CircuitTypeFilterSet
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
class CircuitViewSet(NetBoxModelViewSet):
queryset = Circuit.objects.prefetch_related(
2021-03-18 13:54:05 -04:00
'type', 'tenant', 'provider', 'termination_a', 'termination_z'
).prefetch_related('tags')
2017-01-27 14:36:13 -05:00
serializer_class = serializers.CircuitSerializer
2021-04-29 16:38:56 -04:00
filterset_class = filtersets.CircuitFilterSet
2017-01-26 15:33:41 -05:00
#
# Circuit Terminations
#
2022-03-09 11:09:06 -05:00
class CircuitTerminationViewSet(PassThroughPortMixin, NetBoxModelViewSet):
queryset = CircuitTermination.objects.prefetch_related(
'circuit', 'site', 'provider_network', 'cable'
)
serializer_class = serializers.CircuitTerminationSerializer
2021-04-29 16:38:56 -04:00
filterset_class = filtersets.CircuitTerminationFilterSet
brief_prefetch_fields = ['circuit']
2021-03-18 11:10:48 -04:00
#
2021-04-01 10:21:41 -04:00
# Provider networks
2021-03-18 11:10:48 -04:00
#
class ProviderNetworkViewSet(NetBoxModelViewSet):
2021-04-01 10:21:41 -04:00
queryset = ProviderNetwork.objects.prefetch_related('tags')
serializer_class = serializers.ProviderNetworkSerializer
2021-04-29 16:38:56 -04:00
filterset_class = filtersets.ProviderNetworkFilterSet