From a9d44fd1d7c82636e73f88cab976e8adcac4db90 Mon Sep 17 00:00:00 2001 From: Christoph Egger Date: Mon, 30 Sep 2013 23:41:59 +0200 Subject: [PATCH] Add reminder function Also create new payment confirmation if amount of money received changed since what is recorded in the database Includes updated teilnehmer.sqlite --- teilnehmertool.py | 45 ++++++++++++++++++++++++++++++++++++++-- templates/erinnerung.eml | 31 +++++++++++++++++++++++++++ 2 files changed, 74 insertions(+), 2 deletions(-) create mode 100644 templates/erinnerung.eml diff --git a/teilnehmertool.py b/teilnehmertool.py index 9ff5ca7..35a47dc 100755 --- a/teilnehmertool.py +++ b/teilnehmertool.py @@ -43,7 +43,7 @@ def mark_pay(outdir): vorname, nachname, email, bezahlt = \ conn.execute("SELECT vorname, nachname, email, bezahlt FROM teilnehmer WHERE id = ?", [uid]).fetchone() - if bezahlt > 20: + if bezahlt == betrag: continue conn.execute("UPDATE teilnehmer SET bezahlt = ? WHERE id = ?", [betrag, uid]) @@ -92,6 +92,43 @@ def create_mail(outdir='output'): preis, id]) conn.commit() +def create_remind(outdir='output'): + 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, preis + + def gen_token(id, vorname, nachname): + return u"%s-%s-%s" % (id, nachname.decode('utf-8').upper(), vorname.decode('utf-8').upper()) + + template = env.get_template('erinnerung.eml') + + for id, vorname, nachname, email, tshirt, zipper in \ + conn.execute("SELECT id, vorname, nachname, email, tshirt, zipper FROM teilnehmer " + + "WHERE bezahlt < 25 AND datetime(emailsent) < datetime(?)", + [(datetime.datetime.now() - datetime.timedelta(14)).isoformat()]): + + rechnung, preis = gen_rechnung(tshirt, zipper) + + with open(os.path.join(outdir, 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=rechnung).encode('utf-8')) + + conn.execute("UPDATE teilnehmer set emailsent = ?, betrag = ? WHERE id = ?", [datetime.datetime.now().isoformat(), + preis, id]) + conn.commit() + def create_nametag(outdir='output'): template = env.get_template('nametag.svg') @@ -117,6 +154,8 @@ def main(): help='Generiere E-Mails mit Überweisungsinformationen') group.add_argument('--pay', action='store_true', help='Speichere Zahlungseingang') + group.add_argument('--remind', action='store_true', + help='Generiere Zahlungsaufforderungserinnerung') # Argumente parser.add_argument('--db', default='teilnehmer.sqlite', @@ -132,7 +171,7 @@ def main(): conn = sqlite3.connect(args.db) conn.text_factory = str - if args.nametag or args.email or args.pay: + if args.nametag or args.email or args.pay or args.remind: assert(args.output) if not os.path.exists(args.output): os.mkdir(args.output) @@ -143,6 +182,8 @@ def main(): create_mail(args.output) elif args.pay: mark_pay(args.output) + elif args.remind: + create_remind(args.output) elif args.importcsv: assert(args.input) diff --git a/templates/erinnerung.eml b/templates/erinnerung.eml new file mode 100644 index 0000000..22ece17 --- /dev/null +++ b/templates/erinnerung.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 +Content-Type: text/plain; charset=utf-8 +Content-Disposition: inline +Content-Transfer-Encoding: 8bit + +Moin! + +Wir haben von dir bisher keine Überweisung erhalten. Solltest du +bereits bezahlt haben, dann melde dich bitte umgehend bei uns, sodass +wir überprüfen können, wo das Geld geblieben ist. + +Falls do noch nicht überwiesen hast, würden wir uns freuen, wenn du +das noch nachholen könntest. Zur Erinnerung: + +{{rechnung}} + + 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.5