Kaynağa Gözat

Define NESTED_SERIALIZER_PREFIX constant

jeremystretch 3 yıl önce
ebeveyn
işleme
e07dd3ddcb

+ 9 - 8
netbox/dcim/api/serializers.py

@@ -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

+ 3 - 2
netbox/dcim/api/views.py

@@ -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 - 2
netbox/extras/api/customfields.py

@@ -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
 
 

+ 4 - 3
netbox/extras/api/serializers.py

@@ -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 = {

+ 4 - 3
netbox/ipam/api/serializers.py

@@ -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
 
 

+ 2 - 1
netbox/netbox/api/viewsets/__init__.py

@@ -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:

+ 3 - 0
netbox/netbox/constants.py

@@ -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

+ 2 - 1
netbox/tenancy/api/serializers.py

@@ -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