Код: Выделить всё
class VerifyEmailView(GenericAPIView):
serializer_class=VerfyEmailSerializer
@csrf_exempt
def post(self,request):
serializer=self.get_serializer(data=request.data)
if not serializer.is_valid():
return Response(
{'message':'Invalid Input','error':serializer.errors},
status=status.HTTP_400_BAD_REQUEST
)
else:
otpcode=serializer.validated_data['totp']
try:
# Find the latest OTP for any user (since email isn’t provided)
user_code_obj = OneTimePassword.objects.latest('created_at')
user = user_code_obj.user
if user_code_obj.is_expired():
user_code_obj.delete()
print(user_code_obj)
return Response(
{'message': 'OTP expired'},
status=status.HTTP_400_BAD_REQUEST
)
if user_code_obj.verify_Otp(otpcode): # Pass the submitted OTP
user_code_obj.delete()
if not user.is_verified:
user.is_verified = True
user.save()
print(user)
return Response(
{'message': 'Account email verified successfully'},
status=status.HTTP_200_OK
)
return Response(
{'message': 'User already verified'},
status=status.HTTP_200_OK
)
return Response(
{'message': 'Invalid OTP code'},
status=status.HTTP_400_BAD_REQUEST
)
except OneTimePassword.DoesNotExist:
return Response(
{'message': 'No valid OTP found'},
status=status.HTTP_404_NOT_FOUND
)
Подробнее здесь: https://stackoverflow.com/questions/796 ... en-not-set