Improve PDF export line breaks
This commit is contained in:
+19
-1
@@ -2033,7 +2033,7 @@ def fetch_plan_entries_for_range_export(start_date: date, end_date: date, *, mod
|
|||||||
|
|
||||||
|
|
||||||
def format_week_pdf_entry(entry: dict, *, mode: str) -> str:
|
def format_week_pdf_entry(entry: dict, *, mode: str) -> str:
|
||||||
label = entry["item_name"]
|
label = format_pdf_cell_label(entry["item_name"])
|
||||||
if mode == "household":
|
if mode == "household":
|
||||||
if entry.get("target_name"):
|
if entry.get("target_name"):
|
||||||
return f"{label} (Für {entry['target_name']})"
|
return f"{label} (Für {entry['target_name']})"
|
||||||
@@ -2046,6 +2046,23 @@ def format_week_pdf_entry(entry: dict, *, mode: str) -> str:
|
|||||||
return label
|
return label
|
||||||
|
|
||||||
|
|
||||||
|
def format_pdf_cell_label(label: str) -> str:
|
||||||
|
cleaned = " ".join((label or "").split())
|
||||||
|
if not cleaned:
|
||||||
|
return ""
|
||||||
|
|
||||||
|
if " - " in cleaned:
|
||||||
|
return cleaned.replace(" - ", "\n")
|
||||||
|
|
||||||
|
if ", " in cleaned and len(cleaned) > 20:
|
||||||
|
return cleaned.replace(", ", ",\n")
|
||||||
|
|
||||||
|
if "-" in cleaned:
|
||||||
|
return "-\n".join(part for part in cleaned.split("-") if part)
|
||||||
|
|
||||||
|
return cleaned
|
||||||
|
|
||||||
|
|
||||||
def build_week_pdf_rows(week_start: date, *, mode: str) -> tuple[list, list[list[str]]]:
|
def build_week_pdf_rows(week_start: date, *, mode: str) -> tuple[list, list[list[str]]]:
|
||||||
days = [week_start + timedelta(days=index) for index in range(7)]
|
days = [week_start + timedelta(days=index) for index in range(7)]
|
||||||
grouped_entries = fetch_plan_entries_for_range_export(week_start, week_start + timedelta(days=6), mode=mode)
|
grouped_entries = fetch_plan_entries_for_range_export(week_start, week_start + timedelta(days=6), mode=mode)
|
||||||
@@ -2098,6 +2115,7 @@ def build_week_plan_pdf(week_start: date, *, mode: str = "mine") -> bytes:
|
|||||||
pdf.cell(0, 6, f"KW {week_number:02d}", new_x="LMARGIN", new_y="NEXT")
|
pdf.cell(0, 6, f"KW {week_number:02d}", new_x="LMARGIN", new_y="NEXT")
|
||||||
pdf.ln(3)
|
pdf.ln(3)
|
||||||
pdf.set_text_color(20, 20, 20)
|
pdf.set_text_color(20, 20, 20)
|
||||||
|
pdf.set_font("Helvetica", "", 10)
|
||||||
|
|
||||||
headings = [" "] + [f"{format_weekday(day)}\n{day.strftime('%d.%m.%Y')}" for day in days]
|
headings = [" "] + [f"{format_weekday(day)}\n{day.strftime('%d.%m.%Y')}" for day in days]
|
||||||
first_column_width = 34
|
first_column_width = 34
|
||||||
|
|||||||
Reference in New Issue
Block a user