From d81972e78802a3d72c3a12499b3fef66cd5e6d00 Mon Sep 17 00:00:00 2001 From: AIIrondev Date: Fri, 28 Aug 2026 14:23:35 +0200 Subject: [PATCH] fix of a missing import --- Website/main.py | 31 +++++++++++++++++++++++-------- 1 file changed, 23 insertions(+), 8 deletions(-) diff --git a/Website/main.py b/Website/main.py index 5042e5a..0181827 100644 --- a/Website/main.py +++ b/Website/main.py @@ -34,6 +34,7 @@ from server_steering import Instance from datetime import timezone, datetime import string import traceback +import io app = Flask(__name__) app.secret_key = "ASDfhbsdfseiufhgildsrfrjg874368546987s6e8468f4!?FAUS/&s" @@ -2750,25 +2751,39 @@ def view_hauptvertrag(invoice_id): flash("Kein Hauptvertrag für diese Rechnung vorhanden.", "error") return redirect(url_for("my_invoices")) - # Sicherheitsprüfung: Darf der Nutzer die Datei sehen? (Nutzer selbst oder Admin) + # Sicherheitsprüfung current_user = session.get("username") is_admin = session.get("is_admin") if invoice.get("username") != current_user and not is_admin: flash("Keine Berechtigung zum Anschauen dieses Hauptvertrags.", "error") return redirect(url_for("my_invoices")) - # Datei-Streams aus den Binärdaten in MongoDB erzeugen file_data = invoice["hauptvertrag_data"] mimetype = invoice.get("hauptvertrag_mimetype", "application/pdf") filename = invoice.get("hauptvertrag_filename", "hauptvertrag") - return send_file( - io.BytesIO(file_data), - mimetype=mimetype, - as_attachment=False, - download_name=filename - ) + # Fallback für unterschiedliche Flask-Versionen (< 2.0 vs >= 2.0) + try: + return send_file( + io.BytesIO(file_data), + mimetype=mimetype, + as_attachment=False, + download_name=filename + ) + except TypeError: + return send_file( + io.BytesIO(file_data), + mimetype=mimetype, + as_attachment=False, + attachment_filename=filename + ) + except Exception as e: + # WICHTIG: Das schreibt den tatsächlichen Fehler in deine Docker-Logs! + import traceback + print(f"KRITISCHER FEHLER in view_hauptvertrag: {e}", flush=True) + traceback.print_exc() + flash("Fehler beim Abrufen der Datei aus der Datenbank.", "error") return redirect(url_for("my_invoices")) finally: