first custom tag seriliazer tests
This commit is contained in:
39
utils/tag_serializers.py
Normal file
39
utils/tag_serializers.py
Normal file
@@ -0,0 +1,39 @@
|
||||
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
|
||||
Reference in New Issue
Block a user