Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
hub-client / dockerhub / serializers / fields.py
Size: Mime:
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)