puckoprutt-web-api/users/serializer.py
2025-02-18 20:55:11 +01:00

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 = ()