import jinja2
import os
import os.path
+import re
conn = None
env = jinja2.Environment(loader=jinja2.FileSystemLoader('templates', encoding='utf-8'))
+
+## jinja2 TeX espaping from http://flask.pocoo.org/snippets/55/
+LATEX_SUBS = [
+ (re.compile(r'\\'), r'\\textbackslash'),
+ (re.compile(r'([{}_#%&$])'), r'\\\1'),
+ (re.compile(r'~'), r'\~{}'),
+ (re.compile(r'\^'), r'\^{}'),
+ (re.compile(r'"'), r"''"),
+ (re.compile(r'\.\.\.+'), r'\\ldots'),
+]
+
+def escape_tex(value):
+ newval = value
+ for pattern, replacement in LATEX_SUBS:
+ newval = pattern.sub(replacement, newval)
+ return newval
+
+env.filters['escape_tex'] = escape_tex
+
+
def import_teilnehmer(input):
ids = set([ i[0] for i in conn.execute('SELECT id FROM teilnehmer').fetchall() ])
nick=namensschild.decode('utf-8'),
uni1=hochschule.decode('utf-8')).encode('utf-8'))
+
+
+def create_teilnehmer_list(outdir = 'output'):
+ template = env.get_template('teilnehmerliste.tex')
+
+ teilnehmer = []
+ i = 1
+ for vor, nach, nick, hochschule, betrag, bezahlt, shirtsize, zippersize in \
+ conn.execute("SELECT vorname, nachname, namensschild, hochschule, betrag, bezahlt, tshirt, zipper FROM teilnehmer ORDER BY UPPER(nachname) ASC"):
+
+ vor = vor.decode('utf8')
+ nach = nach.decode('utf8')
+ nick = nick.decode('utf8')
+ hochschule = hochschule.decode('utf8')
+ ## betrag ist schon int
+ ## bezahlt ist schon int
+ shirtsize = shirtsize.decode('utf8')
+ if re.match("kein", shirtsize, flags=re.IGNORECASE):
+ shirtsize = ""
+
+ zippersize = zippersize.decode('utf8')
+ if re.match("kein", zippersize, flags=re.IGNORECASE):
+ zippersize = ""
+
+ teilnehmer.append({'vorname': vor, 'nachname': nach, 'num': i,
+ 'hochschule': hochschule, 'nick': nick, 'betrag': betrag, 'bezahlt':
+ bezahlt, 'shirtsize': shirtsize, 'zippersize': zippersize})
+ i = i+1
+
+
+ with open(os.path.join(outdir, "teilnehmerliste.tex"), 'w') as out:
+ out.write(template.render(teilnehmer=teilnehmer).encode('utf-8'))
+
+
+
def create_bmbf_list(outdir = 'output'):
template = env.get_template('bmbf-unterschriftenliste.tex')
help='Generiere Zahlungsaufforderungserinnerung')
group.add_argument('--bmbf', action='store_true',
help='Generiere BMBF-Unterschriftenliste')
+ group.add_argument('--liste', action='store_true',
+ help='Generiere Teilnehmerübersichtsliste')
# Argumente
parser.add_argument('--db', default='teilnehmer.sqlite',
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:
+ if args.nametag or args.email or args.pay or args.remind or args.bmbf or args.liste:
assert(args.output)
if not os.path.exists(args.output):
os.mkdir(args.output)
create_remind(args.output)
elif args.bmbf:
create_bmbf_list(args.output)
+ elif args.liste:
+ create_teilnehmer_list(args.output)
elif args.importcsv:
assert(args.input)