48 lines
1.5 KiB
Python
48 lines
1.5 KiB
Python
"""Serializers for account web"""
|
|
from django.contrib.auth import password_validation as password_validators
|
|
from rest_framework import serializers
|
|
|
|
from account import models
|
|
from utils import exceptions as utils_exceptions
|
|
|
|
|
|
class PasswordResetSerializer(serializers.ModelSerializer):
|
|
"""Serializer from model PasswordReset"""
|
|
|
|
class Meta:
|
|
"""Meta class"""
|
|
model = models.ResetPasswordToken
|
|
fields = ('expiry_datetime', )
|
|
|
|
def create(self, validated_data, *args, **kwargs):
|
|
"""Override create method"""
|
|
request = self.context.get('request')
|
|
user = request.user
|
|
ip_address = request.META.get('REMOTE_ADDR')
|
|
obj = models.ResetPasswordToken.objects.create(
|
|
user=user,
|
|
ip_address=ip_address,
|
|
source=models.ResetPasswordToken.MOBILE
|
|
)
|
|
try:
|
|
# todo: make as celery task
|
|
obj.send_reset_password_request()
|
|
return obj
|
|
except:
|
|
raise utils_exceptions.EmailSendingError(user.email)
|
|
|
|
|
|
# class PasswordResetConfirmSerializer(serializers.Serializer):
|
|
# """Serializer for reset password"""
|
|
#
|
|
# password = serializers.CharField(write_only=True)
|
|
#
|
|
# def validate_password(self, data):
|
|
# """Custom password validation"""
|
|
# try:
|
|
# password_validators.validate_password(password=data)
|
|
# except serializers.ValidationError as e:
|
|
# raise serializers.ValidationError(str(e))
|
|
# else:
|
|
# return data
|