Enhance newsletter generation and dashboard functionality
- Introduce a new period selection feature in the dashboard for generating newsletters, allowing users to choose between "last month" and "last X days." - Refactor newsletter generation logic to support filtering by article type (new, edited, or all) and improve the handling of filters in the dashboard. - Update the dashboard template to include new input fields for period and article type, enhancing user experience. - Improve CSS styles for send notifications and sections in the dashboard, providing clearer feedback on newsletter sending status.
This commit is contained in:
@@ -32,14 +32,16 @@ def send_newsletter(
|
||||
text_content: str,
|
||||
recipients: Sequence[str],
|
||||
scheduled: bool = False,
|
||||
) -> None:
|
||||
) -> tuple[str, str]:
|
||||
settings = get_smtp_settings(db)
|
||||
if settings["enabled"].lower() != "true":
|
||||
_log(db, subject, recipients, "skipped", "SMTP ist deaktiviert.", scheduled)
|
||||
return
|
||||
detail = "SMTP ist deaktiviert. Bitte in der SMTP-Konfiguration aktivieren."
|
||||
_log(db, subject, recipients, "skipped", detail, scheduled)
|
||||
return "skipped", detail
|
||||
if not settings["host"] or not settings["from_email"] or not recipients:
|
||||
_log(db, subject, recipients, "failed", "SMTP unvollständig konfiguriert.", scheduled)
|
||||
return
|
||||
detail = "SMTP unvollständig konfiguriert (Host, Absender oder Empfänger fehlen)."
|
||||
_log(db, subject, recipients, "failed", detail, scheduled)
|
||||
return "failed", detail
|
||||
|
||||
msg = MIMEMultipart("alternative")
|
||||
msg.attach(MIMEText(text_content, "plain", "utf-8"))
|
||||
@@ -56,9 +58,13 @@ def send_newsletter(
|
||||
if settings["username"]:
|
||||
server.login(settings["username"], settings["password"])
|
||||
server.sendmail(settings["from_email"], list(recipients), msg.as_string())
|
||||
_log(db, subject, recipients, "sent", "Versand erfolgreich.", scheduled)
|
||||
detail = f"Versand erfolgreich an {len(recipients)} Empfänger."
|
||||
_log(db, subject, recipients, "sent", detail, scheduled)
|
||||
return "sent", detail
|
||||
except Exception as exc:
|
||||
_log(db, subject, recipients, "failed", f"Versandfehler: {exc}", scheduled)
|
||||
detail = f"Versandfehler: {exc}"
|
||||
_log(db, subject, recipients, "failed", detail, scheduled)
|
||||
return "failed", detail
|
||||
|
||||
|
||||
def run_scheduled_send_if_due(db: Session, subject: str, html_content: str, text_content: str) -> None:
|
||||
|
||||
Reference in New Issue
Block a user