Renamed ChoiceFieldSerializer and ContentTypeFieldSerializer

This commit is contained in:
Jeremy Stretch 2018-07-30 12:41:20 -04:00
parent 838af2b2d8
commit c2416411c1
7 changed files with 35 additions and 36 deletions

View File

@ -8,7 +8,7 @@ from circuits.models import Provider, Circuit, CircuitTermination, CircuitType
from dcim.api.serializers import NestedSiteSerializer, InterfaceSerializer from dcim.api.serializers import NestedSiteSerializer, InterfaceSerializer
from extras.api.customfields import CustomFieldModelSerializer from extras.api.customfields import CustomFieldModelSerializer
from tenancy.api.serializers import NestedTenantSerializer 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): class CircuitSerializer(CustomFieldModelSerializer):
provider = NestedProviderSerializer() provider = NestedProviderSerializer()
status = ChoiceFieldSerializer(choices=CIRCUIT_STATUS_CHOICES, required=False) status = ChoiceField(choices=CIRCUIT_STATUS_CHOICES, required=False)
type = NestedCircuitTypeSerializer() type = NestedCircuitTypeSerializer()
tenant = NestedTenantSerializer(required=False, allow_null=True) tenant = NestedTenantSerializer(required=False, allow_null=True)
tags = TagField(queryset=Tag.objects.all(), required=False, many=True) tags = TagField(queryset=Tag.objects.all(), required=False, many=True)

View File

