changes to the sceduler for the test version with the right processing

This commit is contained in:
2026-09-07 23:08:46 +02:00
parent a0fa6bcc7a
commit a2a79be57b
4 changed files with 283 additions and 2 deletions
+49
View File
@@ -181,6 +181,55 @@ def send_register_token(email: str, token: str) -> bool:
return send(email, subject, text_body=text_note, html_body=html_note)
def send_trial_notification(
recipient: str,
event: str,
domain: str,
school_name: str,
expires_at: str = "",
upgrade_url: str = "https://invario-software.de/preise",
) -> bool:
"""Send a lifecycle notification for a trial tenant."""
messages = {
"started": (
"Ihre 14-tägige Invario-Testversion ist aktiv.",
"Ihre Testversion wurde aktiviert. Alle Module sind für 14 Tage freigeschaltet.",
),
"reminder": (
"Ihre Invario-Testversion endet bald.",
"Ihre Testversion endet in Kürze. Sie können jetzt auf eine reguläre Lizenz upgraden.",
),
"expired": (
"Ihre Invario-Testversion ist abgelaufen.",
"Die 14-tägige Testversion ist abgelaufen und die Module wurden deaktiviert.",
),
"deleted": (
"Ihre Invario-Testdaten wurden gelöscht.",
"Die Testdaten wurden 30 Tage nach Ablauf der Testversion endgültig gelöscht.",
),
}
subject, message = messages.get(event, ("Information zu Ihrer Invario-Testversion", "Es gibt eine Aktualisierung zu Ihrer Testversion."))
expiry_note = f"\nAblaufdatum: {expires_at}" if expires_at else ""
text_body = (
f"Guten Tag,\n\n{message}\n\n"
f"Schule: {school_name}\nAdresse: https://{domain}{expiry_note}\n\n"
f"Upgrade: {upgrade_url}\n\n"
"Bitte sichern Sie Ihre Daten vor Ablauf bzw. Löschung der Testversion."
)
html_body = f"""
<div style="font-family: Arial, Helvetica, sans-serif; color: #333333;">
<h2 style="color: #2c3e50;">{subject}</h2>
<p>{message}</p>
<p><strong>Schule:</strong> {school_name}<br>
<strong>Adresse:</strong> <a href="https://{domain}">https://{domain}</a><br>
<strong>Ablaufdatum:</strong> {expires_at or "-"}</p>
<p><a href="{upgrade_url}">Jetzt auf eine reguläre Lizenz upgraden</a></p>
<p style="color: #64748b;">Bitte sichern Sie Ihre Daten vor Ablauf bzw. Löschung der Testversion.</p>
</div>
"""
return send(recipient, subject, text_body=text_body, html_body=html_body)
def send_password_reset_token(email: str, token: str) -> bool:
"""Sends a professionally styled password reset token to the user."""
subject = "Aktion erforderlich: Ihr Passwort-Zurücksetzungs-Code für Invario"