mirror of
https://github.com/netbox-community/netbox.git
synced 2024-05-10 07:54:54 +00:00
66 lines
1.7 KiB
Python
66 lines
1.7 KiB
Python
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
|
|
from extras.api.views import CustomFieldModelViewSet
|
|
from utilities.api import ModelViewSet
|
|
from . import serializers
|
|
|
|
|
|
class CircuitsRootView(APIRootView):
|
|
"""
|
|
Circuits API root view
|
|
"""
|
|
def get_view_name(self):
|
|
return 'Circuits'
|
|
|
|
|
|
#
|
|
# Providers
|
|
#
|
|
|
|
class ProviderViewSet(CustomFieldModelViewSet):
|
|
queryset = Provider.objects.prefetch_related('tags').annotate(
|
|
circuit_count=Count('circuits')
|
|
).order_by(*Provider._meta.ordering)
|
|
serializer_class = serializers.ProviderSerializer
|
|
filterset_class = filters.ProviderFilterSet
|
|
|
|
|
|
#
|
|
# Circuit Types
|
|
#
|
|
|
|
class CircuitTypeViewSet(ModelViewSet):
|
|
queryset = CircuitType.objects.annotate(
|
|
circuit_count=Count('circuits')
|
|
).order_by(*CircuitType._meta.ordering)
|
|
serializer_class = serializers.CircuitTypeSerializer
|
|
filterset_class = filters.CircuitTypeFilterSet
|
|
|
|
|
|
#
|
|
# Circuits
|
|
#
|
|
|
|
class CircuitViewSet(CustomFieldModelViewSet):
|
|
queryset = Circuit.objects.prefetch_related(
|
|
Prefetch('terminations', queryset=CircuitTermination.objects.prefetch_related('site')),
|
|
'type', 'tenant', 'provider',
|
|
).prefetch_related('tags')
|
|
serializer_class = serializers.CircuitSerializer
|
|
filterset_class = filters.CircuitFilterSet
|
|
|
|
|
|
#
|
|
# Circuit Terminations
|
|
#
|
|
|
|
class CircuitTerminationViewSet(ModelViewSet):
|
|
queryset = CircuitTermination.objects.prefetch_related(
|
|
'circuit', 'site', '_path__destination', 'cable'
|
|
)
|
|
serializer_class = serializers.CircuitTerminationSerializer
|
|
filterset_class = filters.CircuitTerminationFilterSet
|