From cf3c08ec207422fdd3f6198f68f2013a5e65c76f Mon Sep 17 00:00:00 2001 From: Christoph Egger Date: Wed, 4 Sep 2013 15:10:36 +0200 Subject: [PATCH] Add teilnehmertool --- LICENSE | 18 ++++++++++++ db.schema | 21 ++++++++++++++ teilnehmertool.py | 50 +++++++++++++++++++++++++++++++++ templates/teilnehmerbeitrag.eml | 31 ++++++++++++++++++++ 4 files changed, 120 insertions(+) create mode 100644 LICENSE create mode 100644 db.schema create mode 100644 teilnehmertool.py create mode 100644 templates/teilnehmerbeitrag.eml diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..e9335a5 --- /dev/null +++ b/LICENSE @@ -0,0 +1,18 @@ +Copyright (c) 2013 Christoph Egger +Copyright (c) 2013 Johannes Schilling +Copyright (c) 2013 Sebastian Ehrenfels +Copyright (c) 2013 Matthias Wirth + +Permission to use, copy, modify, and/or distribute this software for +any purpose with or without fee is hereby granted, provided that the +above copyright notice and this permission notice appear in all +copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL +WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE +AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL +DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR +PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. diff --git a/db.schema b/db.schema new file mode 100644 index 0000000..ba03c40 --- /dev/null +++ b/db.schema @@ -0,0 +1,21 @@ +CREATE TABLE 'teilnehmer' ( + id INTEGER, + vorname TEXT, + nachname TEXT, + email TEXT, + namensschild TEXT, + hochschule TEXT, + public_comment TEXT, + private_comment TEXT, + essen TEXT, + alergien TEXT, + zug BOOLEAN, + tshirt TEXT, + zipper TEXT, + angelegt DATETIME, + aktualisiert DATETIME +); + +ALTER TABLE teilnehmer ADD COLUMN emailsent BOOLEAN default 0; +ALTER TABLE teilnehmer ADD COLUMN bezahlt INTEGER default 0; +ALTER TABLE teilnehmer ADD COLUMN betrag INTEGER default NULL; \ No newline at end of file diff --git a/teilnehmertool.py b/teilnehmertool.py new file mode 100644 index 0000000..1547678 --- /dev/null +++ b/teilnehmertool.py @@ -0,0 +1,50 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- + +import sqlite3 +import string +import jinja2 +import os +import os.path + +conn = sqlite3.connect('teilnehmer.sqlite') +conn.text_factory = str + +env = jinja2.Environment(loader=jinja2.FileSystemLoader('templates')) + +def create_mail(): + def gen_rechnung(tshirt, zipper): + preis = 25 + kosten = u"" + kosten += u"%s | %s\n" % (u" Konferenzbeitrag".ljust(30), "25.00") + kosten += u"%s | %s\n" % ((u" T-Shirt (Größe %s)" % tshirt).ljust(30), " 0.00") + if zipper != 'Kein Pulli': + kosten += u"%s | %s\n" % ((u" Kapuzenzipper (Größe %s)" % zipper).ljust(30), "25.00") + preis += 25 + kosten += ' '*2 + 29*'-' + '+' + 6*'-' + '\n' + kosten += u"%s | %s\n" % (u" Summe".ljust(30), "%2d.00" % preis) + + return kosten + + def gen_token(id, vorname, nachname): + return u"%s-%s-%s" % (id, nachname.decode('utf-8').upper(), vorname.decode('utf-8').upper()) + + if not os.path.exists('output'): + os.mkdir('output') + + template = env.get_template('teilnehmerbeitrag.eml') + + for id, vorname, nachname, email, tshirt, zipper in \ + conn.execute("SELECT id, vorname, nachname, email, tshirt, zipper FROM teilnehmer WHERE emailsent = 0"): + + with open(os.path.join('output', email), 'w') as f: + f.write(template.render(vorname=vorname.decode('utf-8'), + nachname=nachname.decode('utf-8'), + email=email.decode('utf-8'), + token=gen_token(id, vorname, nachname), + rechnung=gen_rechnung(tshirt, zipper)).encode('utf-8')) + + +if __name__ == '__main__': + create_mail() + diff --git a/templates/teilnehmerbeitrag.eml b/templates/teilnehmerbeitrag.eml new file mode 100644 index 0000000..7ac113b --- /dev/null +++ b/templates/teilnehmerbeitrag.eml @@ -0,0 +1,31 @@ +From: kif415-orga@fsi.cs.fau.de +To: {{vorname}} {{nachname}} <{{email}}> +Reply-To: kif415-orga@fsi.cs.fau.de +Subject: Teilnehmerbeitrag KIF 41.5 +Date: Wed, 04 Sep 2013 12:12:27 +0200 +Content-Type: text/plain; charset=utf-8 +Content-Disposition: inline +Content-Transfer-Encoding: 8bit + +Moin! + +Du hast dich zur 41.5 KIF in Erlangen angemeldet. Dabei haben wir für +dich Folgende Kosten notiert: + +{{rechnung}} + +Überweise bitten diesen Betrag bis Freitag, 13. September auf +folgendes Konto: + + Inhaber: XXXX + Kontonr: XXXX + BLZ: XXXX + IBAN: XXXX + Bank: XXXX + BIC: XXXX + Verwendungszweck: KIF-415 Konferenzbeitrag + {{token}} + +Wir freuen uns auf dein Kommen! + + Die KIF 41.5 Orga -- 2.39.2