netbox/netbox/circuits/api/nested_serializers.py

80 lines
1.9 KiB
Python
Raw Normal View History

import warnings
from drf_spectacular.utils import extend_schema_serializer
2021-03-18 11:10:48 -04:00
from circuits.models import *
from netbox.api.fields import RelatedObjectCountField
2022-07-13 16:18:55 -04:00
from netbox.api.serializers import WritableNestedSerializer
from .serializers_.nested import NestedProviderAccountSerializer
__all__ = [
'NestedCircuitSerializer',
'NestedCircuitTerminationSerializer',
'NestedCircuitTypeSerializer',
2021-04-01 10:21:41 -04:00
'NestedProviderNetworkSerializer',
'NestedProviderSerializer',
'NestedProviderAccountSerializer',
]
# TODO: Remove in v4.2
warnings.warn(
f"Dedicated nested serializers will be removed in NetBox v4.2. Use Serializer(nested=True) instead.",
DeprecationWarning
)
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
#
2021-04-01 10:21:41 -04:00
class NestedProviderNetworkSerializer(WritableNestedSerializer):
2021-03-18 11:10:48 -04:00
class Meta:
model = ProviderNetwork
fields = ['id', 'url', 'display_url', 'display', 'name']
2021-03-18 11:10:48 -04:00
#
# Providers
#
@extend_schema_serializer(
exclude_fields=('circuit_count',),
)
class NestedProviderSerializer(WritableNestedSerializer):
circuit_count = RelatedObjectCountField('circuits')
class Meta:
model = Provider
fields = ['id', 'url', 'display_url', 'display', 'name', 'slug', 'circuit_count']
#
# Circuits
#
@extend_schema_serializer(
exclude_fields=('circuit_count',),
)
class NestedCircuitTypeSerializer(WritableNestedSerializer):
circuit_count = RelatedObjectCountField('circuits')
class Meta:
model = CircuitType
fields = ['id', 'url', 'display_url', 'display', 'name', 'slug', 'circuit_count']
class NestedCircuitSerializer(WritableNestedSerializer):
class Meta:
model = Circuit
fields = ['id', 'url', 'display_url', 'display', 'cid']
class NestedCircuitTerminationSerializer(WritableNestedSerializer):
circuit = NestedCircuitSerializer()
class Meta:
model = CircuitTermination
fields = ['id', 'url', 'display_url', 'display', 'circuit', 'term_side', 'cable', '_occupied']