From 5b941c980963382009d160815ffb881374a5fc31 Mon Sep 17 00:00:00 2001 From: Arthur Date: Fri, 10 Mar 2023 15:49:38 -0800 Subject: [PATCH] 9608 fix choices --- netbox/dcim/api/serializers.py | 6 +----- netbox/dcim/choices.py | 4 ++-- netbox/netbox/api/fields.py | 2 +- netbox/tenancy/api/serializers.py | 5 +++-- 4 files changed, 7 insertions(+), 10 deletions(-) diff --git a/netbox/dcim/api/serializers.py b/netbox/dcim/api/serializers.py index b668e0d38..19fce011e 100644 --- a/netbox/dcim/api/serializers.py +++ b/netbox/dcim/api/serializers.py @@ -686,7 +686,7 @@ class DeviceSerializer(NetBoxModelSerializer): class DeviceWithConfigContextSerializer(DeviceSerializer): - config_context = serializers.SerializerMethodField() + config_context = serializers.SerializerMethodField(read_only=True) class Meta(DeviceSerializer.Meta): fields = [ @@ -1168,19 +1168,15 @@ class PowerFeedSerializer(NetBoxModelSerializer, CabledObjectSerializer, Connect ) type = ChoiceField( choices=PowerFeedTypeChoices, - default=PowerFeedTypeChoices.TYPE_PRIMARY ) status = ChoiceField( choices=PowerFeedStatusChoices, - default=PowerFeedStatusChoices.STATUS_ACTIVE ) supply = ChoiceField( choices=PowerFeedSupplyChoices, - default=PowerFeedSupplyChoices.SUPPLY_AC ) phase = ChoiceField( choices=PowerFeedPhaseChoices, - default=PowerFeedPhaseChoices.PHASE_SINGLE ) class Meta: diff --git a/netbox/dcim/choices.py b/netbox/dcim/choices.py index f1485b67f..8d992481c 100644 --- a/netbox/dcim/choices.py +++ b/netbox/dcim/choices.py @@ -1436,10 +1436,10 @@ class PowerFeedTypeChoices(ChoiceSet): TYPE_PRIMARY = 'primary' TYPE_REDUNDANT = 'redundant' - CHOICES = ( + CHOICES = [ (TYPE_PRIMARY, 'Primary', 'green'), (TYPE_REDUNDANT, 'Redundant', 'cyan'), - ) + ] class PowerFeedSupplyChoices(ChoiceSet): diff --git a/netbox/netbox/api/fields.py b/netbox/netbox/api/fields.py index 19974a172..ed70c28ac 100644 --- a/netbox/netbox/api/fields.py +++ b/netbox/netbox/api/fields.py @@ -14,7 +14,7 @@ __all__ = ( ) -@extend_schema_field(OpenApiTypes.OBJECT) +@extend_schema_field(OpenApiTypes.STR) class ChoiceField(serializers.Field): """ Represent a ChoiceField as {'value': , 'label': }. Accepts a single value on write. diff --git a/netbox/tenancy/api/serializers.py b/netbox/tenancy/api/serializers.py index d6af85d04..de10a8b10 100644 --- a/netbox/tenancy/api/serializers.py +++ b/netbox/tenancy/api/serializers.py @@ -1,4 +1,5 @@ from django.contrib.auth.models import ContentType +from drf_spectacular.types import OpenApiTypes from drf_spectacular.utils import extend_schema_field from rest_framework import serializers @@ -98,7 +99,7 @@ class ContactAssignmentSerializer(NetBoxModelSerializer): object = serializers.SerializerMethodField(read_only=True) contact = NestedContactSerializer() role = NestedContactRoleSerializer(required=False, allow_null=True) - priority = ChoiceField(choices=ContactPriorityChoices, allow_blank=True, required=False, default='') + priority = extend_schema_field(OpenApiTypes.STR)(ChoiceField(choices=ContactPriorityChoices, allow_blank=True, required=False, default='')) class Meta: model = ContactAssignment @@ -107,7 +108,7 @@ class ContactAssignmentSerializer(NetBoxModelSerializer): 'last_updated', ] - @extend_schema_field(serializers.JSONField(allow_null=True)) + @extend_schema_field(OpenApiTypes.OBJECT) def get_object(self, instance): serializer = get_serializer_for_model(instance.content_type.model_class(), prefix=NESTED_SERIALIZER_PREFIX) context = {'request': self.context['request']}