11from flask import flash , redirect , render_template , request , url_for
2- from flask_login import current_user , logout_user
2+ from flask_login import current_user , login_user , logout_user
33from pymysql import IntegrityError
44
55from app import db
1010from app .modules .captcha .services import CaptchaService
1111from app .modules .confirmemail .services import ConfirmemailService
1212from app .modules .profile .services import UserProfileService
13+ from core .managers .task_queue_manager import TaskQueueManager
1314
1415authentication_service = AuthenticationService ()
1516user_profile_service = UserProfileService ()
@@ -23,30 +24,34 @@ def signup():
2324 return redirect (url_for ("public.index" ))
2425
2526 form = SignupForm ()
26- if form .validate_on_submit ():
27- user_input = request .form ["captcha" ]
28- if not captcha_service .validate_captcha (user_input ):
29- flash ("Please complete the reCAPTCHA" , "danger" )
30- return render_template ("auth/signup_form.html" , form = form )
3127
32- email = form .email .data
28+ if request .method == "POST" and form .validate_on_submit ():
29+ email = form .email .data .strip ().lower ()
30+
3331 if not authentication_service .is_email_available (email ):
34- flash (f"Email { email } is already in use" , "danger" )
32+ flash (f"The email '{ email } ' is already registered." , "danger" )
33+ return render_template ("auth/signup_form.html" , form = form )
34+
35+ user_input = request .form .get ("captcha" , "" )
36+ if not captcha_service .validate_captcha (user_input ):
37+ flash ("Please complete the CAPTCHA correctly." , "danger" )
3538 return render_template ("auth/signup_form.html" , form = form )
3639
3740 try :
38- # We try to create the user
3941 user = authentication_service .create_with_profile (** form .data )
40- confirmemail_service .send_confirmation_email (user .email )
41- except IntegrityError as exc :
42- db .session .rollback ()
43- if "Duplicate entry" in str (exc ):
44- flash (f"Email { email } is already in use" , "danger" )
45- else :
46- flash (f"Error creating user: { exc } " , "danger" )
47- return render_template ("auth/signup_form.html" , form = form )
42+ login_user (user , remember = True )
43+ flash ("Account created successfully. Welcome!" , "success" )
4844
49- return redirect (url_for ("public.index" ))
45+ print (">>> SIGNUP reached end: before enqueuing email" , flush = True )
46+
47+ task_manager = TaskQueueManager ()
48+ task_manager .enqueue_task ("app.modules.auth.tasks.send_confirmation_email" , email = user .email , timeout = 10 )
49+
50+ return redirect (url_for ("public.index" ))
51+
52+ except IntegrityError :
53+ db .session .rollback ()
54+ flash ("An error occurred while creating your account." , "danger" )
5055
5156 return render_template ("auth/signup_form.html" , form = form )
5257
0 commit comments