@ -20,7 +20,7 @@ from ipam.models import IPAddress, VLAN
from tenancy.api.serializers import NestedTenantSerializer from tenancy.api.serializers import NestedTenantSerializer
from users.api.serializers import NestedUserSerializer from users.api.serializers import NestedUserSerializer
from utilities.api import ( from utilities.api import (
ChoiceFieldSerializer, SerializedPKRelatedField, TagField, TimeZoneField, ValidatedModelSerializer, ChoiceField, SerializedPKRelatedField, TagField, TimeZoneField, ValidatedModelSerializer,
WritableNestedSerializer, WritableNestedSerializer,
) )
from virtualization.models import Cluster from virtualization.models import Cluster
@ -51,7 +51,7 @@ class RegionSerializer(serializers.ModelSerializer):
# #
class SiteSerializer(CustomFieldModelSerializer): 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) region = NestedRegionSerializer(required=False, allow_null=True)
tenant = NestedTenantSerializer(required=False, allow_null=True) tenant = NestedTenantSerializer(required=False, allow_null=True)
time_zone = TimeZoneField(required=False) time_zone = TimeZoneField(required=False)
@ -123,8 +123,8 @@ class RackSerializer(CustomFieldModelSerializer):
group = NestedRackGroupSerializer(required=False, allow_null=True) group = NestedRackGroupSerializer(required=False, allow_null=True)
tenant = NestedTenantSerializer(required=False, allow_null=True) tenant = NestedTenantSerializer(required=False, allow_null=True)
role = NestedRackRoleSerializer(required=False, allow_null=True) role = NestedRackRoleSerializer(required=False, allow_null=True)
type = ChoiceFieldSerializer(choices=RACK_TYPE_CHOICES, required=False) type = ChoiceField(choices=RACK_TYPE_CHOICES, required=False)
width = ChoiceFieldSerializer(choices=RACK_WIDTH_CHOICES, required=False) width = ChoiceField(choices=RACK_WIDTH_CHOICES, required=False)
tags = TagField(queryset=Tag.objects.all(), required=False, many=True) tags = TagField(queryset=Tag.objects.all(), required=False, many=True)
class Meta: class Meta:
@ -222,8 +222,8 @@ class NestedManufacturerSerializer(WritableNestedSerializer):
class DeviceTypeSerializer(CustomFieldModelSerializer): class DeviceTypeSerializer(CustomFieldModelSerializer):
manufacturer = NestedManufacturerSerializer() manufacturer = NestedManufacturerSerializer()
interface_ordering = ChoiceFieldSerializer(choices=IFACE_ORDERING_CHOICES, required=False) interface_ordering = ChoiceField(choices=IFACE_ORDERING_CHOICES, required=False)
subdevice_role = ChoiceFieldSerializer(choices=SUBDEVICE_ROLE_CHOICES, required=False) subdevice_role = ChoiceField(choices=SUBDEVICE_ROLE_CHOICES, required=False)
instance_count = serializers.IntegerField(source='instances.count', read_only=True) instance_count = serializers.IntegerField(source='instances.count', read_only=True)
tags = TagField(queryset=Tag.objects.all(), required=False, many=True) tags = TagField(queryset=Tag.objects.all(), required=False, many=True)
@ -299,7 +299,7 @@ class PowerOutletTemplateSerializer(ValidatedModelSerializer):
class InterfaceTemplateSerializer(ValidatedModelSerializer): class InterfaceTemplateSerializer(ValidatedModelSerializer):
device_type = NestedDeviceTypeSerializer() device_type = NestedDeviceTypeSerializer()
form_factor = ChoiceFieldSerializer(choices=IFACE_FF_CHOICES, required=False) form_factor = ChoiceField(choices=IFACE_FF_CHOICES, required=False)
class Meta: class Meta:
model = InterfaceTemplate model = InterfaceTemplate
@ -396,8 +396,8 @@ class DeviceSerializer(CustomFieldModelSerializer):
platform = NestedPlatformSerializer(required=False, allow_null=True) platform = NestedPlatformSerializer(required=False, allow_null=True)
site = NestedSiteSerializer() site = NestedSiteSerializer()
rack = NestedRackSerializer(required=False, allow_null=True) rack = NestedRackSerializer(required=False, allow_null=True)
face = ChoiceFieldSerializer(choices=RACK_FACE_CHOICES, required=False) face = ChoiceField(choices=RACK_FACE_CHOICES, required=False)
status = ChoiceFieldSerializer(choices=DEVICE_STATUS_CHOICES, required=False) status = ChoiceField(choices=DEVICE_STATUS_CHOICES, required=False)
primary_ip = DeviceIPAddressSerializer(read_only=True) primary_ip = DeviceIPAddressSerializer(read_only=True)
primary_ip4 = DeviceIPAddressSerializer(required=False, allow_null=True) primary_ip4 = DeviceIPAddressSerializer(required=False, allow_null=True)
primary_ip6 = DeviceIPAddressSerializer(required=False, allow_null=True) primary_ip6 = DeviceIPAddressSerializer(required=False, allow_null=True)
@ -571,12 +571,12 @@ class InterfaceVLANSerializer(WritableNestedSerializer):
class InterfaceSerializer(ValidatedModelSerializer): class InterfaceSerializer(ValidatedModelSerializer):
device = NestedDeviceSerializer() 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) lag = NestedInterfaceSerializer(required=False, allow_null=True)
is_connected = serializers.SerializerMethodField(read_only=True) is_connected = serializers.SerializerMethodField(read_only=True)
interface_connection = serializers.SerializerMethodField(read_only=True) interface_connection = serializers.SerializerMethodField(read_only=True)
circuit_termination = InterfaceCircuitTerminationSerializer(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) untagged_vlan = InterfaceVLANSerializer(required=False, allow_null=True)
tagged_vlans = SerializedPKRelatedField( tagged_vlans = SerializedPKRelatedField(
queryset=VLAN.objects.all(), queryset=VLAN.objects.all(),
@ -684,7 +684,7 @@ class InventoryItemSerializer(ValidatedModelSerializer):
class InterfaceConnectionSerializer(ValidatedModelSerializer): class InterfaceConnectionSerializer(ValidatedModelSerializer):
interface_a = NestedInterfaceSerializer() interface_a = NestedInterfaceSerializer()
interface_b = NestedInterfaceSerializer() interface_b = NestedInterfaceSerializer()
connection_status = ChoiceFieldSerializer(choices=CONNECTION_STATUS_CHOICES, required=False) connection_status = ChoiceField(choices=CONNECTION_STATUS_CHOICES, required=False)
class Meta: class Meta:
model = InterfaceConnection 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. A read-only representation of an InterfaceConnection from the perspective of either of its two connected Interfaces.
""" """
interface = serializers.SerializerMethodField(read_only=True) 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: class Meta:
model = InterfaceConnection model = InterfaceConnection

View File

@ -16,7 +16,7 @@ from extras.constants import *
from tenancy.api.serializers import NestedTenantSerializer, NestedTenantGroupSerializer from tenancy.api.serializers import NestedTenantSerializer, NestedTenantGroupSerializer
from users.api.serializers import NestedUserSerializer from users.api.serializers import NestedUserSerializer
from utilities.api import ( 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): class GraphSerializer(ValidatedModelSerializer):
type = ChoiceFieldSerializer(choices=GRAPH_TYPE_CHOICES) type = ChoiceField(choices=GRAPH_TYPE_CHOICES)
class Meta: class Meta:
model = Graph model = Graph
@ -35,7 +35,7 @@ class GraphSerializer(ValidatedModelSerializer):
class RenderedGraphSerializer(serializers.ModelSerializer): class RenderedGraphSerializer(serializers.ModelSerializer):
embed_url = serializers.SerializerMethodField() embed_url = serializers.SerializerMethodField()
embed_link = serializers.SerializerMethodField() embed_link = serializers.SerializerMethodField()
type = ChoiceFieldSerializer(choices=GRAPH_TYPE_CHOICES) type = ChoiceField(choices=GRAPH_TYPE_CHOICES)
class Meta: class Meta:
model = Graph model = Graph
@ -88,7 +88,7 @@ class TagSerializer(ValidatedModelSerializer):
# #
class ImageAttachmentSerializer(ValidatedModelSerializer): class ImageAttachmentSerializer(ValidatedModelSerializer):
content_type = ContentTypeFieldSerializer() content_type = ContentTypeField()
parent = serializers.SerializerMethodField(read_only=True) parent = serializers.SerializerMethodField(read_only=True)
class Meta: class Meta:
@ -188,7 +188,7 @@ class ReportDetailSerializer(ReportSerializer):
class ObjectChangeSerializer(serializers.ModelSerializer): class ObjectChangeSerializer(serializers.ModelSerializer):
user = NestedUserSerializer(read_only=True) user = NestedUserSerializer(read_only=True)
content_type = ContentTypeFieldSerializer(read_only=True) content_type = ContentTypeField(read_only=True)
changed_object = serializers.SerializerMethodField(read_only=True) changed_object = serializers.SerializerMethodField(read_only=True)
class Meta: class Meta:
@ -217,7 +217,7 @@ class ObjectChangeSerializer(serializers.ModelSerializer):
class UserActionSerializer(serializers.ModelSerializer): class UserActionSerializer(serializers.ModelSerializer):
user = NestedUserSerializer() user = NestedUserSerializer()
action = ChoiceFieldSerializer(choices=ACTION_CHOICES) action = ChoiceField(choices=ACTION_CHOICES)
class Meta: class Meta:
model = UserAction model = UserAction

View File

@ -16,7 +16,7 @@ from ipam.constants import (
from ipam.models import Aggregate, IPAddress, Prefix, RIR, Role, Service, VLAN, VLANGroup, VRF from ipam.models import Aggregate, IPAddress, Prefix, RIR, Role, Service, VLAN, VLANGroup, VRF
from tenancy.api.serializers import NestedTenantSerializer from tenancy.api.serializers import NestedTenantSerializer
from utilities.api import ( from utilities.api import (
ChoiceFieldSerializer, SerializedPKRelatedField, TagField, ValidatedModelSerializer, WritableNestedSerializer, ChoiceField, SerializedPKRelatedField, TagField, ValidatedModelSerializer, WritableNestedSerializer,
) )
from virtualization.api.serializers import NestedVirtualMachineSerializer from virtualization.api.serializers import NestedVirtualMachineSerializer
@ -151,7 +151,7 @@ class VLANSerializer(CustomFieldModelSerializer):
site = NestedSiteSerializer(required=False, allow_null=True) site = NestedSiteSerializer(required=False, allow_null=True)
group = NestedVLANGroupSerializer(required=False, allow_null=True) group = NestedVLANGroupSerializer(required=False, allow_null=True)
tenant = NestedTenantSerializer(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) role = NestedRoleSerializer(required=False, allow_null=True)
tags = TagField(queryset=Tag.objects.all(), required=False, many=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) vrf = NestedVRFSerializer(required=False, allow_null=True)
tenant = NestedTenantSerializer(required=False, allow_null=True) tenant = NestedTenantSerializer(required=False, allow_null=True)
vlan = NestedVLANSerializer(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) role = NestedRoleSerializer(required=False, allow_null=True)
tags = TagField(queryset=Tag.objects.all(), required=False, many=True) tags = TagField(queryset=Tag.objects.all(), required=False, many=True)
@ -257,8 +257,8 @@ class IPAddressInterfaceSerializer(serializers.ModelSerializer):
class IPAddressSerializer(CustomFieldModelSerializer): class IPAddressSerializer(CustomFieldModelSerializer):
vrf = NestedVRFSerializer(required=False, allow_null=True) vrf = NestedVRFSerializer(required=False, allow_null=True)
tenant = NestedTenantSerializer(required=False, allow_null=True) tenant = NestedTenantSerializer(required=False, allow_null=True)
status = ChoiceFieldSerializer(choices=IPADDRESS_STATUS_CHOICES, required=False) status = ChoiceField(choices=IPADDRESS_STATUS_CHOICES, required=False)
role = ChoiceFieldSerializer(choices=IPADDRESS_ROLE_CHOICES, required=False) role = ChoiceField(choices=IPADDRESS_ROLE_CHOICES, required=False)
interface = IPAddressInterfaceSerializer(required=False, allow_null=True) interface = IPAddressInterfaceSerializer(required=False, allow_null=True)
tags = TagField(queryset=Tag.objects.all(), required=False, many=True) tags = TagField(queryset=Tag.objects.all(), required=False, many=True)
@ -304,7 +304,7 @@ class AvailableIPSerializer(serializers.Serializer):
class ServiceSerializer(CustomFieldModelSerializer): class ServiceSerializer(CustomFieldModelSerializer):
device = NestedDeviceSerializer(required=False, allow_null=True) device = NestedDeviceSerializer(required=False, allow_null=True)
virtual_machine = NestedVirtualMachineSerializer(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( ipaddresses = SerializedPKRelatedField(
queryset=IPAddress.objects.all(), queryset=IPAddress.objects.all(),
serializer=NestedIPAddressSerializer, serializer=NestedIPAddressSerializer,

View File

@ -63,7 +63,6 @@ class TagField(RelatedField):
""" """
Represent a writable list of Tags associated with an object (use with many=True). Represent a writable list of Tags associated with an object (use with many=True).
""" """
def to_internal_value(self, data): def to_internal_value(self, data):
obj = self.parent.parent.instance obj = self.parent.parent.instance
content_type = ContentType.objects.get_for_model(obj) content_type = ContentType.objects.get_for_model(obj)
@ -74,7 +73,7 @@ class TagField(RelatedField):
return value.name return value.name
class ChoiceFieldSerializer(Field): class ChoiceField(Field):
""" """
Represent a ChoiceField as {'value': <DB value>, 'label': <string>}. Represent a ChoiceField as {'value': <DB value>, 'label': <string>}.
""" """
@ -87,7 +86,7 @@ class ChoiceFieldSerializer(Field):
self._choices[k2] = v2 self._choices[k2] = v2
else: else:
self._choices[k] = v self._choices[k] = v
super(ChoiceFieldSerializer, self).__init__(**kwargs) super(ChoiceField, self).__init__(**kwargs)
def to_representation(self, obj): def to_representation(self, obj):
return {'value': obj, 'label': self._choices[obj]} return {'value': obj, 'label': self._choices[obj]}
@ -96,7 +95,7 @@ class ChoiceFieldSerializer(Field):
return data return data
class ContentTypeFieldSerializer(Field): class ContentTypeField(Field):
""" """
Represent a ContentType as '<app_label>.<model>' Represent a ContentType as '<app_label>.<model>'
""" """

View File

@ -3,7 +3,7 @@ from drf_yasg.inspectors import FieldInspector, NotHandled, PaginatorInspector,
from rest_framework.fields import ChoiceField from rest_framework.fields import ChoiceField
from extras.api.customfields import CustomFieldsSerializer from extras.api.customfields import CustomFieldsSerializer
from utilities.api import ChoiceFieldSerializer from utilities.api import ChoiceField
class CustomChoiceFieldInspector(FieldInspector): 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 # 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) 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) value_schema = openapi.Schema(type=openapi.TYPE_INTEGER)
choices = list(field._choices.keys()) choices = list(field._choices.keys())

View File

@ -9,7 +9,7 @@ from dcim.models import Interface
from extras.api.customfields import CustomFieldModelSerializer from extras.api.customfields import CustomFieldModelSerializer
from ipam.models import IPAddress, VLAN from ipam.models import IPAddress, VLAN
from tenancy.api.serializers import NestedTenantSerializer 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.constants import VM_STATUS_CHOICES
from virtualization.models import Cluster, ClusterGroup, ClusterType, VirtualMachine from virtualization.models import Cluster, ClusterGroup, ClusterType, VirtualMachine
@ -91,7 +91,7 @@ class VirtualMachineIPAddressSerializer(serializers.ModelSerializer):
class VirtualMachineSerializer(CustomFieldModelSerializer): 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) cluster = NestedClusterSerializer(required=False, allow_null=True)
role = NestedDeviceRoleSerializer(required=False, allow_null=True) role = NestedDeviceRoleSerializer(required=False, allow_null=True)
tenant = NestedTenantSerializer(required=False, allow_null=True) tenant = NestedTenantSerializer(required=False, allow_null=True)
@ -145,7 +145,7 @@ class InterfaceVLANSerializer(serializers.ModelSerializer):
class InterfaceSerializer(serializers.ModelSerializer): class InterfaceSerializer(serializers.ModelSerializer):
virtual_machine = NestedVirtualMachineSerializer() virtual_machine = NestedVirtualMachineSerializer()
mode = ChoiceFieldSerializer(choices=IFACE_MODE_CHOICES) mode = ChoiceField(choices=IFACE_MODE_CHOICES)
untagged_vlan = InterfaceVLANSerializer() untagged_vlan = InterfaceVLANSerializer()
tagged_vlans = InterfaceVLANSerializer(many=True) tagged_vlans = InterfaceVLANSerializer(many=True)