mirror of
https://github.com/netbox-community/netbox.git
synced 2025-08-26 09:16:10 -06:00
add extend_schema_field to dcim
This commit is contained in:
parent
0a880fe6e3
commit
f54dbb66c0
@ -2,13 +2,13 @@ import decimal
|
|||||||
|
|
||||||
from django.contrib.contenttypes.models import ContentType
|
from django.contrib.contenttypes.models import ContentType
|
||||||
from django.utils.translation import gettext as _
|
from django.utils.translation import gettext as _
|
||||||
from drf_yasg.utils import swagger_serializer_method
|
|
||||||
from rest_framework import serializers
|
from rest_framework import serializers
|
||||||
from timezone_field.rest_framework import TimeZoneSerializerField
|
from timezone_field.rest_framework import TimeZoneSerializerField
|
||||||
|
|
||||||
from dcim.choices import *
|
from dcim.choices import *
|
||||||
from dcim.constants import *
|
from dcim.constants import *
|
||||||
from dcim.models import *
|
from dcim.models import *
|
||||||
|
from drf_spectacular.utils import extend_schema_field
|
||||||
from ipam.api.nested_serializers import (
|
from ipam.api.nested_serializers import (
|
||||||
NestedASNSerializer, NestedIPAddressSerializer, NestedL2VPNTerminationSerializer, NestedVLANSerializer,
|
NestedASNSerializer, NestedIPAddressSerializer, NestedL2VPNTerminationSerializer, NestedVLANSerializer,
|
||||||
NestedVRFSerializer,
|
NestedVRFSerializer,
|
||||||
@ -38,6 +38,7 @@ class CabledObjectSerializer(serializers.ModelSerializer):
|
|||||||
link_peers = serializers.SerializerMethodField(read_only=True)
|
link_peers = serializers.SerializerMethodField(read_only=True)
|
||||||
_occupied = serializers.SerializerMethodField(read_only=True)
|
_occupied = serializers.SerializerMethodField(read_only=True)
|
||||||
|
|
||||||
|
@extend_schema_field(serializers.CharField(allow_null=True))
|
||||||
def get_link_peers_type(self, obj):
|
def get_link_peers_type(self, obj):
|
||||||
"""
|
"""
|
||||||
Return the type of the peer link terminations, or None.
|
Return the type of the peer link terminations, or None.
|
||||||
@ -50,7 +51,7 @@ class CabledObjectSerializer(serializers.ModelSerializer):
|
|||||||
|
|
||||||
return None
|
return None
|
||||||
|
|
||||||
@swagger_serializer_method(serializer_or_field=serializers.ListField)
|
@extend_schema_field(serializers.DictField(allow_null=True))
|
||||||
def get_link_peers(self, obj):
|
def get_link_peers(self, obj):
|
||||||
"""
|
"""
|
||||||
Return the appropriate serializer for the link termination model.
|
Return the appropriate serializer for the link termination model.
|
||||||
@ -63,7 +64,6 @@ class CabledObjectSerializer(serializers.ModelSerializer):
|
|||||||
context = {'request': self.context['request']}
|
context = {'request': self.context['request']}
|
||||||
return serializer(obj.link_peers, context=context, many=True).data
|
return serializer(obj.link_peers, context=context, many=True).data
|
||||||
|
|
||||||
@swagger_serializer_method(serializer_or_field=serializers.BooleanField)
|
|
||||||
def get__occupied(self, obj):
|
def get__occupied(self, obj):
|
||||||
return obj._occupied
|
return obj._occupied
|
||||||
|
|
||||||
@ -76,11 +76,12 @@ class ConnectedEndpointsSerializer(serializers.ModelSerializer):
|
|||||||
connected_endpoints = serializers.SerializerMethodField(read_only=True)
|
connected_endpoints = serializers.SerializerMethodField(read_only=True)
|
||||||
connected_endpoints_reachable = serializers.SerializerMethodField(read_only=True)
|
connected_endpoints_reachable = serializers.SerializerMethodField(read_only=True)
|
||||||
|
|
||||||
|
@extend_schema_field(serializers.CharField(allow_null=True))
|
||||||
def get_connected_endpoints_type(self, obj):
|
def get_connected_endpoints_type(self, obj):
|
||||||
if endpoints := obj.connected_endpoints:
|
if endpoints := obj.connected_endpoints:
|
||||||
return f'{endpoints[0]._meta.app_label}.{endpoints[0]._meta.model_name}'
|
return f'{endpoints[0]._meta.app_label}.{endpoints[0]._meta.model_name}'
|
||||||
|
|
||||||
@swagger_serializer_method(serializer_or_field=serializers.ListField)
|
@extend_schema_field(serializers.DictField(allow_null=True))
|
||||||
def get_connected_endpoints(self, obj):
|
def get_connected_endpoints(self, obj):
|
||||||
"""
|
"""
|
||||||
Return the appropriate serializer for the type of connected object.
|
Return the appropriate serializer for the type of connected object.
|
||||||
@ -90,7 +91,7 @@ class ConnectedEndpointsSerializer(serializers.ModelSerializer):
|
|||||||
context = {'request': self.context['request']}
|
context = {'request': self.context['request']}
|
||||||
return serializer(endpoints, many=True, context=context).data
|
return serializer(endpoints, many=True, context=context).data
|
||||||
|
|
||||||
@swagger_serializer_method(serializer_or_field=serializers.BooleanField)
|
@extend_schema_field(serializers.BooleanField(allow_null=True))
|
||||||
def get_connected_endpoints_reachable(self, obj):
|
def get_connected_endpoints_reachable(self, obj):
|
||||||
return obj._path and obj._path.is_complete and obj._path.is_active
|
return obj._path and obj._path.is_complete and obj._path.is_active
|
||||||
|
|
||||||
@ -487,7 +488,7 @@ class InterfaceTemplateSerializer(ValidatedModelSerializer):
|
|||||||
class Meta:
|
class Meta:
|
||||||
model = InterfaceTemplate
|
model = InterfaceTemplate
|
||||||
fields = [
|
fields = [
|
||||||
'id', 'url', 'display', 'device_type', 'module_type', 'name', 'label', 'type', 'enabled', 'mgmt_only', 'description',
|
'id', 'url', 'display', 'device_type', 'module_type', 'name', 'label', 'type', 'mgmt_only', 'description',
|
||||||
'poe_mode', 'poe_type', 'created', 'last_updated',
|
'poe_mode', 'poe_type', 'created', 'last_updated',
|
||||||
]
|
]
|
||||||
|
|
||||||
@ -583,7 +584,6 @@ class InventoryItemTemplateSerializer(ValidatedModelSerializer):
|
|||||||
'description', 'component_type', 'component_id', 'component', 'created', 'last_updated', '_depth',
|
'description', 'component_type', 'component_id', 'component', 'created', 'last_updated', '_depth',
|
||||||
]
|
]
|
||||||
|
|
||||||
@swagger_serializer_method(serializer_or_field=serializers.JSONField)
|
|
||||||
def get_component(self, obj):
|
def get_component(self, obj):
|
||||||
if obj.component is None:
|
if obj.component is None:
|
||||||
return None
|
return None
|
||||||
@ -660,7 +660,7 @@ class DeviceSerializer(NetBoxModelSerializer):
|
|||||||
'comments', 'local_context_data', 'tags', 'custom_fields', 'created', 'last_updated',
|
'comments', 'local_context_data', 'tags', 'custom_fields', 'created', 'last_updated',
|
||||||
]
|
]
|
||||||
|
|
||||||
@swagger_serializer_method(serializer_or_field=NestedDeviceSerializer)
|
@extend_schema_field(NestedDeviceSerializer)
|
||||||
def get_parent_device(self, obj):
|
def get_parent_device(self, obj):
|
||||||
try:
|
try:
|
||||||
device_bay = obj.parent_bay
|
device_bay = obj.parent_bay
|
||||||
@ -683,7 +683,7 @@ class DeviceWithConfigContextSerializer(DeviceSerializer):
|
|||||||
'comments', 'local_context_data', 'tags', 'custom_fields', 'config_context', 'created', 'last_updated',
|
'comments', 'local_context_data', 'tags', 'custom_fields', 'config_context', 'created', 'last_updated',
|
||||||
]
|
]
|
||||||
|
|
||||||
@swagger_serializer_method(serializer_or_field=serializers.JSONField)
|
@extend_schema_field(serializers.DictField)
|
||||||
def get_config_context(self, obj):
|
def get_config_context(self, obj):
|
||||||
return obj.get_config_context()
|
return obj.get_config_context()
|
||||||
|
|
||||||
@ -1006,7 +1006,6 @@ class InventoryItemSerializer(NetBoxModelSerializer):
|
|||||||
'custom_fields', 'created', 'last_updated', '_depth',
|
'custom_fields', 'created', 'last_updated', '_depth',
|
||||||
]
|
]
|
||||||
|
|
||||||
@swagger_serializer_method(serializer_or_field=serializers.JSONField)
|
|
||||||
def get_component(self, obj):
|
def get_component(self, obj):
|
||||||
if obj.component is None:
|
if obj.component is None:
|
||||||
return None
|
return None
|
||||||
@ -1077,7 +1076,6 @@ class CableTerminationSerializer(NetBoxModelSerializer):
|
|||||||
'id', 'url', 'display', 'cable', 'cable_end', 'termination_type', 'termination_id', 'termination'
|
'id', 'url', 'display', 'cable', 'cable_end', 'termination_type', 'termination_id', 'termination'
|
||||||
]
|
]
|
||||||
|
|
||||||
@swagger_serializer_method(serializer_or_field=serializers.JSONField)
|
|
||||||
def get_termination(self, obj):
|
def get_termination(self, obj):
|
||||||
serializer = get_serializer_for_model(obj.termination, prefix=NESTED_SERIALIZER_PREFIX)
|
serializer = get_serializer_for_model(obj.termination, prefix=NESTED_SERIALIZER_PREFIX)
|
||||||
context = {'request': self.context['request']}
|
context = {'request': self.context['request']}
|
||||||
@ -1091,7 +1089,6 @@ class CablePathSerializer(serializers.ModelSerializer):
|
|||||||
model = CablePath
|
model = CablePath
|
||||||
fields = ['id', 'path', 'is_active', 'is_complete', 'is_split']
|
fields = ['id', 'path', 'is_active', 'is_complete', 'is_split']
|
||||||
|
|
||||||
@swagger_serializer_method(serializer_or_field=serializers.ListField)
|
|
||||||
def get_path(self, obj):
|
def get_path(self, obj):
|
||||||
ret = []
|
ret = []
|
||||||
for nodes in obj.path_objects:
|
for nodes in obj.path_objects:
|
||||||
|
Loading…
Reference in New Issue
Block a user