Skip to content
Snippets Groups Projects
serializers.py 1.66 KiB
from rest_framework import serializers
from arkindex.users.models import OAuthCredentials, User


class OAuthCredentialsSerializer(serializers.ModelSerializer):

    provider_display_name = serializers.CharField(source='provider_class.display_name')

    class Meta:
        model = OAuthCredentials
        fields = (
            'id',
            'provider_name',
            'provider_display_name',
            'provider_url',
            'account_name',
        )


class OAuthProviderClassSerializer(serializers.Serializer):

    name = serializers.CharField(source='__name__')
    display_name = serializers.CharField()
    default_url = serializers.URLField(source='url')


class UserSerializer(serializers.ModelSerializer):

    class Meta:
        model = User
        fields = (
            'id',
            'email',
            'password',
            'is_admin',
        )
        extra_kwargs = {
            'id': {'read_only': True},
            'email': {'read_only': True},
            'password': {'write_only': True},
            'is_admin': {'read_only': True},
        }

    def update(self, instance, validated_data):
        if 'password' in validated_data:
            instance.set_password(validated_data.pop('password'))
        return super().update(instance, validated_data)


class NewUserSerializer(serializers.ModelSerializer):

    class Meta:
        model = User
        fields = (
            'email',
        )

    def create(self, validated_data):
        return User.objects.create_user(validated_data['email'])


class EmailLoginSerializer(serializers.Serializer):

    email = serializers.EmailField()
    password = serializers.CharField(write_only=True)