feat: enhance appointment management with email service integration and calendar view options

This commit is contained in:
2026-05-30 13:49:55 +02:00
parent a7d3863fde
commit 1c5aa9beed
5 changed files with 90 additions and 134 deletions
+7 -3
View File
@@ -2,6 +2,7 @@
Class for all funktions of the executive -> Lehrer
"""
import datetime
from flask import url_for
import Web.modules.emailservice.email as mail_service
import Web.modules.database.termine as termin
import Web.modules.database.settings as cfg
@@ -56,11 +57,14 @@ def new(date_start: str, date_end: str, time_span: list, slots: int, slot_lenght
if tenant_context:
subdomain = getattr(tenant_context, 'subdomain', '') or getattr(tenant_context, 'tenant_id', '') or ''
host = f"https://{subdomain}.invario.eu" if subdomain else "invario.eu"
link = host + "/terminplaner/client" + "?" + "client_id=" + id_str
try:
link = url_for('terminplaner.client', appointment_id=id_str, _external=True)
except Exception:
host = f"https://{subdomain}.invario.eu" if subdomain else "https://invario.eu"
link = host + "/terminplaner/client/" + id_str
subject = f"Terminanfrage von {user}"
note_link = note + f"Bitte klicken sie auf den folgenden Link um einen Termin zu vereinbaren: {link}"
if normalized_mail:
if normalized_mail and cfg.EMAIL_ENABLED:
mail_service.send(normalized_mail, subject, note_link)
return link
+18 -3
View File
@@ -75,13 +75,28 @@ def configure():
if not start or not end or not time or not slots_amount or not slot_lenght:
flash('Bitte alle Pflichtfelder ausfüllen.', 'error')
return render_template('termin_configure.html', school_periods=cfg.SCHOOL_PERIODS, generated_link=None)
return render_template(
'termin_configure.html',
school_periods=cfg.SCHOOL_PERIODS,
generated_link=None,
email_service_enabled=cfg.EMAIL_ENABLED,
)
link = appointment_service.new(start, end, time, slots_amount, slot_lenght, session["username"], mail, note)
flash('Der Terminplan wurde angelegt.', 'success')
return render_template('termin_configure.html', school_periods=cfg.SCHOOL_PERIODS, generated_link=link)
return render_template(
'termin_configure.html',
school_periods=cfg.SCHOOL_PERIODS,
generated_link=link,
email_service_enabled=cfg.EMAIL_ENABLED,
)
elif request.method == "GET":
return render_template('termin_configure.html', school_periods=cfg.SCHOOL_PERIODS, generated_link=None)
return render_template(
'termin_configure.html',
school_periods=cfg.SCHOOL_PERIODS,
generated_link=None,
email_service_enabled=cfg.EMAIL_ENABLED,
)
@appoint_bp.route('/')
def main():