From e2855e91619004d64cf87b3e8d269c465a96aecb Mon Sep 17 00:00:00 2001 From: "maximilian.moebius" Date: Wed, 29 Oct 2025 18:15:35 +0100 Subject: [PATCH 1/2] windows fix --- generate_bmbf_list.py | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/generate_bmbf_list.py b/generate_bmbf_list.py index ccc476b..6486311 100644 --- a/generate_bmbf_list.py +++ b/generate_bmbf_list.py @@ -10,11 +10,11 @@ from fillpdf import fillpdfs from pdfrw import PdfReader, PdfWriter # Change to your needs -start_date = "2024-10-30" -end_date = "2024-11-03" +start_date = "2025-10-29" +end_date = "2025-11-02" event_org = "Verein der Freunde und Förderer der Bundesfachschaftentagung Elektrotechnik e.V." -event_name = "95. Bundesfachschaftentagung Elektrotechnik" -attendees_csv = "95_teilnehmer.csv" +event_name = "97. Bundesfachschaftentagung Elektrotechnik" +attendees_csv = "97_teilnehmer.csv" empty_sheets = 1 template_form = "Teilnehmendenliste_FR_22_23_final.pdf" @@ -22,7 +22,7 @@ template_form = "Teilnehmendenliste_FR_22_23_final.pdf" start = datetime.date.fromisoformat(start_date) end = datetime.date.fromisoformat(end_date) -event_period = f'{start.strftime("%d.%m")} - {end.strftime("%d.%m.%y")}' +event_period = f'{start.strftime("%d.%m.%y")} - {end.strftime("%d.%m.%y")}' days = int((end - start).days) date_list = [(start + datetime.timedelta(days=i)).strftime('%d.%m.%y') for i in range(days + 1)] @@ -34,7 +34,7 @@ form_mapping = [("6", "20", "21"), ("19", "40", "41"), ("18", "39", "22"), def read_csv(csv_path): try: - csvfile = open(csv_path, newline='') + csvfile = open(csv_path, newline='', encoding='utf-8') except FileNotFoundError: print("[X] File {} not found!".format(csv_path)) sys.exit(1) @@ -44,24 +44,23 @@ def read_csv(csv_path): persons = [{"Name": f"{t['Amtlicher Vorname'] if t['Amtlicher Vorname'] else t['Vorname']} {t['Nachname']}", "Hochschule": f"{t['Standort']}"} for t in reader if t['Status'] == "Immatrikuliert"] persons.sort(key=itemgetter("Hochschule", "Name")) - for idx, p in enumerate(persons): - p["Position"] = str(idx + 1) return persons -def fill_template(template_path, persons_list, headers, output_path): +def fill_template(template_path, persons_list, headers, output_path, start_index=1): fields = {} - for person, mapping in zip(persons_list, form_mapping): - fields[mapping[0]] = person["Position"] + for idx, (person, mapping) in enumerate(zip(persons_list, form_mapping), start=start_index): + fields[mapping[0]] = str(idx) fields[mapping[1]] = person["Name"] fields[mapping[2]] = person["Hochschule"] fields = {**headers, **fields} fillpdfs.write_fillable_pdf(input_pdf_path=template_path, output_pdf_path=output_path, data_dict=fields, - flatten=True) + flatten=False) + def create_pdf(output_pdf, form, persons_chunks, zeitraum, form_date, org_name, name, add_sheets): @@ -72,11 +71,13 @@ def create_pdf(output_pdf, form, persons_chunks, zeitraum, form_date, org_name, form_reader = PdfReader(template_form) writer.trailer.Info = form_reader.Info + person_index = 1 # Fortlaufende Nummerierung über alle Seiten with tempfile.TemporaryDirectory() as workdir: for persons_list in persons_chunks + [[] for i in range(add_sheets)]: output_file_path = os.path.join(workdir, f'{output_file_name}{page}.pdf') headers = {"1": page, "2": zeitraum, "3": form_date, "4": org_name, "5": name} - fill_template(template_path=form, persons_list=persons_list, headers=headers, output_path=output_file_path) + fill_template(template_path=form, persons_list=persons_list, headers=headers, output_path=output_file_path, start_index=person_index) + person_index += len(persons_list) # Erhöhe den Index für die nächste Seite reader = PdfReader(output_file_path) writer.addpages(reader.pages) page += 1 From e30c36cb6aa7cd73eda91e9d98ec429d63354873 Mon Sep 17 00:00:00 2001 From: Dominik Rimpf Date: Wed, 29 Oct 2025 20:49:37 +0100 Subject: [PATCH 2/2] fix date --- generate_bmbf_list.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/generate_bmbf_list.py b/generate_bmbf_list.py index 6486311..79202f0 100644 --- a/generate_bmbf_list.py +++ b/generate_bmbf_list.py @@ -14,7 +14,7 @@ start_date = "2025-10-29" end_date = "2025-11-02" event_org = "Verein der Freunde und Förderer der Bundesfachschaftentagung Elektrotechnik e.V." event_name = "97. Bundesfachschaftentagung Elektrotechnik" -attendees_csv = "97_teilnehmer.csv" +attendees_csv = "teilnehmer.csv" empty_sheets = 1 template_form = "Teilnehmendenliste_FR_22_23_final.pdf" @@ -22,7 +22,7 @@ template_form = "Teilnehmendenliste_FR_22_23_final.pdf" start = datetime.date.fromisoformat(start_date) end = datetime.date.fromisoformat(end_date) -event_period = f'{start.strftime("%d.%m.%y")} - {end.strftime("%d.%m.%y")}' +event_period = f'{start.strftime("%d.%m")} - {end.strftime("%d.%m.%y")}' days = int((end - start).days) date_list = [(start + datetime.timedelta(days=i)).strftime('%d.%m.%y') for i in range(days + 1)]