From ef74aeefe0c5fb1366d1fab28a53c8a453b29639 Mon Sep 17 00:00:00 2001 From: Floke Date: Wed, 18 Mar 2026 20:12:18 +0000 Subject: [PATCH] [32788f42] fix(list-generator): normalize CSV column names to support legacy headers like 'Vorname Kind' and 'Gruppe' --- .../backend/app/services/pdf_generator.py | 22 ++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/list-generator/backend/app/services/pdf_generator.py b/list-generator/backend/app/services/pdf_generator.py index 44263367..7f7864cd 100644 --- a/list-generator/backend/app/services/pdf_generator.py +++ b/list-generator/backend/app/services/pdf_generator.py @@ -5,10 +5,26 @@ from weasyprint import HTML import datetime def generate_school_pdf(institution: str, date_info: str, list_type: str, students_csv_path: str, families_csv_path: str = None, output_dir: str = "/tmp") -> str: - df = pd.read_csv(students_csv_path, sep=";") + try: + df = pd.read_csv(students_csv_path, sep=";", encoding="utf-8-sig") + except Exception: + df = pd.read_csv(students_csv_path, sep=";", encoding="latin1") df.columns = df.columns.str.strip() - if "Klasse" not in df.columns: - df["Klasse"] = "Alle" + col_mapping = {} + for col in df.columns: + lower_col = col.lower() + if lower_col in ["vorname kind", "vorname"]: + col_mapping[col] = "Vorname" + elif lower_col in ["nachname kind", "nachname"]: + col_mapping[col] = "Nachname" + elif lower_col in ["gruppe", "klasse"]: + col_mapping[col] = "Klasse" + df = df.rename(columns=col_mapping) + df = df.fillna("") + if "Vorname" not in df.columns: df["Vorname"] = "" + if "Nachname" not in df.columns: df["Nachname"] = "" + if "Klasse" not in df.columns: df["Klasse"] = "Alle" + df = df.sort_values(by=["Klasse", "Nachname", "Vorname"]) grouped = df.groupby("Klasse") class_data = [] for class_name, group in grouped: