65 lines
2.2 KiB
Python
65 lines
2.2 KiB
Python
from django.contrib.auth import get_user_model
|
|
from django.utils.translation import gettext_lazy as _
|
|
from rest_framework import serializers
|
|
from rest_framework.validators import UniqueValidator
|
|
|
|
from .validators.username import usernameValidator
|
|
|
|
class Pucko_User_Serializer(serializers.ModelSerializer):
|
|
|
|
class Meta:
|
|
model = get_user_model()
|
|
fields = (
|
|
'username',
|
|
'is_staff',
|
|
'date_joined',
|
|
'slug'
|
|
)
|
|
read_only_fields = ('is_staff', 'date_joined', 'slug')
|
|
lookup_field = 'slug'
|
|
extra_kwargs = {'url': {'lookup_field': 'slug'}}
|
|
|
|
class Pucko_CreateUser_Serializer(serializers.ModelSerializer):
|
|
username = serializers.CharField(required=True, validators=[UniqueValidator(queryset=get_user_model().objects.all()), usernameValidator()])
|
|
password = serializers.CharField(required=True, write_only=True)
|
|
password2 = serializers.CharField(required=True, write_only=True)
|
|
|
|
class Meta:
|
|
model = get_user_model()
|
|
fields = ('username', 'password', 'password2')
|
|
|
|
def validate(self, attrs):
|
|
if attrs['password'] != attrs['password2']:
|
|
raise serializers.ValidationError({"password": _("Password fields didn't match")})
|
|
return attrs
|
|
|
|
def create(self, validated_data):
|
|
user = get_user_model().objects.create(
|
|
username=validated_data['username']
|
|
)
|
|
user.set_password(validated_data['password'])
|
|
user.save()
|
|
return user
|
|
|
|
class Pucko_Login_Serializer(serializers.ModelSerializer):
|
|
username = serializers.CharField(required=True)
|
|
password = serializers.CharField(required=True, write_only=True)
|
|
|
|
class Meta:
|
|
model = get_user_model()
|
|
fields = ('username', 'password')
|
|
|
|
class Pucko_Renew_Serializer(serializers.Serializer):
|
|
expiry = serializers.DateTimeField(read_only=True)
|
|
token = serializers.CharField(max_length=65, read_only=True)
|
|
user = Pucko_User_Serializer(read_only=True)
|
|
|
|
class Meta:
|
|
fields = ("expiry", "token", "user")
|
|
read_only_fields = ("expiry", "token", "user")
|
|
|
|
class Logout_Serializer(serializers.Serializer):
|
|
|
|
class Meta:
|
|
fields = ()
|