Files
consumocuidado-server/utils/tag_serializers.py
2021-01-25 11:52:36 +00:00

40 lines
961 B
Python

from rest_framework import serializers
class SingleTag(str):
def __init__(self, *args, **kwargs):
pass
def __str__(self):
return self
class SingleTagSerializerField(serializers.Field):
child = serializers.CharField()
default_error_messages = {
'not_a_str': 'Expected a string but got type "{input_type}".',
}
order_by = None
def __init__(self, **kwargs):
super(SingleTagSerializerField, self).__init__(**kwargs)
def to_internal_value(self, value):
if isinstance(value, str):
if not value:
value = ""
if not isinstance(value, str):
self.fail('not_a_str', input_type=type(value).__name__)
return value
def to_representation(self, value):
if not isinstance(value, SingleTag):
if not isinstance(value, str):
value = value.name
value = SingleTag(value)
return value