From e1a8002f273fc17083d5f3fe5d1bce59c90180a0 Mon Sep 17 00:00:00 2001 From: matedealer Date: Wed, 1 May 2019 10:48:57 +0200 Subject: [PATCH] Adjust to 2019 template, add error handling, fix some naming --- generate_bmbf_list.py | 35 +++++++++++++++++++++++------------ requirements.txt | 2 ++ teilnehmer_innen.csv | 2 ++ 3 files changed, 27 insertions(+), 12 deletions(-) create mode 100644 requirements.txt create mode 100644 teilnehmer_innen.csv diff --git a/generate_bmbf_list.py b/generate_bmbf_list.py index 48174f3..e46fcd1 100644 --- a/generate_bmbf_list.py +++ b/generate_bmbf_list.py @@ -1,11 +1,10 @@ - +#!/usr/bin/env python3 from fdfgen import forge_fdf import sh from math import ceil import csv from operator import itemgetter -import click - +from pathlib import Path @@ -14,9 +13,9 @@ maßnahmenzeitraum = "09. - 13.05.18" datum="09.05.18" kif_ev= "Verein zur Förderung d. Konferenz d. deutschspr. Informatikfachschaften e.V." maßname="46.0 Konferenz der deutschsprachtigen Informatikfachschaften" -csv_file_name="kif_460.csv" +csv_file_name="teilnehmer_innen.csv" leer_blaetter=2 - +vorlage = "Vorlage_BMBF_Listen_2019.pdf" datum_list = ["09.05.18","10.05.18","11.05.18","12.05.18","13.05.18",] @@ -30,10 +29,16 @@ form_mapping = [("6","20","21"),("19","40","41"),("18","39","22"), def readcsv(csv_file_name): persons = [] - with open(csv_file_name, newline='') as csvfile: - reader = csv.reader(csvfile, delimiter=",") - persons = [{"Name":t[0],"Uni":t[1]} for t in reader if t[0] != "Name"] - persons.sort(key=itemgetter("Uni","Name")) + try: + csvfile = open(csv_file_name,newline='') + except FileNotFoundError: + print("[X] File {} not found!".format(csv_file_name)) + exit(-1) + else: + with csvfile: + reader = csv.reader(csvfile, delimiter=",") + persons = [{"Name":t[0],"Hochschule":t[1]} for t in reader if t[0] != "Name"] + persons.sort(key=itemgetter("Hochschule","Name")) return persons @@ -44,6 +49,12 @@ def generate_pdfs(persons, maßnahmenzeitraum, datum, kif_ev, maßname, leer_bla output_file_name="output" personen_pro_seite = 14 + #check if vorlage exits + test_file = Path(vorlage) + if not test_file.is_file(): + print("[X] File {} not found!".format(vorlage)) + exit(-1) + anzahl_seiten = ceil(len(persons)/personen_pro_seite) pdfs = [] @@ -54,7 +65,7 @@ def generate_pdfs(persons, maßnahmenzeitraum, datum, kif_ev, maßname, leer_bla if personen_pro_seite*j+i < len(persons): felder.append((item[0],str(j*personen_pro_seite+i+1))) felder.append((item[1], persons[j*personen_pro_seite+i]["Name"])) - felder.append((item[2], persons[j*personen_pro_seite+i]["Uni"])) + felder.append((item[2], persons[j*personen_pro_seite+i]["Hochschule"])) i+=1 if i == personen_pro_seite: @@ -70,7 +81,7 @@ def generate_pdfs(persons, maßnahmenzeitraum, datum, kif_ev, maßname, leer_bla fdf_file.write(fdf) fdf_file.close() - sh.pdftk("Vorlage_BMBF_Listen.pdf","fill_form", data_file,"output",output_file,"flatten") + sh.pdftk(vorlage,"fill_form", data_file,"output",output_file,"flatten") pdfs.append(output_file) @@ -84,7 +95,7 @@ def generate_pdfs(persons, maßnahmenzeitraum, datum, kif_ev, maßname, leer_bla if __name__ == "__main__": person_list = readcsv(csv_file_name) for datum in datum_list: - final_pdf_name = "teilnehmerliste_{}.pdf".format(datum.replace(". ", "_")) + final_pdf_name = "teilnehmendenliste_{}.pdf".format(datum.replace(". ", "_")) output_files = generate_pdfs(person_list, maßnahmenzeitraum, datum, kif_ev, maßname, leer_blaetter) sh.pdftk(output_files, "cat","output",final_pdf_name ) diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..75c6fd5 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,2 @@ +fdfgen +sh diff --git a/teilnehmer_innen.csv b/teilnehmer_innen.csv new file mode 100644 index 0000000..f850c99 --- /dev/null +++ b/teilnehmer_innen.csv @@ -0,0 +1,2 @@ +Kia Killing, Frei Universität Mordor +Lio Lampe, Sonnige Hochschule des Auenlandes