Beispiel #1
0
class IssuerRoleActionSerializerV1(serializers.Serializer):
    """ A serializer used for validating user role change POSTS """
    action = serializers.ChoiceField(('add', 'modify', 'remove'),
                                     allow_blank=True)
    username = serializers.CharField(allow_blank=True, required=False)
    email = serializers.EmailField(allow_blank=True, required=False)
    role = serializers.CharField(validators=[
        ChoicesValidator(list(dict(IssuerStaff.ROLE_CHOICES).keys()))
    ],
                                 default=IssuerStaff.ROLE_STAFF)
    url = serializers.URLField(max_length=1024, required=False)
    telephone = serializers.CharField(max_length=100, required=False)

    def validate(self, attrs):
        identifiers = [
            attrs.get('username'),
            attrs.get('email'),
            attrs.get('url'),
            attrs.get('telephone')
        ]
        identifier_count = len(list(filter(None.__ne__, identifiers)))
        if identifier_count > 1:
            raise serializers.ValidationError(
                'Please provided only one of the following: a username, email address, url, or telephone recipient identifier.'
            )
        return attrs
Beispiel #2
0
class IssuerStaffSerializerV2(DetailSerializerV2):
    user = EntityRelatedFieldV2(source='cached_user', queryset=BadgeUser.cached)
    role = serializers.CharField(validators=[ChoicesValidator(dict(IssuerStaff.ROLE_CHOICES).keys())])

    class Meta(DetailSerializerV2.Meta):
        apispec_definition = ('IssuerStaff', {
            'properties': {
                'role': {
                    'type': "string",
                    'enum': ["staff", "editor", "owner"]

                }
            }
        })
class IssuerRoleActionSerializerV1(serializers.Serializer):
    """ A serializer used for validating user role change POSTS """
    action = serializers.ChoiceField(('add', 'modify', 'remove'), allow_blank=True)
    username = serializers.CharField(allow_blank=True, required=False)
    email = serializers.EmailField(allow_blank=True, required=False)
    role = serializers.CharField(
        validators=[ChoicesValidator(dict(IssuerStaff.ROLE_CHOICES).keys())],
        default=IssuerStaff.ROLE_STAFF)

    def validate(self, attrs):
        if attrs.get('username') and attrs.get('email'):
            raise serializers.ValidationError(
                'Either a username or email address must be provided, not both.')
        return attrs
Beispiel #4
0
class IssuerStaffSerializerV1(serializers.Serializer):
    """ A read_only serializer for staff roles """
    user = BadgeUserProfileSerializerV1(source='cached_user')
    role = serializers.CharField(
        validators=[ChoicesValidator(dict(IssuerStaff.ROLE_CHOICES).keys())])

    class Meta:
        list_serializer_class = CachedListSerializer

        apispec_definition = ('IssuerStaff', {
            'properties': {
                'role': {
                    'type': "string",
                    'enum': ["staff", "editor", "owner"]
                }
            }
        })