From 78a8734336496b30de1476bb13a05905e8f337a2 Mon Sep 17 00:00:00 2001 From: Johannes Schilling Date: Thu, 3 Oct 2013 02:20:13 +0200 Subject: [PATCH] bmbf-listen jetzt auch aus teilnehmertool --- teilnehmertool.py | 44 +++++++++++++++---- templates/bmbf-unterschriftenliste.tex | 59 ++++++++++++++++++++++++++ 2 files changed, 95 insertions(+), 8 deletions(-) create mode 100644 templates/bmbf-unterschriftenliste.tex diff --git a/teilnehmertool.py b/teilnehmertool.py index 35a47dc..a1530c6 100755 --- a/teilnehmertool.py +++ b/teilnehmertool.py @@ -13,7 +13,7 @@ import os.path conn = None -env = jinja2.Environment(loader=jinja2.FileSystemLoader('templates')) +env = jinja2.Environment(loader=jinja2.FileSystemLoader('templates', encoding='utf-8')) def import_teilnehmer(input): ids = set([ i[0] for i in conn.execute('SELECT id FROM teilnehmer').fetchall() ]) @@ -29,7 +29,7 @@ def import_teilnehmer(input): row + [0, 0, 0]) conn.commit() - + def mark_pay(outdir): betrag = int(raw_input("Betrag: ")) @@ -131,7 +131,7 @@ def create_remind(outdir='output'): def create_nametag(outdir='output'): template = env.get_template('nametag.svg') - + for vorname, nachname, namensschild, hochschule in \ conn.execute("SELECT vorname, nachname, namensschild, hochschule FROM teilnehmer"): @@ -141,6 +141,27 @@ def create_nametag(outdir='output'): nick=namensschild.decode('utf-8'), uni1=hochschule.decode('utf-8')).encode('utf-8')) +def create_bmbf_list(outdir = 'output'): + template = env.get_template('bmbf-unterschriftenliste.tex') + + + teilnehmer = [] + i = 1 + for vor, nach, hochschule in \ + conn.execute("SELECT vorname, nachname, hochschule FROM teilnehmer ORDER BY nachname DESC"): + + vor = vor.decode('utf8') + nach = nach.decode('utf8') + hochschule = hochschule.decode('utf8') + + teilnehmer.append({'vorname': vor, 'nachname': nach, 'num': i, 'hochschule': hochschule}) + i = i+1 + + + with open(os.path.join(outdir, "bmbf-unterschriftenliste.tex"), 'w') as out: + out.write(template.render(teilnehmer=teilnehmer).encode('utf-8')) + + def main(): parser = argparse.ArgumentParser(description="Ultimate Teilnehmertool") @@ -156,7 +177,9 @@ def main(): help='Speichere Zahlungseingang') group.add_argument('--remind', action='store_true', help='Generiere Zahlungsaufforderungserinnerung') - + group.add_argument('--bmbf', action='store_true', + help='Generiere BMBF-Unterschriftenliste') + # Argumente parser.add_argument('--db', default='teilnehmer.sqlite', help='Teilnehmerdatenbank') @@ -164,18 +187,20 @@ def main(): help='Eingabedatei') parser.add_argument('-o', '--output', default='output', help='Ausgabeverzeichnis') - + args = parser.parse_args() global conn conn = sqlite3.connect(args.db) conn.text_factory = str + conn.row_factory = sqlite3.Row + conn.execute('pragma encoding = "UTF-8";') - if args.nametag or args.email or args.pay or args.remind: + if args.nametag or args.email or args.pay or args.remind or args.bmbf: assert(args.output) if not os.path.exists(args.output): os.mkdir(args.output) - + if args.nametag: create_nametag(args.output) elif args.email: @@ -184,6 +209,8 @@ def main(): mark_pay(args.output) elif args.remind: create_remind(args.output) + elif args.bmbf: + create_bmbf_list(args.output) elif args.importcsv: assert(args.input) @@ -191,4 +218,5 @@ def main(): if __name__ == '__main__': main() - + +# vim: set expandtab : diff --git a/templates/bmbf-unterschriftenliste.tex b/templates/bmbf-unterschriftenliste.tex new file mode 100644 index 0000000..efa97b1 --- /dev/null +++ b/templates/bmbf-unterschriftenliste.tex @@ -0,0 +1,59 @@ +\documentclass[a4paper,landscape]{scrartcl} + +\usepackage[margin=2cm]{geometry} + +\usepackage[utf8]{inputenc} +\usepackage[T1]{fontenc} +\usepackage[ngerman]{babel} + +\usepackage{color} + +\usepackage{amsmath,amsthm,amssymb} +\usepackage{mathtools} + +\usepackage{array} + +\usepackage{ytableau} + +\usepackage{enumerate} + +\usepackage{fancyhdr} +\pagestyle{fancy} + +\usepackage{booktabs} +\usepackage{multirow} + +\fancyhf{} +\chead{Unterschriftenliste BMBF} +\cfoot{} + +\usepackage{longtable} + +\setlength{\headheight}{28pt} +\addtolength{\textheight}{-28pt} + +\setlength{\parskip}{7pt} +\setlength{\parindent}{0pt} + +%% this took me an hour or so. hope it's worth it +\DeclareUnicodeCharacter{1ED1}{\resizebox{.80em}{!}{\resizebox{.4em}{!}{\^{o}}\hspace{-1mm}\'{}}\hspace{-1mm}{}} + +\begin{document} + +\begin{center} + \begin{longtable}{|m{.02\textwidth}|m{.15\textwidth}|m{.11\textwidth}|m{.13\textwidth}|m{.03\textwidth}|m{.03\textwidth}|m{.35\textwidth}|} + \textbf{Nr.} & \textbf{Name} & \textbf{Vorname} & \textbf{Name der Hochschule} & \multicolumn{2}{|c|}{\textbf{Student}} & \textbf{Unterschrift} \\ + \hline + & & & & ja & nein & \\ + \hline + \hline + \endhead +{% for t in teilnehmer %} + \Large {{ t['num'] }} & \Large {{ t['nachname'] }} & \Large {{ t['vorname'] + }} & \large {{ t['hochschule'] }} & \vspace{2em} & \\ + \hline +{% endfor %} + \end{longtable} +\end{center} + +\end{document} -- 2.39.2