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.
This commit is contained in:
34
app/main.py
34
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")
|
||||
|
||||
Reference in New Issue
Block a user