]> git.siccegge.de Git - teilnehmertool.git/blobdiff - teilnehmertool.py
extra packliste := verkleinerte teilnehmerliste
[teilnehmertool.git] / teilnehmertool.py
index bda2774fca2b67cbb68fb005d20a52dccc73e286..74f0161d1d50feeac1fa80ae4d0f481897db8ebe 100755 (executable)
@@ -12,6 +12,8 @@ import os.path
 import re
 import sys
 
+import csv
+
 conn = None
 
 
@@ -20,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'\^{}'),
@@ -37,6 +39,34 @@ def escape_tex(value):
 env.filters['escape_tex'] = escape_tex
 
 
+## dont judge me. i don't see any good way sadly
+VERANSTALTUNGSLEITER = {
+    }
+
+def is_veranstaltungsleiter(row):
+    if VERANSTALTUNGSLEITER.has_key(row['username']):
+        return True
+    return False
+
+
+def create_helfer_nametags(csvpath, outdir='helfer_nametags'):
+    template = env.get_template('nametag.svg')
+
+    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])
+                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'), uni1=uni.decode('utf-8')).encode('utf-8'))
+
+
 def import_teilnehmer(input):
     ids = set([ i[0] for i in conn.execute('SELECT id FROM teilnehmer').fetchall() ])
 
@@ -170,11 +200,12 @@ def create_nametag(outdir='output'):
 
 
 def create_teilnehmer_list(outdir = 'output'):
-    template = env.get_template('teilnehmerliste.tex')
+    template_full = env.get_template('teilnehmerliste.tex')
+    template_pack = env.get_template('packliste.tex')
 
     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(nachname) ASC"):
 
         vor = vor.decode('utf8')
         nach = nach.decode('utf8')
@@ -195,6 +226,7 @@ def create_teilnehmer_list(outdir = 'output'):
             will_attend = True
         else:
             will_attend = False
+
         comment = comment.decode('utf8')
 
         teilnehmer.append({'vorname': vor, 'nachname': nach,
@@ -204,7 +236,10 @@ def create_teilnehmer_list(outdir = 'output'):
 
 
     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'))
 
 
 
@@ -248,6 +283,8 @@ def main():
                        help='Generiere BMBF-Unterschriftenliste')
     group.add_argument('--liste', action='store_true',
                        help='Generiere Teilnehmerübersichtsliste')
+    group.add_argument('--helfer', action='store_true',
+                       help='Generiere Helfer-Nametags aus helfer.csv')
 
     # Argumente
     parser.add_argument('--db', default='teilnehmer.sqlite',
@@ -265,7 +302,8 @@ def main():
     conn.row_factory = sqlite3.Row
     conn.execute('pragma encoding = "UTF-8";')
 
-    if args.nametag or args.email or args.pay or args.remind or args.bmbf or args.liste:
+    if args.nametag or args.email or args.pay or args.remind or args.bmbf or \
+        args.liste or args.helfer:
         assert(args.output)
         if not os.path.exists(args.output):
             os.mkdir(args.output)
@@ -282,6 +320,9 @@ def main():
             create_bmbf_list(args.output)
         elif args.liste:
             create_teilnehmer_list(args.output)
+        elif args.helfer:
+            assert(args.input)
+            create_helfer_nametags(args.input, args.output)
 
     elif args.importcsv:
         assert(args.input)