from config.env import env from django.contrib.auth import get_user_model from django.utils.translation import gettext as _ from rest_framework import exceptions, serializers OTP_SIZE = env.int("OTP_SIZE", 4) class LoginSerializer(serializers.Serializer): phone = serializers.CharField(max_length=255) def validate_phone(self, value): user = get_user_model().objects.filter(phone=value, validated_at__isnull=False).exists() if not user: raise exceptions.ValidationError(_("Phone Not Found")) return value class RegisterSerializer(serializers.ModelSerializer): phone = serializers.CharField(max_length=255) class Meta: model = get_user_model() fields = ["phone"] class ConfirmSerializer(serializers.Serializer): code = serializers.CharField(max_length=OTP_SIZE, min_length=OTP_SIZE) phone = serializers.CharField(max_length=255) class ResetPasswordSerializer(serializers.Serializer): phone = serializers.CharField(max_length=255) def validate_phone(self, value): user = get_user_model().objects.filter(phone=value) if user.exists(): return value raise serializers.ValidationError(_("User does not exist")) class ResetConfirmationSerializer(serializers.Serializer): code = serializers.CharField(min_length=OTP_SIZE, max_length=OTP_SIZE) phone = serializers.CharField(max_length=255) def validate_phone(self, value): user = get_user_model().objects.filter(phone=value) if user.exists(): return value raise serializers.ValidationError(_("User does not exist")) class ResendSerializer(serializers.Serializer): phone = serializers.CharField(max_length=255)