From 96078ffdccd23a9cd9b68a2f5525d4ecedbad0e8 Mon Sep 17 00:00:00 2001 From: Fabian Geisberger Date: Mon, 17 Jun 2024 10:08:19 -0400 Subject: [PATCH] Fixes #16624: Set allow_null=True on method fields that can return None --- netbox/dcim/api/serializers_/base.py | 4 ++-- netbox/dcim/api/serializers_/cables.py | 2 +- netbox/dcim/api/serializers_/devices.py | 2 +- netbox/extras/api/serializers_/scripts.py | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/netbox/dcim/api/serializers_/base.py b/netbox/dcim/api/serializers_/base.py index 48f4967e3..1dca773b2 100644 --- a/netbox/dcim/api/serializers_/base.py +++ b/netbox/dcim/api/serializers_/base.py @@ -13,7 +13,7 @@ class ConnectedEndpointsSerializer(serializers.ModelSerializer): """ Legacy serializer for pre-v3.3 connections """ - connected_endpoints_type = serializers.SerializerMethodField(read_only=True) + connected_endpoints_type = serializers.SerializerMethodField(read_only=True, allow_null=True) connected_endpoints = serializers.SerializerMethodField(read_only=True) connected_endpoints_reachable = serializers.SerializerMethodField(read_only=True) @@ -22,7 +22,7 @@ class ConnectedEndpointsSerializer(serializers.ModelSerializer): if endpoints := obj.connected_endpoints: return f'{endpoints[0]._meta.app_label}.{endpoints[0]._meta.model_name}' - @extend_schema_field(serializers.ListField) + @extend_schema_field(serializers.ListField(allow_null=True)) def get_connected_endpoints(self, obj): """ Return the appropriate serializer for the type of connected object. diff --git a/netbox/dcim/api/serializers_/cables.py b/netbox/dcim/api/serializers_/cables.py index 94a125d0c..809a07d2c 100644 --- a/netbox/dcim/api/serializers_/cables.py +++ b/netbox/dcim/api/serializers_/cables.py @@ -91,7 +91,7 @@ class CablePathSerializer(serializers.ModelSerializer): class CabledObjectSerializer(serializers.ModelSerializer): cable = CableSerializer(nested=True, read_only=True, allow_null=True) cable_end = serializers.CharField(read_only=True) - link_peers_type = serializers.SerializerMethodField(read_only=True) + link_peers_type = serializers.SerializerMethodField(read_only=True, allow_null=True) link_peers = serializers.SerializerMethodField(read_only=True) _occupied = serializers.SerializerMethodField(read_only=True) diff --git a/netbox/dcim/api/serializers_/devices.py b/netbox/dcim/api/serializers_/devices.py index edfac3072..f46b26b03 100644 --- a/netbox/dcim/api/serializers_/devices.py +++ b/netbox/dcim/api/serializers_/devices.py @@ -88,7 +88,7 @@ class DeviceSerializer(NetBoxModelSerializer): ] brief_fields = ('id', 'url', 'display', 'name', 'description') - @extend_schema_field(NestedDeviceSerializer) + @extend_schema_field(NestedDeviceSerializer(allow_null=True)) def get_parent_device(self, obj): try: device_bay = obj.parent_bay diff --git a/netbox/extras/api/serializers_/scripts.py b/netbox/extras/api/serializers_/scripts.py index b2a8ef29d..38b3653ae 100644 --- a/netbox/extras/api/serializers_/scripts.py +++ b/netbox/extras/api/serializers_/scripts.py @@ -39,7 +39,7 @@ class ScriptSerializer(ValidatedModelSerializer): def get_display(self, obj): return f'{obj.name} ({obj.module})' - @extend_schema_field(serializers.CharField()) + @extend_schema_field(serializers.CharField(allow_null=True)) def get_description(self, obj): if obj.python_class: return obj.python_class().description