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

66 lines
1.7 KiB
Python
Raw Normal View History

from django.db.models import Count, Prefetch
from rest_framework.routers import APIRootView
from circuits import filters
from circuits.models import Provider, CircuitTermination, CircuitType, Circuit
2017-01-24 17:12:16 -05:00
from extras.api.views import CustomFieldModelViewSet
2020-03-12 10:48:17 -04:00
from utilities.api import ModelViewSet
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(CustomFieldModelViewSet):
queryset = Provider.objects.prefetch_related('tags').annotate(
circuit_count=Count('circuits')
).order_by(*Provider._meta.ordering)
2016-05-18 15:17:58 -04:00
serializer_class = serializers.ProviderSerializer
2020-01-09 20:25:33 -05:00
filterset_class = filters.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
2017-01-24 17:12:16 -05:00
class CircuitTypeViewSet(ModelViewSet):
queryset = CircuitType.objects.annotate(
circuit_count=Count('circuits')
).order_by(*CircuitType._meta.ordering)
2016-05-18 15:17:58 -04:00
serializer_class = serializers.CircuitTypeSerializer
2020-01-09 20:25:33 -05:00
filterset_class = filters.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(CustomFieldModelViewSet):
queryset = Circuit.objects.prefetch_related(
Prefetch('terminations', queryset=CircuitTermination.objects.prefetch_related('site')),
'type', 'tenant', 'provider',
).prefetch_related('tags')
2017-01-27 14:36:13 -05:00
serializer_class = serializers.CircuitSerializer
2020-01-09 20:25:33 -05:00
filterset_class = filters.CircuitFilterSet
2017-01-26 15:33:41 -05:00
#
# Circuit Terminations
#
class CircuitTerminationViewSet(ModelViewSet):
queryset = CircuitTermination.objects.prefetch_related(
'circuit', 'site', '_path__destination', 'cable'
)
serializer_class = serializers.CircuitTerminationSerializer
2020-01-09 20:25:33 -05:00
filterset_class = filters.CircuitTerminationFilterSet