gault-millau/apps/account/views/web.py

32 lines
1.0 KiB
Python

"""Web account views"""
from rest_framework import permissions
from rest_framework import status, generics
from rest_framework.response import Response
from account import models
from account.serializers import web as serializers
from utils import exceptions as utils_exceptions
# Password reset
class PasswordResetView(generics.GenericAPIView):
"""View for resetting user password"""
permission_classes = (permissions.IsAuthenticated,)
serializer_class = serializers.PasswordResetSerializer
def post(self, request, *args, **kwargs):
"""Post-method for password resetting"""
user = request.user
obj = models.ResetPasswordToken.objects.create(
user=user,
ip_address=request.META.get('REMOTE_ADDR'),
source=models.ResetPasswordToken.MOBILE
)
try:
# todo: make as celery task
obj.send_reset_password_request()
return Response(status=status.HTTP_200_OK)
except:
raise utils_exceptions.EmailSendingError(user.email)