]> git.siccegge.de Git - teilnehmertool.git/blobdiff - teilnehmertool.py
Add helfercsv to strichliste
[teilnehmertool.git] / teilnehmertool.py
index 962ae77ee41d99520a1cbde87f70062b9c2f8295..32967b7dcfed078e47ae3fea9026731e906d9b8c 100755 (executable)
@@ -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)