fix of a missing import

This commit is contained in:
2026-08-28 14:23:35 +02:00
parent 0ee05d55f4
commit d81972e788
+23 -8
View File
@@ -34,6 +34,7 @@ from server_steering import Instance
from datetime import timezone, datetime from datetime import timezone, datetime
import string import string
import traceback import traceback
import io
app = Flask(__name__) app = Flask(__name__)
app.secret_key = "ASDfhbsdfseiufhgildsrfrjg874368546987s6e8468f4!?FAUS/&s" app.secret_key = "ASDfhbsdfseiufhgildsrfrjg874368546987s6e8468f4!?FAUS/&s"
@@ -2750,25 +2751,39 @@ def view_hauptvertrag(invoice_id):
flash("Kein Hauptvertrag für diese Rechnung vorhanden.", "error") flash("Kein Hauptvertrag für diese Rechnung vorhanden.", "error")
return redirect(url_for("my_invoices")) 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") current_user = session.get("username")
is_admin = session.get("is_admin") is_admin = session.get("is_admin")
if invoice.get("username") != current_user and not is_admin: if invoice.get("username") != current_user and not is_admin:
flash("Keine Berechtigung zum Anschauen dieses Hauptvertrags.", "error") flash("Keine Berechtigung zum Anschauen dieses Hauptvertrags.", "error")
return redirect(url_for("my_invoices")) return redirect(url_for("my_invoices"))
# Datei-Streams aus den Binärdaten in MongoDB erzeugen
file_data = invoice["hauptvertrag_data"] file_data = invoice["hauptvertrag_data"]
mimetype = invoice.get("hauptvertrag_mimetype", "application/pdf") mimetype = invoice.get("hauptvertrag_mimetype", "application/pdf")
filename = invoice.get("hauptvertrag_filename", "hauptvertrag") filename = invoice.get("hauptvertrag_filename", "hauptvertrag")
return send_file( # Fallback für unterschiedliche Flask-Versionen (< 2.0 vs >= 2.0)
io.BytesIO(file_data), try:
mimetype=mimetype, return send_file(
as_attachment=False, io.BytesIO(file_data),
download_name=filename 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: 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") flash("Fehler beim Abrufen der Datei aus der Datenbank.", "error")
return redirect(url_for("my_invoices")) return redirect(url_for("my_invoices"))
finally: finally: