fix of a missing import
This commit is contained in:
+23
-8
@@ -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:
|
||||||
|
|||||||
Reference in New Issue
Block a user