mirror of
https://github.com/netbox-community/netbox.git
synced 2025-07-24 17:38:37 -06:00
Define NESTED_SERIALIZER_PREFIX constant
This commit is contained in:
parent
68f53aaa87
commit
e07dd3ddcb
@ -15,6 +15,7 @@ from netbox.api.serializers import (
|
|||||||
NestedGroupModelSerializer, NetBoxModelSerializer, ValidatedModelSerializer, WritableNestedSerializer,
|
NestedGroupModelSerializer, NetBoxModelSerializer, ValidatedModelSerializer, WritableNestedSerializer,
|
||||||
)
|
)
|
||||||
from netbox.config import ConfigItem
|
from netbox.config import ConfigItem
|
||||||
|
from netbox.constants import NESTED_SERIALIZER_PREFIX
|
||||||
from tenancy.api.nested_serializers import NestedTenantSerializer
|
from tenancy.api.nested_serializers import NestedTenantSerializer
|
||||||
from users.api.nested_serializers import NestedUserSerializer
|
from users.api.nested_serializers import NestedUserSerializer
|
||||||
from utilities.api import get_serializer_for_model
|
from utilities.api import get_serializer_for_model
|
||||||
@ -41,7 +42,7 @@ class LinkTerminationSerializer(serializers.ModelSerializer):
|
|||||||
Return the appropriate serializer for the link termination model.
|
Return the appropriate serializer for the link termination model.
|
||||||
"""
|
"""
|
||||||
if obj._link_peer is not None:
|
if obj._link_peer is not None:
|
||||||
serializer = get_serializer_for_model(obj._link_peer, prefix='Nested')
|
serializer = get_serializer_for_model(obj._link_peer, prefix=NESTED_SERIALIZER_PREFIX)
|
||||||
context = {'request': self.context['request']}
|
context = {'request': self.context['request']}
|
||||||
return serializer(obj._link_peer, context=context).data
|
return serializer(obj._link_peer, context=context).data
|
||||||
return None
|
return None
|
||||||
@ -67,7 +68,7 @@ class ConnectedEndpointSerializer(serializers.ModelSerializer):
|
|||||||
Return the appropriate serializer for the type of connected object.
|
Return the appropriate serializer for the type of connected object.
|
||||||
"""
|
"""
|
||||||
if obj._path is not None and obj._path.destination is not None:
|
if obj._path is not None and obj._path.destination is not None:
|
||||||
serializer = get_serializer_for_model(obj._path.destination, prefix='Nested')
|
serializer = get_serializer_for_model(obj._path.destination, prefix=NESTED_SERIALIZER_PREFIX)
|
||||||
context = {'request': self.context['request']}
|
context = {'request': self.context['request']}
|
||||||
return serializer(obj._path.destination, context=context).data
|
return serializer(obj._path.destination, context=context).data
|
||||||
return None
|
return None
|
||||||
@ -543,7 +544,7 @@ class InventoryItemTemplateSerializer(ValidatedModelSerializer):
|
|||||||
def get_component(self, obj):
|
def get_component(self, obj):
|
||||||
if obj.component is None:
|
if obj.component is None:
|
||||||
return None
|
return None
|
||||||
serializer = get_serializer_for_model(obj.component, prefix='Nested')
|
serializer = get_serializer_for_model(obj.component, prefix=NESTED_SERIALIZER_PREFIX)
|
||||||
context = {'request': self.context['request']}
|
context = {'request': self.context['request']}
|
||||||
return serializer(obj.component, context=context).data
|
return serializer(obj.component, context=context).data
|
||||||
|
|
||||||
@ -935,7 +936,7 @@ class InventoryItemSerializer(NetBoxModelSerializer):
|
|||||||
def get_component(self, obj):
|
def get_component(self, obj):
|
||||||
if obj.component is None:
|
if obj.component is None:
|
||||||
return None
|
return None
|
||||||
serializer = get_serializer_for_model(obj.component, prefix='Nested')
|
serializer = get_serializer_for_model(obj.component, prefix=NESTED_SERIALIZER_PREFIX)
|
||||||
context = {'request': self.context['request']}
|
context = {'request': self.context['request']}
|
||||||
return serializer(obj.component, context=context).data
|
return serializer(obj.component, context=context).data
|
||||||
|
|
||||||
@ -991,7 +992,7 @@ class CableSerializer(NetBoxModelSerializer):
|
|||||||
termination = getattr(obj, 'termination_{}'.format(side.lower()))
|
termination = getattr(obj, 'termination_{}'.format(side.lower()))
|
||||||
if termination is None:
|
if termination is None:
|
||||||
return None
|
return None
|
||||||
serializer = get_serializer_for_model(termination, prefix='Nested')
|
serializer = get_serializer_for_model(termination, prefix=NESTED_SERIALIZER_PREFIX)
|
||||||
context = {'request': self.context['request']}
|
context = {'request': self.context['request']}
|
||||||
data = serializer(termination, context=context).data
|
data = serializer(termination, context=context).data
|
||||||
|
|
||||||
@ -1037,7 +1038,7 @@ class CablePathSerializer(serializers.ModelSerializer):
|
|||||||
"""
|
"""
|
||||||
Return the appropriate serializer for the origin.
|
Return the appropriate serializer for the origin.
|
||||||
"""
|
"""
|
||||||
serializer = get_serializer_for_model(obj.origin, prefix='Nested')
|
serializer = get_serializer_for_model(obj.origin, prefix=NESTED_SERIALIZER_PREFIX)
|
||||||
context = {'request': self.context['request']}
|
context = {'request': self.context['request']}
|
||||||
return serializer(obj.origin, context=context).data
|
return serializer(obj.origin, context=context).data
|
||||||
|
|
||||||
@ -1047,7 +1048,7 @@ class CablePathSerializer(serializers.ModelSerializer):
|
|||||||
Return the appropriate serializer for the destination, if any.
|
Return the appropriate serializer for the destination, if any.
|
||||||
"""
|
"""
|
||||||
if obj.destination_id is not None:
|
if obj.destination_id is not None:
|
||||||
serializer = get_serializer_for_model(obj.destination, prefix='Nested')
|
serializer = get_serializer_for_model(obj.destination, prefix=NESTED_SERIALIZER_PREFIX)
|
||||||
context = {'request': self.context['request']}
|
context = {'request': self.context['request']}
|
||||||
return serializer(obj.destination, context=context).data
|
return serializer(obj.destination, context=context).data
|
||||||
return None
|
return None
|
||||||
@ -1056,7 +1057,7 @@ class CablePathSerializer(serializers.ModelSerializer):
|
|||||||
def get_path(self, obj):
|
def get_path(self, obj):
|
||||||
ret = []
|
ret = []
|
||||||
for node in obj.get_path():
|
for node in obj.get_path():
|
||||||
serializer = get_serializer_for_model(node, prefix='Nested')
|
serializer = get_serializer_for_model(node, prefix=NESTED_SERIALIZER_PREFIX)
|
||||||
context = {'request': self.context['request']}
|
context = {'request': self.context['request']}
|
||||||
ret.append(serializer(node, context=context).data)
|
ret.append(serializer(node, context=context).data)
|
||||||
return ret
|
return ret
|
||||||
|
@ -22,6 +22,7 @@ from netbox.api.metadata import ContentTypeMetadata
|
|||||||
from netbox.api.pagination import StripCountAnnotationsPaginator
|
from netbox.api.pagination import StripCountAnnotationsPaginator
|
||||||
from netbox.api.viewsets import NetBoxModelViewSet
|
from netbox.api.viewsets import NetBoxModelViewSet
|
||||||
from netbox.config import get_config
|
from netbox.config import get_config
|
||||||
|
from netbox.constants import NESTED_SERIALIZER_PREFIX
|
||||||
from utilities.api import get_serializer_for_model
|
from utilities.api import get_serializer_for_model
|
||||||
from utilities.utils import count_related
|
from utilities.utils import count_related
|
||||||
from virtualization.models import VirtualMachine
|
from virtualization.models import VirtualMachine
|
||||||
@ -69,14 +70,14 @@ class PathEndpointMixin(object):
|
|||||||
break
|
break
|
||||||
|
|
||||||
# Serialize each object
|
# Serialize each object
|
||||||
serializer_a = get_serializer_for_model(near_end, prefix='Nested')
|
serializer_a = get_serializer_for_model(near_end, prefix=NESTED_SERIALIZER_PREFIX)
|
||||||
x = serializer_a(near_end, context={'request': request}).data
|
x = serializer_a(near_end, context={'request': request}).data
|
||||||
if cable is not None:
|
if cable is not None:
|
||||||
y = serializers.TracedCableSerializer(cable, context={'request': request}).data
|
y = serializers.TracedCableSerializer(cable, context={'request': request}).data
|
||||||
else:
|
else:
|
||||||
y = None
|
y = None
|
||||||
if far_end is not None:
|
if far_end is not None:
|
||||||
serializer_b = get_serializer_for_model(far_end, prefix='Nested')
|
serializer_b = get_serializer_for_model(far_end, prefix=NESTED_SERIALIZER_PREFIX)
|
||||||
z = serializer_b(far_end, context={'request': request}).data
|
z = serializer_b(far_end, context={'request': request}).data
|
||||||
else:
|
else:
|
||||||
z = None
|
z = None
|
||||||
|
@ -3,6 +3,7 @@ from rest_framework.fields import Field
|
|||||||
|
|
||||||
from extras.choices import CustomFieldTypeChoices
|
from extras.choices import CustomFieldTypeChoices
|
||||||
from extras.models import CustomField
|
from extras.models import CustomField
|
||||||
|
from netbox.constants import NESTED_SERIALIZER_PREFIX
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
@ -51,10 +52,10 @@ class CustomFieldsDataField(Field):
|
|||||||
for cf in self._get_custom_fields():
|
for cf in self._get_custom_fields():
|
||||||
value = cf.deserialize(obj.get(cf.name))
|
value = cf.deserialize(obj.get(cf.name))
|
||||||
if value is not None and cf.type == CustomFieldTypeChoices.TYPE_OBJECT:
|
if value is not None and cf.type == CustomFieldTypeChoices.TYPE_OBJECT:
|
||||||
serializer = get_serializer_for_model(cf.object_type.model_class(), prefix='Nested')
|
serializer = get_serializer_for_model(cf.object_type.model_class(), prefix=NESTED_SERIALIZER_PREFIX)
|
||||||
value = serializer(value, context=self.parent.context).data
|
value = serializer(value, context=self.parent.context).data
|
||||||
elif value is not None and cf.type == CustomFieldTypeChoices.TYPE_MULTIOBJECT:
|
elif value is not None and cf.type == CustomFieldTypeChoices.TYPE_MULTIOBJECT:
|
||||||
serializer = get_serializer_for_model(cf.object_type.model_class(), prefix='Nested')
|
serializer = get_serializer_for_model(cf.object_type.model_class(), prefix=NESTED_SERIALIZER_PREFIX)
|
||||||
value = serializer(value, many=True, context=self.parent.context).data
|
value = serializer(value, many=True, context=self.parent.context).data
|
||||||
data[cf.name] = value
|
data[cf.name] = value
|
||||||
|
|
||||||
|
@ -15,6 +15,7 @@ from extras.utils import FeatureQuery
|
|||||||
from netbox.api import ChoiceField, ContentTypeField, SerializedPKRelatedField
|
from netbox.api import ChoiceField, ContentTypeField, SerializedPKRelatedField
|
||||||
from netbox.api.exceptions import SerializerNotFound
|
from netbox.api.exceptions import SerializerNotFound
|
||||||
from netbox.api.serializers import BaseModelSerializer, NetBoxModelSerializer, ValidatedModelSerializer
|
from netbox.api.serializers import BaseModelSerializer, NetBoxModelSerializer, ValidatedModelSerializer
|
||||||
|
from netbox.constants import NESTED_SERIALIZER_PREFIX
|
||||||
from tenancy.api.nested_serializers import NestedTenantSerializer, NestedTenantGroupSerializer
|
from tenancy.api.nested_serializers import NestedTenantSerializer, NestedTenantGroupSerializer
|
||||||
from tenancy.models import Tenant, TenantGroup
|
from tenancy.models import Tenant, TenantGroup
|
||||||
from users.api.nested_serializers import NestedUserSerializer
|
from users.api.nested_serializers import NestedUserSerializer
|
||||||
@ -192,7 +193,7 @@ class ImageAttachmentSerializer(ValidatedModelSerializer):
|
|||||||
|
|
||||||
@swagger_serializer_method(serializer_or_field=serializers.DictField)
|
@swagger_serializer_method(serializer_or_field=serializers.DictField)
|
||||||
def get_parent(self, obj):
|
def get_parent(self, obj):
|
||||||
serializer = get_serializer_for_model(obj.parent, prefix='Nested')
|
serializer = get_serializer_for_model(obj.parent, prefix=NESTED_SERIALIZER_PREFIX)
|
||||||
return serializer(obj.parent, context={'request': self.context['request']}).data
|
return serializer(obj.parent, context={'request': self.context['request']}).data
|
||||||
|
|
||||||
|
|
||||||
@ -242,7 +243,7 @@ class JournalEntrySerializer(NetBoxModelSerializer):
|
|||||||
|
|
||||||
@swagger_serializer_method(serializer_or_field=serializers.DictField)
|
@swagger_serializer_method(serializer_or_field=serializers.DictField)
|
||||||
def get_assigned_object(self, instance):
|
def get_assigned_object(self, instance):
|
||||||
serializer = get_serializer_for_model(instance.assigned_object_type.model_class(), prefix='Nested')
|
serializer = get_serializer_for_model(instance.assigned_object_type.model_class(), prefix=NESTED_SERIALIZER_PREFIX)
|
||||||
context = {'request': self.context['request']}
|
context = {'request': self.context['request']}
|
||||||
return serializer(instance.assigned_object, context=context).data
|
return serializer(instance.assigned_object, context=context).data
|
||||||
|
|
||||||
@ -462,7 +463,7 @@ class ObjectChangeSerializer(BaseModelSerializer):
|
|||||||
return None
|
return None
|
||||||
|
|
||||||
try:
|
try:
|
||||||
serializer = get_serializer_for_model(obj.changed_object, prefix='Nested')
|
serializer = get_serializer_for_model(obj.changed_object, prefix=NESTED_SERIALIZER_PREFIX)
|
||||||
except SerializerNotFound:
|
except SerializerNotFound:
|
||||||
return obj.object_repr
|
return obj.object_repr
|
||||||
context = {
|
context = {
|
||||||
|
@ -10,6 +10,7 @@ from ipam.constants import IPADDRESS_ASSIGNMENT_MODELS, VLANGROUP_SCOPE_TYPES
|
|||||||
from ipam.models import *
|
from ipam.models import *
|
||||||
from netbox.api import ChoiceField, ContentTypeField, SerializedPKRelatedField
|
from netbox.api import ChoiceField, ContentTypeField, SerializedPKRelatedField
|
||||||
from netbox.api.serializers import NetBoxModelSerializer
|
from netbox.api.serializers import NetBoxModelSerializer
|
||||||
|
from netbox.constants import NESTED_SERIALIZER_PREFIX
|
||||||
from tenancy.api.nested_serializers import NestedTenantSerializer
|
from tenancy.api.nested_serializers import NestedTenantSerializer
|
||||||
from utilities.api import get_serializer_for_model
|
from utilities.api import get_serializer_for_model
|
||||||
from virtualization.api.nested_serializers import NestedVirtualMachineSerializer
|
from virtualization.api.nested_serializers import NestedVirtualMachineSerializer
|
||||||
@ -145,7 +146,7 @@ class FHRPGroupAssignmentSerializer(NetBoxModelSerializer):
|
|||||||
def get_interface(self, obj):
|
def get_interface(self, obj):
|
||||||
if obj.interface is None:
|
if obj.interface is None:
|
||||||
return None
|
return None
|
||||||
serializer = get_serializer_for_model(obj.interface, prefix='Nested')
|
serializer = get_serializer_for_model(obj.interface, prefix=NESTED_SERIALIZER_PREFIX)
|
||||||
context = {'request': self.context['request']}
|
context = {'request': self.context['request']}
|
||||||
return serializer(obj.interface, context=context).data
|
return serializer(obj.interface, context=context).data
|
||||||
|
|
||||||
@ -191,7 +192,7 @@ class VLANGroupSerializer(NetBoxModelSerializer):
|
|||||||
def get_scope(self, obj):
|
def get_scope(self, obj):
|
||||||
if obj.scope_id is None:
|
if obj.scope_id is None:
|
||||||
return None
|
return None
|
||||||
serializer = get_serializer_for_model(obj.scope, prefix='Nested')
|
serializer = get_serializer_for_model(obj.scope, prefix=NESTED_SERIALIZER_PREFIX)
|
||||||
context = {'request': self.context['request']}
|
context = {'request': self.context['request']}
|
||||||
|
|
||||||
return serializer(obj.scope, context=context).data
|
return serializer(obj.scope, context=context).data
|
||||||
@ -375,7 +376,7 @@ class IPAddressSerializer(NetBoxModelSerializer):
|
|||||||
def get_assigned_object(self, obj):
|
def get_assigned_object(self, obj):
|
||||||
if obj.assigned_object is None:
|
if obj.assigned_object is None:
|
||||||
return None
|
return None
|
||||||
serializer = get_serializer_for_model(obj.assigned_object, prefix='Nested')
|
serializer = get_serializer_for_model(obj.assigned_object, prefix=NESTED_SERIALIZER_PREFIX)
|
||||||
context = {'request': self.context['request']}
|
context = {'request': self.context['request']}
|
||||||
return serializer(obj.assigned_object, context=context).data
|
return serializer(obj.assigned_object, context=context).data
|
||||||
|
|
||||||
|
@ -10,6 +10,7 @@ from rest_framework.viewsets import ModelViewSet
|
|||||||
|
|
||||||
from extras.models import ExportTemplate
|
from extras.models import ExportTemplate
|
||||||
from netbox.api.exceptions import SerializerNotFound
|
from netbox.api.exceptions import SerializerNotFound
|
||||||
|
from netbox.constants import NESTED_SERIALIZER_PREFIX
|
||||||
from utilities.api import get_serializer_for_model
|
from utilities.api import get_serializer_for_model
|
||||||
from .mixins import *
|
from .mixins import *
|
||||||
|
|
||||||
@ -60,7 +61,7 @@ class NetBoxModelViewSet(BulkUpdateModelMixin, BulkDestroyModelMixin, ObjectVali
|
|||||||
if self.brief:
|
if self.brief:
|
||||||
logger.debug("Request is for 'brief' format; initializing nested serializer")
|
logger.debug("Request is for 'brief' format; initializing nested serializer")
|
||||||
try:
|
try:
|
||||||
serializer = get_serializer_for_model(self.queryset.model, prefix='Nested')
|
serializer = get_serializer_for_model(self.queryset.model, prefix=NESTED_SERIALIZER_PREFIX)
|
||||||
logger.debug(f"Using serializer {serializer}")
|
logger.debug(f"Using serializer {serializer}")
|
||||||
return serializer
|
return serializer
|
||||||
except SerializerNotFound:
|
except SerializerNotFound:
|
||||||
|
@ -1,2 +1,5 @@
|
|||||||
|
# Prefix for nested serializers
|
||||||
|
NESTED_SERIALIZER_PREFIX = 'Nested'
|
||||||
|
|
||||||
# Max results per object type
|
# Max results per object type
|
||||||
SEARCH_MAX_RESULTS = 15
|
SEARCH_MAX_RESULTS = 15
|
||||||
|
@ -4,6 +4,7 @@ from rest_framework import serializers
|
|||||||
|
|
||||||
from netbox.api import ChoiceField, ContentTypeField
|
from netbox.api import ChoiceField, ContentTypeField
|
||||||
from netbox.api.serializers import NestedGroupModelSerializer, NetBoxModelSerializer
|
from netbox.api.serializers import NestedGroupModelSerializer, NetBoxModelSerializer
|
||||||
|
from netbox.constants import NESTED_SERIALIZER_PREFIX
|
||||||
from tenancy.choices import ContactPriorityChoices
|
from tenancy.choices import ContactPriorityChoices
|
||||||
from tenancy.models import *
|
from tenancy.models import *
|
||||||
from utilities.api import get_serializer_for_model
|
from utilities.api import get_serializer_for_model
|
||||||
@ -108,6 +109,6 @@ class ContactAssignmentSerializer(NetBoxModelSerializer):
|
|||||||
|
|
||||||
@swagger_serializer_method(serializer_or_field=serializers.DictField)
|
@swagger_serializer_method(serializer_or_field=serializers.DictField)
|
||||||
def get_object(self, instance):
|
def get_object(self, instance):
|
||||||
serializer = get_serializer_for_model(instance.content_type.model_class(), prefix='Nested')
|
serializer = get_serializer_for_model(instance.content_type.model_class(), prefix=NESTED_SERIALIZER_PREFIX)
|
||||||
context = {'request': self.context['request']}
|
context = {'request': self.context['request']}
|
||||||
return serializer(instance.object, context=context).data
|
return serializer(instance.object, context=context).data
|
||||||
|
Loading…
Reference in New Issue
Block a user