implementation of the Email add on
Release Inventarsystem / release-docker (push) Successful in 2m24s
Release Inventarsystem / release-docker (push) Successful in 2m24s
This commit is contained in:
@@ -3,6 +3,7 @@ import Web.modules.terminplaner.backend_server as appointment_service
|
||||
import Web.modules.database.settings as cfg
|
||||
import Web.modules.database.termine as termin
|
||||
import Web.modules.database.user as us
|
||||
from Web.modules.emailservice.email import send_pdf
|
||||
from Web.modules.terminplaner.backend_server import _resolve_public_base_url
|
||||
import csv
|
||||
import io
|
||||
@@ -409,7 +410,7 @@ def client_slot_calendar_export(appointment_id):
|
||||
return response
|
||||
|
||||
|
||||
@appoint_bp.route('/export_pdf_brief/<plan_id>', methods=['GET'])
|
||||
@appoint_bp.route('/export_pdf_brief/<plan_id>', methods=['GET', 'POST'])
|
||||
def export_pdf_brief(plan_id):
|
||||
# 1. Daten holen (Hier als Beispiel, passe dies auf deine Datenbank an)
|
||||
# terminplan = Terminplan.query.get(plan_id)
|
||||
@@ -532,12 +533,35 @@ def export_pdf_brief(plan_id):
|
||||
# Buffer auf Anfang zurücksetzen
|
||||
pdf_buffer.seek(0)
|
||||
|
||||
pdf_filename = f"Einladung_{plan_daten['titel'].replace(' ', '_')}.pdf"
|
||||
if request.method == 'POST':
|
||||
recipient_email = (request.form.get('recipient_email') or '').strip()
|
||||
if not recipient_email:
|
||||
flash('Bitte eine Empfänger-E-Mail-Adresse eingeben oder nur PDF auswählen.', 'error')
|
||||
return redirect(url_for('terminplaner.main', tenant=tenant_id or None))
|
||||
if not cfg.MODULES.is_enabled('mail'):
|
||||
flash('Das E-Mail-Add-on ist deaktiviert. Der Einladungsbrief kann weiterhin als PDF heruntergeladen werden.', 'warning')
|
||||
return redirect(url_for('terminplaner.main', tenant=tenant_id or None))
|
||||
sent = send_pdf(
|
||||
recipient_email,
|
||||
f'Einladung zur Terminbuchung: {plan_daten["titel"]}',
|
||||
f'Anbei erhalten Sie den Einladungsbrief für {plan_daten["titel"]} als PDF.',
|
||||
'Terminplanungssystem',
|
||||
pdf_buffer.getvalue(),
|
||||
pdf_filename,
|
||||
)
|
||||
flash(
|
||||
'Einladungsbrief wurde per E-Mail versendet.' if sent else 'Einladungsbrief konnte nicht per E-Mail versendet werden.',
|
||||
'success' if sent else 'error',
|
||||
)
|
||||
return redirect(url_for('terminplaner.main', tenant=tenant_id or None))
|
||||
|
||||
# An Nutzer ausliefern
|
||||
return send_file(
|
||||
pdf_buffer,
|
||||
mimetype='application/pdf',
|
||||
as_attachment=True,
|
||||
download_name=f"Einladung_{plan_daten['titel'].replace(' ', '_')}.pdf"
|
||||
download_name=pdf_filename
|
||||
)
|
||||
|
||||
@appoint_bp.route('/')
|
||||
@@ -557,5 +581,6 @@ def main():
|
||||
current_user=current_user,
|
||||
upcoming_events=upcoming_events,
|
||||
tenant_id=tenant_id,
|
||||
appointment_module_enabled=cfg.MODULES.is_enabled('terminplan')
|
||||
appointment_module_enabled=cfg.MODULES.is_enabled('terminplan'),
|
||||
mail_service_enabled=cfg.MODULES.is_enabled('mail')
|
||||
)
|
||||
Reference in New Issue
Block a user