modified: routes/journal_routes.py

This commit is contained in:
SimolZimol
2026-08-02 21:36:11 +02:00
parent f973e67311
commit 25d35e5556

View File

@@ -8,6 +8,7 @@ import io
import json
import calendar
from datetime import date, datetime, timedelta
from urllib.parse import urlencode
from flask import (
Blueprint, render_template, request, redirect, url_for,
@@ -439,9 +440,12 @@ def month():
def _csv_response(title: str, filename: str, rows: list[dict]) -> Response:
"""Baut eine CSV-Datei als HTTP-Antwort zusammen."""
"""Baut eine CSV-Datei als HTTP-Antwort zusammen.
Trennzeichen: Semikolon (deutsches Excel erwartet ';' statt Komma).
"""
output = io.StringIO()
writer = csv.writer(output)
writer = csv.writer(output, delimiter=";")
writer.writerow([
"Datum", "Wochentag", "Bullet", "Typ", "Notiz", "Priorität",
"Status", "Verweise",
@@ -534,19 +538,13 @@ def report():
today = date.today()
# Für Export-Links: aktuelle Filter als Query-String aufbauen
# (urlencode erhält wiederholte Parameter wie wd=0&wd=1 dict() würde sie kollabieren)
def _qs(fmt):
params = [
("range", filters["range_type"]),
("format", fmt),
]
for wd in filters["weekdays"]:
params.append(("wd", str(wd)))
for b in filters["bullets"]:
params.append(("bullet", b))
for s in filters["statuses"]:
params.append(("status", s))
for p in filters["priorities"]:
params.append(("priority", str(p)))
params = [("range", filters["range_type"]), ("format", fmt)]
params += [("wd", str(wd)) for wd in filters["weekdays"]]
params += [("bullet", b) for b in filters["bullets"]]
params += [("status", s) for s in filters["statuses"]]
params += [("priority", str(p)) for p in filters["priorities"]]
if filters["range_type"] == "month":
params.append(("month", filters["start"].strftime("%Y-%m")))
elif filters["range_type"] == "custom":
@@ -554,7 +552,7 @@ def report():
params.append(("to", filters["end"].strftime("%Y-%m-%d")))
else:
params.append(("week", filters["start"].strftime("%G-W%V")))
return url_for("journal.report_export", **dict(params))
return url_for("journal.report_export") + "?" + urlencode(params)
export_csv_url = _qs("csv")
export_pdf_url = _qs("pdf")
@@ -608,9 +606,9 @@ def report_export():
},
)
# CSV
# CSV Semikolon als Trennzeichen (deutsches Excel erwartet ';')
output = io.StringIO()
writer = csv.writer(output)
writer = csv.writer(output, delimiter=";")
writer.writerow([
"Datum", "Wochentag", "Bullet", "Typ", "Notiz", "Priorität",
"Status", "Verweise",