Registro con email

This commit is contained in:
rexcom28
2023-05-25 12:31:24 -06:00
parent 050ea95e2d
commit 34a80e3556
3 changed files with 82 additions and 13 deletions

View File

@@ -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]