diff --git a/netbox/circuits/api/serializers.py b/netbox/circuits/api/serializers.py index c42edb5ae..4b2b7fbc3 100644 --- a/netbox/circuits/api/serializers.py +++ b/netbox/circuits/api/serializers.py @@ -8,7 +8,7 @@ from circuits.models import Provider, Circuit, CircuitTermination, CircuitType from dcim.api.serializers import NestedSiteSerializer, InterfaceSerializer from extras.api.customfields import CustomFieldModelSerializer from tenancy.api.serializers import NestedTenantSerializer -from utilities.api import ChoiceFieldSerializer, TagField, ValidatedModelSerializer, WritableNestedSerializer +from utilities.api import ChoiceField, TagField, ValidatedModelSerializer, WritableNestedSerializer # @@ -59,7 +59,7 @@ class NestedCircuitTypeSerializer(WritableNestedSerializer): class CircuitSerializer(CustomFieldModelSerializer): provider = NestedProviderSerializer() - status = ChoiceFieldSerializer(choices=CIRCUIT_STATUS_CHOICES, required=False) + status = ChoiceField(choices=CIRCUIT_STATUS_CHOICES, required=False) type = NestedCircuitTypeSerializer() tenant = NestedTenantSerializer(required=False, allow_null=True) tags = TagField(queryset=Tag.objects.all(), required=False, many=True) diff --git a/netbox/dcim/api/serializers.py b/netbox/dcim/api/serializers.py index 9c134bc94..2dc69a6f9 100644 --- a/netbox/dcim/api/serializers.py +++ b/netbox/dcim/api/serializers.py @@ -20,7 +20,7 @@ from ipam.models import IPAddress, VLAN from tenancy.api.serializers import NestedTenantSerializer from users.api.serializers import NestedUserSerializer from utilities.api import ( - ChoiceFieldSerializer, SerializedPKRelatedField, TagField, TimeZoneField, ValidatedModelSerializer, + ChoiceField, SerializedPKRelatedField, TagField, TimeZoneField, ValidatedModelSerializer, WritableNestedSerializer, ) from virtualization.models import Cluster @@ -51,7 +51,7 @@ class RegionSerializer(serializers.ModelSerializer): # class SiteSerializer(CustomFieldModelSerializer): - status = ChoiceFieldSerializer(choices=SITE_STATUS_CHOICES, required=False) + status = ChoiceField(choices=SITE_STATUS_CHOICES, required=False) region = NestedRegionSerializer(required=False, allow_null=True) tenant = NestedTenantSerializer(required=False, allow_null=True) time_zone = TimeZoneField(required=False) @@ -123,8 +123,8 @@ class RackSerializer(CustomFieldModelSerializer): group = NestedRackGroupSerializer(required=False, allow_null=True) tenant = NestedTenantSerializer(required=False, allow_null=True) role = NestedRackRoleSerializer(required=False, allow_null=True) - type = ChoiceFieldSerializer(choices=RACK_TYPE_CHOICES, required=False) - width = ChoiceFieldSerializer(choices=RACK_WIDTH_CHOICES, required=False) + type = ChoiceField(choices=RACK_TYPE_CHOICES, required=False) + width = ChoiceField(choices=RACK_WIDTH_CHOICES, required=False) tags = TagField(queryset=Tag.objects.all(), required=False, many=True) class Meta: @@ -222,8 +222,8 @@ class NestedManufacturerSerializer(WritableNestedSerializer): class DeviceTypeSerializer(CustomFieldModelSerializer): manufacturer = NestedManufacturerSerializer() - interface_ordering = ChoiceFieldSerializer(choices=IFACE_ORDERING_CHOICES, required=False) - subdevice_role = ChoiceFieldSerializer(choices=SUBDEVICE_ROLE_CHOICES, required=False) + interface_ordering = ChoiceField(choices=IFACE_ORDERING_CHOICES, required=False) + subdevice_role = ChoiceField(choices=SUBDEVICE_ROLE_CHOICES, required=False) instance_count = serializers.IntegerField(source='instances.count', read_only=True) tags = TagField(queryset=Tag.objects.all(), required=False, many=True) @@ -299,7 +299,7 @@ class PowerOutletTemplateSerializer(ValidatedModelSerializer): class InterfaceTemplateSerializer(ValidatedModelSerializer): device_type = NestedDeviceTypeSerializer() - form_factor = ChoiceFieldSerializer(choices=IFACE_FF_CHOICES, required=False) + form_factor = ChoiceField(choices=IFACE_FF_CHOICES, required=False) class Meta: model = InterfaceTemplate @@ -396,8 +396,8 @@ class DeviceSerializer(CustomFieldModelSerializer): platform = NestedPlatformSerializer(required=False, allow_null=True) site = NestedSiteSerializer() rack = NestedRackSerializer(required=False, allow_null=True) - face = ChoiceFieldSerializer(choices=RACK_FACE_CHOICES, required=False) - status = ChoiceFieldSerializer(choices=DEVICE_STATUS_CHOICES, required=False) + face = ChoiceField(choices=RACK_FACE_CHOICES, required=False) + status = ChoiceField(choices=DEVICE_STATUS_CHOICES, required=False) primary_ip = DeviceIPAddressSerializer(read_only=True) primary_ip4 = DeviceIPAddressSerializer(required=False, allow_null=True) primary_ip6 = DeviceIPAddressSerializer(required=False, allow_null=True) @@ -571,12 +571,12 @@ class InterfaceVLANSerializer(WritableNestedSerializer): class InterfaceSerializer(ValidatedModelSerializer): device = NestedDeviceSerializer() - form_factor = ChoiceFieldSerializer(choices=IFACE_FF_CHOICES, required=False) + form_factor = ChoiceField(choices=IFACE_FF_CHOICES, required=False) lag = NestedInterfaceSerializer(required=False, allow_null=True) is_connected = serializers.SerializerMethodField(read_only=True) interface_connection = serializers.SerializerMethodField(read_only=True) circuit_termination = InterfaceCircuitTerminationSerializer(read_only=True) - mode = ChoiceFieldSerializer(choices=IFACE_MODE_CHOICES, required=False) + mode = ChoiceField(choices=IFACE_MODE_CHOICES, required=False) untagged_vlan = InterfaceVLANSerializer(required=False, allow_null=True) tagged_vlans = SerializedPKRelatedField( queryset=VLAN.objects.all(), @@ -684,7 +684,7 @@ class InventoryItemSerializer(ValidatedModelSerializer): class InterfaceConnectionSerializer(ValidatedModelSerializer): interface_a = NestedInterfaceSerializer() interface_b = NestedInterfaceSerializer() - connection_status = ChoiceFieldSerializer(choices=CONNECTION_STATUS_CHOICES, required=False) + connection_status = ChoiceField(choices=CONNECTION_STATUS_CHOICES, required=False) class Meta: model = InterfaceConnection @@ -704,7 +704,7 @@ class ContextualInterfaceConnectionSerializer(serializers.ModelSerializer): A read-only representation of an InterfaceConnection from the perspective of either of its two connected Interfaces. """ interface = serializers.SerializerMethodField(read_only=True) - connection_status = ChoiceFieldSerializer(choices=CONNECTION_STATUS_CHOICES, read_only=True) + connection_status = ChoiceField(choices=CONNECTION_STATUS_CHOICES, read_only=True) class Meta: model = InterfaceConnection diff --git a/netbox/extras/api/serializers.py b/netbox/extras/api/serializers.py index feebaba0e..3f4ccadc6 100644 --- a/netbox/extras/api/serializers.py +++ b/netbox/extras/api/serializers.py @@ -16,7 +16,7 @@ from extras.constants import * from tenancy.api.serializers import NestedTenantSerializer, NestedTenantGroupSerializer from users.api.serializers import NestedUserSerializer from utilities.api import ( - ChoiceFieldSerializer, ContentTypeFieldSerializer, get_serializer_for_model, ValidatedModelSerializer, + ChoiceField, ContentTypeField, get_serializer_for_model, ValidatedModelSerializer, ) @@ -25,7 +25,7 @@ from utilities.api import ( # class GraphSerializer(ValidatedModelSerializer): - type = ChoiceFieldSerializer(choices=GRAPH_TYPE_CHOICES) + type = ChoiceField(choices=GRAPH_TYPE_CHOICES) class Meta: model = Graph @@ -35,7 +35,7 @@ class GraphSerializer(ValidatedModelSerializer): class RenderedGraphSerializer(serializers.ModelSerializer): embed_url = serializers.SerializerMethodField() embed_link = serializers.SerializerMethodField() - type = ChoiceFieldSerializer(choices=GRAPH_TYPE_CHOICES) + type = ChoiceField(choices=GRAPH_TYPE_CHOICES) class Meta: model = Graph @@ -88,7 +88,7 @@ class TagSerializer(ValidatedModelSerializer): # class ImageAttachmentSerializer(ValidatedModelSerializer): - content_type = ContentTypeFieldSerializer() + content_type = ContentTypeField() parent = serializers.SerializerMethodField(read_only=True) class Meta: @@ -188,7 +188,7 @@ class ReportDetailSerializer(ReportSerializer): class ObjectChangeSerializer(serializers.ModelSerializer): user = NestedUserSerializer(read_only=True) - content_type = ContentTypeFieldSerializer(read_only=True) + content_type = ContentTypeField(read_only=True) changed_object = serializers.SerializerMethodField(read_only=True) class Meta: @@ -217,7 +217,7 @@ class ObjectChangeSerializer(serializers.ModelSerializer): class UserActionSerializer(serializers.ModelSerializer): user = NestedUserSerializer() - action = ChoiceFieldSerializer(choices=ACTION_CHOICES) + action = ChoiceField(choices=ACTION_CHOICES) class Meta: model = UserAction diff --git a/netbox/ipam/api/serializers.py b/netbox/ipam/api/serializers.py index bfbc66be3..92526eb56 100644 --- a/netbox/ipam/api/serializers.py +++ b/netbox/ipam/api/serializers.py @@ -16,7 +16,7 @@ from ipam.constants import ( from ipam.models import Aggregate, IPAddress, Prefix, RIR, Role, Service, VLAN, VLANGroup, VRF from tenancy.api.serializers import NestedTenantSerializer from utilities.api import ( - ChoiceFieldSerializer, SerializedPKRelatedField, TagField, ValidatedModelSerializer, WritableNestedSerializer, + ChoiceField, SerializedPKRelatedField, TagField, ValidatedModelSerializer, WritableNestedSerializer, ) from virtualization.api.serializers import NestedVirtualMachineSerializer @@ -151,7 +151,7 @@ class VLANSerializer(CustomFieldModelSerializer): site = NestedSiteSerializer(required=False, allow_null=True) group = NestedVLANGroupSerializer(required=False, allow_null=True) tenant = NestedTenantSerializer(required=False, allow_null=True) - status = ChoiceFieldSerializer(choices=VLAN_STATUS_CHOICES, required=False) + status = ChoiceField(choices=VLAN_STATUS_CHOICES, required=False) role = NestedRoleSerializer(required=False, allow_null=True) tags = TagField(queryset=Tag.objects.all(), required=False, many=True) @@ -195,7 +195,7 @@ class PrefixSerializer(CustomFieldModelSerializer): vrf = NestedVRFSerializer(required=False, allow_null=True) tenant = NestedTenantSerializer(required=False, allow_null=True) vlan = NestedVLANSerializer(required=False, allow_null=True) - status = ChoiceFieldSerializer(choices=PREFIX_STATUS_CHOICES, required=False) + status = ChoiceField(choices=PREFIX_STATUS_CHOICES, required=False) role = NestedRoleSerializer(required=False, allow_null=True) tags = TagField(queryset=Tag.objects.all(), required=False, many=True) @@ -257,8 +257,8 @@ class IPAddressInterfaceSerializer(serializers.ModelSerializer): class IPAddressSerializer(CustomFieldModelSerializer): vrf = NestedVRFSerializer(required=False, allow_null=True) tenant = NestedTenantSerializer(required=False, allow_null=True) - status = ChoiceFieldSerializer(choices=IPADDRESS_STATUS_CHOICES, required=False) - role = ChoiceFieldSerializer(choices=IPADDRESS_ROLE_CHOICES, required=False) + status = ChoiceField(choices=IPADDRESS_STATUS_CHOICES, required=False) + role = ChoiceField(choices=IPADDRESS_ROLE_CHOICES, required=False) interface = IPAddressInterfaceSerializer(required=False, allow_null=True) tags = TagField(queryset=Tag.objects.all(), required=False, many=True) @@ -304,7 +304,7 @@ class AvailableIPSerializer(serializers.Serializer): class ServiceSerializer(CustomFieldModelSerializer): device = NestedDeviceSerializer(required=False, allow_null=True) virtual_machine = NestedVirtualMachineSerializer(required=False, allow_null=True) - protocol = ChoiceFieldSerializer(choices=IP_PROTOCOL_CHOICES) + protocol = ChoiceField(choices=IP_PROTOCOL_CHOICES) ipaddresses = SerializedPKRelatedField( queryset=IPAddress.objects.all(), serializer=NestedIPAddressSerializer, diff --git a/netbox/utilities/api.py b/netbox/utilities/api.py index 0b0384653..f648d2689 100644 --- a/netbox/utilities/api.py +++ b/netbox/utilities/api.py @@ -63,7 +63,6 @@ class TagField(RelatedField): """ Represent a writable list of Tags associated with an object (use with many=True). """ - def to_internal_value(self, data): obj = self.parent.parent.instance content_type = ContentType.objects.get_for_model(obj) @@ -74,7 +73,7 @@ class TagField(RelatedField): return value.name -class ChoiceFieldSerializer(Field): +class ChoiceField(Field): """ Represent a ChoiceField as {'value': , 'label': }. """ @@ -87,7 +86,7 @@ class ChoiceFieldSerializer(Field): self._choices[k2] = v2 else: self._choices[k] = v - super(ChoiceFieldSerializer, self).__init__(**kwargs) + super(ChoiceField, self).__init__(**kwargs) def to_representation(self, obj): return {'value': obj, 'label': self._choices[obj]} @@ -96,7 +95,7 @@ class ChoiceFieldSerializer(Field): return data -class ContentTypeFieldSerializer(Field): +class ContentTypeField(Field): """ Represent a ContentType as '.' """ diff --git a/netbox/utilities/custom_inspectors.py b/netbox/utilities/custom_inspectors.py index b97506b85..ca6e08fc1 100644 --- a/netbox/utilities/custom_inspectors.py +++ b/netbox/utilities/custom_inspectors.py @@ -3,7 +3,7 @@ from drf_yasg.inspectors import FieldInspector, NotHandled, PaginatorInspector, from rest_framework.fields import ChoiceField from extras.api.customfields import CustomFieldsSerializer -from utilities.api import ChoiceFieldSerializer +from utilities.api import ChoiceField class CustomChoiceFieldInspector(FieldInspector): @@ -12,7 +12,7 @@ class CustomChoiceFieldInspector(FieldInspector): # https://drf-yasg.readthedocs.io/en/stable/_modules/drf_yasg/inspectors/base.html#FieldInspector._get_partial_types SwaggerType, _ = self._get_partial_types(field, swagger_object_type, use_references, **kwargs) - if isinstance(field, ChoiceFieldSerializer): + if isinstance(field, ChoiceField): value_schema = openapi.Schema(type=openapi.TYPE_INTEGER) choices = list(field._choices.keys()) diff --git a/netbox/virtualization/api/serializers.py b/netbox/virtualization/api/serializers.py index 3180fc31c..81385878b 100644 --- a/netbox/virtualization/api/serializers.py +++ b/netbox/virtualization/api/serializers.py @@ -9,7 +9,7 @@ from dcim.models import Interface from extras.api.customfields import CustomFieldModelSerializer from ipam.models import IPAddress, VLAN from tenancy.api.serializers import NestedTenantSerializer -from utilities.api import ChoiceFieldSerializer, TagField, ValidatedModelSerializer, WritableNestedSerializer +from utilities.api import ChoiceField, TagField, ValidatedModelSerializer, WritableNestedSerializer from virtualization.constants import VM_STATUS_CHOICES from virtualization.models import Cluster, ClusterGroup, ClusterType, VirtualMachine @@ -91,7 +91,7 @@ class VirtualMachineIPAddressSerializer(serializers.ModelSerializer): class VirtualMachineSerializer(CustomFieldModelSerializer): - status = ChoiceFieldSerializer(choices=VM_STATUS_CHOICES, required=False) + status = ChoiceField(choices=VM_STATUS_CHOICES, required=False) cluster = NestedClusterSerializer(required=False, allow_null=True) role = NestedDeviceRoleSerializer(required=False, allow_null=True) tenant = NestedTenantSerializer(required=False, allow_null=True) @@ -145,7 +145,7 @@ class InterfaceVLANSerializer(serializers.ModelSerializer): class InterfaceSerializer(serializers.ModelSerializer): virtual_machine = NestedVirtualMachineSerializer() - mode = ChoiceFieldSerializer(choices=IFACE_MODE_CHOICES) + mode = ChoiceField(choices=IFACE_MODE_CHOICES) untagged_vlan = InterfaceVLANSerializer() tagged_vlans = InterfaceVLANSerializer(many=True)