X-Git-Url: https://git.siccegge.de//index.cgi?p=teilnehmertool.git;a=blobdiff_plain;f=teilnehmertool.py;h=32967b7dcfed078e47ae3fea9026731e906d9b8c;hp=962ae77ee41d99520a1cbde87f70062b9c2f8295;hb=HEAD;hpb=6b1a08ffe4ea6d4770686fe06130b6fa4801c25a diff --git a/teilnehmertool.py b/teilnehmertool.py index 962ae77..32967b7 100755 --- a/teilnehmertool.py +++ b/teilnehmertool.py @@ -22,7 +22,7 @@ env = jinja2.Environment(loader=jinja2.FileSystemLoader('templates', encoding='u ## jinja2 TeX espaping from http://flask.pocoo.org/snippets/55/ LATEX_SUBS = [ - (re.compile(r'\\'), r'\\textbackslash'), + (re.compile(r'\\'), r'\\textbackslash{}'), (re.compile(r'([{}_#%&$])'), r'\\\1'), (re.compile(r'~'), r'\~{}'), (re.compile(r'\^'), r'\^{}'), @@ -54,17 +54,17 @@ def create_helfer_nametags(csvpath, outdir='helfer_nametags'): with open(csvpath, 'r') as csvfile: csvreader = csv.DictReader(csvfile, delimiter=',', quotechar='"') + uni = "FAU Erlangen" for row in csvreader: if is_veranstaltungsleiter(row): nick = "%s %s" % (VERANSTALTUNGSLEITER[row['username']][0], VERANSTALTUNGSLEITER[row['username']][1]) - uni = "Veranstaltungsleiter" - else: - nick = "%s" % (row['username']) - uni = "FAU Erlangen" + with open(os.path.join(outdir, "%s.svg" % nick), 'w') as f: + f.write(template.render(nick=nick.decode('utf-8'), uni1=uni.decode('utf-8')).encode('utf-8')) + nick = "%s" % (row['username']) with open(os.path.join(outdir, "%s.svg" % nick), 'w') as f: - f.write(template.render(nick=nick.decode('utf-8'), uni=uni.decode('utf-8')).encode('utf-8')) + f.write(template.render(nick=nick.decode('utf-8'), uni1=uni.decode('utf-8')).encode('utf-8')) def import_teilnehmer(input): @@ -199,12 +199,27 @@ def create_nametag(outdir='output'): uni1=hochschule.decode('utf-8')).encode('utf-8')) -def create_teilnehmer_list(outdir = 'output'): - template = env.get_template('teilnehmerliste.tex') +def create_teilnehmer_list(outdir = 'output', only_quittung=False): + template_full = env.get_template('teilnehmerliste.tex') + template_pack = env.get_template('packliste.tex') + template_quittung = env.get_template('quittung.tex') + template_strichliste = env.get_template('strichliste.tex') + if os.path.exists('helfer.csv'): + with open('helfer.csv', 'r') as csvfile: + csvreader = csv.DictReader(cvspath, delimiter=',', quotechar='"') + uni = "FAU Erlangen" + + helfer = [ row['username'] for row in cvsreader ] + else: + print "Kein helfer.csv gefunden" + helfer = [] + + + i = 0 teilnehmer = [] for vor, nach, nick, hochschule, betrag, bezahlt, shirtsize, zippersize, dochned, comment in \ - conn.execute("SELECT vorname, nachname, namensschild, hochschule, betrag, bezahlt, tshirt, zipper, dochned, orga_comment FROM teilnehmer ORDER BY UPPER(nachname) ASC"): + conn.execute("SELECT vorname, nachname, namensschild, hochschule, betrag, bezahlt, tshirt, zipper, dochned, orga_comment FROM teilnehmer ORDER BY UPPER(hochschule) ASC, UPPER(namensschild) ASC"): vor = vor.decode('utf8') nach = nach.decode('utf8') @@ -225,6 +240,7 @@ def create_teilnehmer_list(outdir = 'output'): will_attend = True else: will_attend = False + comment = comment.decode('utf8') teilnehmer.append({'vorname': vor, 'nachname': nach, @@ -232,11 +248,29 @@ def create_teilnehmer_list(outdir = 'output'): bezahlt, 'shirtsize': shirtsize, 'zippersize': zippersize, 'will_attend': will_attend, 'comment': comment}) + if will_attend: + with open(os.path.join(outdir, ("%03d_quittung_%s_%s.tex" % (i, vor.replace(" ", "_"), nach.replace(" ", "_")))), 'w') as out: + out.write(template_quittung.render(vorname=vor, nachname=nach, uni=hochschule).encode('utf-8')) + + i = i+1 + + ## gibt schlimmere hacks.. + if only_quittung: + return with open(os.path.join(outdir, "teilnehmerliste.tex"), 'w') as out: - out.write(template.render(teilnehmer=teilnehmer).encode('utf-8')) + out.write(template_full.render(teilnehmer=teilnehmer).encode('utf-8')) + + with open(os.path.join(outdir, "packliste.tex"), 'w') as out: + out.write(template_pack.render(teilnehmer=teilnehmer).encode('utf-8')) + + with open(os.path.join(outdir, "teilnehmer-strichliste.tex"), 'w') as out: + out.write(template_strichliste.render(teilnehmer=teilnehmer, helfer=helfer).encode('utf-8')) +def create_teilnehmer_quittungen(output='quittungen'): + create_teilnehmer_list(output, only_quittung=True) + def create_bmbf_list(outdir = 'output'): template = env.get_template('bmbf-unterschriftenliste.tex') @@ -244,13 +278,19 @@ def create_bmbf_list(outdir = 'output'): teilnehmer = [] i = 1 - for vor, nach, hochschule in \ - conn.execute("SELECT vorname, nachname, hochschule FROM teilnehmer ORDER BY UPPER(nachname) ASC"): + for vor, nach, hochschule, dochned in \ + conn.execute("SELECT vorname, nachname, hochschule, dochned FROM teilnehmer ORDER BY UPPER(nachname) ASC, UPPER (vorname) ASC"): vor = vor.decode('utf8') nach = nach.decode('utf8') hochschule = hochschule.decode('utf8') + if dochned != "false": + continue + + if hochschule == "Privat" : + continue + teilnehmer.append({'vorname': vor, 'nachname': nach, 'num': i, 'hochschule': hochschule}) i = i+1 @@ -259,6 +299,12 @@ def create_bmbf_list(outdir = 'output'): out.write(template.render(teilnehmer=teilnehmer).encode('utf-8')) +def list_teilnehmer_ids(): + for tid, dochned in conn.execute("SELECT id, dochned FROM teilnehmer ORDER BY id ASC"): + if dochned == "false": + print tid + + def main(): parser = argparse.ArgumentParser(description="Ultimate Teilnehmertool") @@ -280,6 +326,10 @@ def main(): help='Generiere Teilnehmerübersichtsliste') group.add_argument('--helfer', action='store_true', help='Generiere Helfer-Nametags aus helfer.csv') + group.add_argument('--quittungen', action='store_true', + help='Generiere Quittungen für Teilnehmer') + group.add_argument('--ids', action='store_true', + help='Liste alle Teilnehmerids auf, die sich nicht abgemeldet haben') # Argumente parser.add_argument('--db', default='teilnehmer.sqlite', @@ -298,7 +348,7 @@ def main(): conn.execute('pragma encoding = "UTF-8";') if args.nametag or args.email or args.pay or args.remind or args.bmbf or \ - args.liste or args.helfer: + args.liste or args.helfer or args.quittungen or args.ids: assert(args.output) if not os.path.exists(args.output): os.mkdir(args.output) @@ -318,6 +368,10 @@ def main(): elif args.helfer: assert(args.input) create_helfer_nametags(args.input, args.output) + elif args.quittungen: + create_teilnehmer_quittungen(args.output) + elif args.ids: + list_teilnehmer_ids() elif args.importcsv: assert(args.input)