Registro con email
This commit is contained in:
@@ -1,7 +1,11 @@
|
||||
from django.shortcuts import render
|
||||
from allauth.account.views import SignupView
|
||||
|
||||
from allauth.account.models import EmailConfirmation, EmailAddress
|
||||
|
||||
from django.http import JsonResponse
|
||||
from django.urls import reverse_lazy
|
||||
from django.urls import reverse_lazy, reverse
|
||||
from django.core.mail import send_mail
|
||||
|
||||
from Sistemas.models import Sistema, BitacoraErrores
|
||||
from .models import Sistemas_por_cliente_A24, ClientesA24
|
||||
from django.views.generic.edit import CreateView
|
||||
@@ -16,8 +20,11 @@ from rest_framework.views import APIView
|
||||
from rest_framework.response import Response
|
||||
from rest_framework import status
|
||||
from rest_framework.permissions import IsAuthenticated
|
||||
from .serializers import SignupSerializer
|
||||
from Sistemas.permissions import ItsAdminToken, HasAuthorizationHeader
|
||||
|
||||
from django.utils import timezone
|
||||
|
||||
import urllib.parse
|
||||
import traceback
|
||||
|
||||
@@ -70,20 +77,47 @@ class ClientesIMMEX_CreateView(CreateView):
|
||||
return response
|
||||
|
||||
"""---------API VIEWS---------"""
|
||||
class LoginIMMEX(APIView):
|
||||
pass
|
||||
class RegistroUsuarios(APIView):
|
||||
permission_classes = [ItsAdminToken]
|
||||
|
||||
def post(self,request, *args, **kwargs):
|
||||
try:
|
||||
signup_view = SignupView(request=request)
|
||||
print(request.data)
|
||||
|
||||
response = signup_view.dispatch(request)
|
||||
if response.status_code == 302:
|
||||
return Response({'message': 'Registro exitoso'})
|
||||
else:
|
||||
return Response({'message': 'Error de registro', 'errors': response.context_data['form'].errors})
|
||||
except Exception as E:
|
||||
return Response({'Error':f'Error al registro con datos del usuario {E}', 'isError':True})
|
||||
|
||||
serializer = SignupSerializer(data=request.data,context={'request':request})
|
||||
if serializer.is_valid():
|
||||
user = serializer.save()
|
||||
# Generar la confirmación de correo electrónico
|
||||
email_address = EmailAddress.objects.get(user=user, email=user.email)
|
||||
email_confirmation = EmailConfirmation.create(email_address)
|
||||
self.send_email_confirmation(request, email_confirmation)
|
||||
|
||||
return Response({'message': 'Registro exitoso'})
|
||||
else:
|
||||
print(f'SERIALIZER ERROR {serializer.errors}')
|
||||
return Response({'message': 'Error de validación', 'errors': serializer.errors})
|
||||
except Exception as E:
|
||||
print(f'ERROR {E}')
|
||||
return Response({'Error':f'Error al registro con datos del usuario {E}', 'isError':True})
|
||||
def send_email_confirmation(self, request, email_confirmation):
|
||||
email_address = email_confirmation.email_address
|
||||
email = email_address.email
|
||||
|
||||
email_confirmation.sent = timezone.now()
|
||||
email_confirmation.save()
|
||||
|
||||
email_confirmation_url = request.build_absolute_uri(reverse('account_confirm_email', args=[email_confirmation.key]))
|
||||
message = f"Por favor, confirma tu correo electrónico en el siguiente enlace: {email_confirmation_url}"
|
||||
|
||||
send_mail(
|
||||
subject='Confirmación de correo electrónico',
|
||||
message=message,
|
||||
from_email='aduanasoftpruebas@gmail.com',
|
||||
recipient_list=[email],
|
||||
)
|
||||
class Check_IMMEX_RFC(APIView):
|
||||
"""Verifica que el cliente pueda Timbrar"""
|
||||
permission_classes = [IsAuthenticated,ItsAdminToken]
|
||||
|
||||
Reference in New Issue
Block a user