Repository URL to install this package:
|
Version:
0.24.6 ▾
|
from django.contrib.auth import get_user_model
from django.core.exceptions import ObjectDoesNotExist, ValidationError
from rest_framework import serializers
from rest_framework.compat import smart_text
User = get_user_model()
class UUIDRelatedField(serializers.RelatedField):
default_error_messages = {
'required': 'This field is required.',
'does_not_exist': 'Invalid uuid "{uuid_value}" - object does not exist.',
'incorrect_type': 'Incorrect type. Expected string value, received {data_type}.',
}
queryset = User.objects.all()
def to_native(self, value):
return str(value.uuid)
def from_native(self, data):
if self.queryset is None:
raise Exception('Writable related fields must include a `queryset` argument')
try:
return self.queryset.get(**{'uuid': data})
except ObjectDoesNotExist:
raise ValidationError(self.error_messages['does_not_exist'] %
(self.slug_field, smart_text(data)))
except (TypeError, ValueError):
msg = self.error_messages['invalid']
raise ValidationError(msg)
class UserNameRelatedField(serializers.RelatedField):
default_error_messages = {
'required': 'This field is required.',
'does_not_exist': 'Invalid username "{username_value}" - object does not exist.',
'incorrect_type': 'Incorrect type. Expected string value, received {data_type}.',
}
queryset = User.objects.all()
def to_native(self, value):
return value.username
def from_native(self, data):
if self.queryset is None:
raise Exception('Writable related fields must include a `queryset` argument')
try:
return self.queryset.get(**{'username': data})
except ObjectDoesNotExist:
raise ValidationError(self.error_messages['does_not_exist'] %
(self.slug_field, smart_text(data)))
except (TypeError, ValueError):
msg = self.error_messages['invalid']
raise ValidationError(msg)