diff --git a/backend/routes/user_routes.py b/backend/routes/user_routes.py index 32f9af5..6153199 100644 --- a/backend/routes/user_routes.py +++ b/backend/routes/user_routes.py @@ -1,5 +1,7 @@ from fastapi import APIRouter, BackgroundTasks, Depends, HTTPException +import asyncio + from models.user import ( ChangePasswordRequest, ForgotPasswordRequest, @@ -31,6 +33,12 @@ user_router = APIRouter() +def run_in_new_loop(coro): + loop = asyncio.new_event_loop() + asyncio.set_event_loop(loop) + return loop.run_until_complete(coro) + + @user_router.get("/users/") async def get_users(current_admin_user: User = Depends(get_current_admin_user)): # Open a database session and fetch all users @@ -162,26 +170,22 @@ async def reset_password(request: ResetPasswordRequest): async def send_verification_email( request: SendVerificationEmailRequest, background_tasks: BackgroundTasks ): - print("Getting user by email") with DatabaseManager() as session: user_manager = UserManager(session) user = user_manager.get_user_by_email(request.email) if not user: raise HTTPException(status_code=404, detail="User not found") - print("Generating verification token") # Generate a verification token and save it in the database token = generate_email_verification_token(user.email) user_manager.update_user_verification_token( username=user.username, verification_token=token ) - print("Sending verification email") # Add a background task to send the email - # background_tasks.add_task( - # send_verification_email_with_sendgrid, user.email, token - # ) - await send_verification_email_with_sendgrid([user.email], token) + background_tasks.add_task( + run_in_new_loop, send_verification_email_with_sendgrid([user.email], token) + ) return {"message": f"Verification email sent for {user.email}"} diff --git a/backend/utils/email.py b/backend/utils/email.py index c20006b..823a929 100644 --- a/backend/utils/email.py +++ b/backend/utils/email.py @@ -39,9 +39,7 @@ async def send_verification_email_with_sendgrid(email: List[str], token: str): message.tracking_settings = TrackingSettings() message.tracking_settings.click_tracking = ClickTracking(False, False) try: - print("Sending email") sg = SendGridAPIClient(SENDGRID_API_KEY) - print("Sending email") response = await sg.send(message) print(response.status_code) print(response.body)