From 0e37dac816b28a95e2d9f43039bc98e77a3803f0 Mon Sep 17 00:00:00 2001 From: smueller Date: Tue, 7 Jul 2026 15:44:37 +0200 Subject: [PATCH] Update dashboard to handle newsletter send status and redirect accordingly - Added logic to retrieve and display the send status and message on the dashboard. - Modified the send_now function to redirect to the dashboard with query parameters for status and message. - Removed redundant context updates in the send_now function for cleaner code. --- app/main.py | 34 ++++++++-------------------------- 1 file changed, 8 insertions(+), 26 deletions(-) diff --git a/app/main.py b/app/main.py index 1cf0476..b5637d4 100644 --- a/app/main.py +++ b/app/main.py @@ -2,6 +2,7 @@ import asyncio import logging from datetime import datetime from pathlib import Path +from urllib.parse import urlencode from pydantic import ValidationError @@ -337,6 +338,10 @@ async def _generate_newsletter( @app.get("/dashboard", response_class=HTMLResponse) async def dashboard(request: Request, db: Session = Depends(get_db), current_user: User = Depends(get_current_user)): context = _base_context(request, current_user, db) + send_status = request.query_params.get("send_status") + send_result = None + if send_status: + send_result = {"status": send_status, "message": request.query_params.get("send_msg", "")} context.update({ "articles": [], "articles_new": [], @@ -347,7 +352,7 @@ async def dashboard(request: Request, db: Session = Depends(get_db), current_use "subject": "", "filters": _empty_filters(), "wiki_error": None, - "send_result": None, + "send_result": send_result, }) logs = db.query(SendLog).order_by(SendLog.created_at.desc()).limit(20).all() context["send_logs"] = logs @@ -463,31 +468,8 @@ async def send_now( status_code, detail = send_newsletter(db, gen["subject"], gen["raw_html"], gen["plain_text"], recipients, scheduled=False) send_result = {"status": status_code, "message": detail} - context = _base_context(request, current_user, db) - context.update( - { - "articles": gen["articles"], - "articles_new": gen["articles_new"], - "articles_edited": gen["articles_edited"], - "raw_html": gen["raw_html"], - "outlook_html": gen["outlook_html"], - "plain_text": gen["plain_text"], - "subject": gen["subject"], - "filters": { - "days": days, - "period": period, - "article_type": article_type, - "category": category, - "display": display, - "editor_tip": editor_tip, - "highlights": highlights, - }, - "send_logs": db.query(SendLog).order_by(SendLog.created_at.desc()).limit(20).all(), - "wiki_error": gen["wiki_error"], - "send_result": send_result, - } - ) - return _render(request, "dashboard.html", context) + query = urlencode({"send_status": send_result["status"], "send_msg": send_result["message"]}) + return RedirectResponse(url=f"/dashboard?{query}", status_code=status.HTTP_303_SEE_OTHER) @app.post("/admin/smtp")