""" Serializers for API. """ from django.contrib.auth import get_user_model from rest_framework import serializers User = get_user_model() class UserRegistrationSerializer(serializers.ModelSerializer): """Serializer for user registration.""" password = serializers.CharField(write_only=True, min_length=6) password_confirm = serializers.CharField(write_only=True, min_length=6) class Meta: model = User fields = ['username', 'email', 'password', 'password_confirm', 'first_name', 'last_name'] def validate(self, data): if data['password'] != data['password_confirm']: raise serializers.ValidationError({"password": "Passwords must match"}) return data def create(self, validated_data): validated_data.pop('password_confirm') user = User.objects.create_user( username=validated_data['username'], email=validated_data['email'], password=validated_data['password'], first_name=validated_data.get('first_name', ''), last_name=validated_data.get('last_name', '') ) return user class UserSerializer(serializers.ModelSerializer): """Serializer for user details.""" class Meta: model = User fields = ['id', 'username', 'email', 'first_name', 'last_name', 'created_at'] read_only_fields = ['id', 'created_at'] class LoginSerializer(serializers.Serializer): """Serializer for login.""" username = serializers.CharField() password = serializers.CharField(write_only=True)