def GET(self): log('TEILNEHMER_GET %s ' %(self.context.id), 'performance_analyse') context = self.context kt_id = self.request.get('kt', None) branche = "" un_klasse = "" if kt_id: for ktn in context.kursteilnehmer: if ktn.id == int(kt_id): branche = ktn.branche un_klasse = ktn.un_klasse geburtsdatum = "" if context.geburtsdatum: geburtsdatum = context.geburtsdatum.strftime('%d.%m.%Y') teilnehmer = dict( anrede = context.anrede, titel = context.titel, vorname = context.vorname, name = context.name, geburtsdatum = geburtsdatum, strasse = context.strasse, nr = context.nr, plz = context.plz, ort = context.ort, email = context.email, un_klasse = un_klasse, branche = branche, kompetenzzentrum = context.kompetenzzentrum, ) return json.dumps(teilnehmer)
def getKursteilnehmerID(self, teilnehmer_id, lehrgang_id): log('getKursteilnehmerTeilnehmerID %s %s' %(teilnehmer_id, lehrgang_id), 'performance_analyse') session = Session() ret = session.query(Kursteilnehmer).filter( and_(Kursteilnehmer.teilnehmer_id == teilnehmer_id, Kursteilnehmer.fernlehrgang_id == lehrgang_id)) if ret.count() != 1: return False return str(ret.one().id)
def PUT(self): log('KursteilTEILNEHMER_PUT %s ' %(self.context.id), 'performance_analyse') kursteilnehmer = self.context data = json.loads(self.body) data['datum'] = datetime.datetime.strptime(data['datum'], "%d.%m.%Y").date() data['lehrheft_id'] = int(data['lehrheft_id']) data['frage_id'] = int(data['frage_id']) antwort = Antwort(**data) kursteilnehmer.antworten.append(antwort) return antwort.id
def canLogin(self, teilnehmer_id, passwort): log('canLogin %s' %(teilnehmer_id), 'performance_analyse') session = Session() if teilnehmer_id == "admin": return 0 ret = session.query(Teilnehmer).filter(Teilnehmer.id==teilnehmer_id) if ret.count() != 1: return 0 ret = ret.one() if ret and ret.passwort == passwort: return 1 return 0
def PUT(self): log('TEILNEHMER_PUT %s ' %(self.context.id), 'performance_analyse') teilnehmer = self.context data = json.loads(self.body) un_klasse = data.pop('un_klasse') branche = data.pop('branche') flg_id = data.pop('flg_id') data['geburtsdatum'] = datetime.datetime.strptime(data['geburtsdatum'], "%d.%m.%Y") for key, value in data.items(): if value: setattr(teilnehmer, key, value) for ktm in teilnehmer.kursteilnehmer: if ktm.fernlehrgang_id == int(flg_id): ktm.un_klasse = un_klasse ktm.branche = branche ktm.status = "A1" return "1"
def fill_cache_teilnehmer(*args): #import pdb; pdb.set_trace() session = Session() results = session.query( models.Teilnehmer.id, models.Teilnehmer.name, models.Teilnehmer.vorname, models.Teilnehmer.unternehmen_mnr).order_by(models.Teilnehmer.name, models.Teilnehmer.vorname) if os.environ.get('DEBUG'): print "I FILTER IT NOW" results = results.filter(models.Teilnehmer.unternehmen_mnr == 995000221) terms = [SimpleTerm( title=u'%s - %s %s - %s' % (tid, name, vname, mnr), token=tid, value=tid) for tid, name, vname, mnr in results.all()] terms = [SimpleTerm(None, None, u'Bitte Auswahl treffen.')] + terms global VOCABULARY VOCABULARY = Vocabulary(terms) log(u'Der Cache für die Teilnehmer ist gefüllt')
def GET(self): log('KursteilTEILNEHMER_GET %s ' %(self.context.id), 'performance_analyse') adapter = ICalculateResults(self.context) li = [adapter.summary(), adapter.lehrhefte()] return json.dumps(li)
def update(self): MAILS = [] JETZT, T30, T180, T300, T365 = time_ranges() log("%s, %s, %s, %s, %s" % (JETZT.date(), T30.date(), T180.date(), T300.date(), T365.date())) session = Session() alle_ktns = session.query(models.Kursteilnehmer).filter( models.Kursteilnehmer.fernlehrgang_id == models.Fernlehrgang.id, models.Kursteilnehmer.status != 'Z1', models.Fernlehrgang.typ == '2') print alle_ktns.count() for ktn in alle_ktns.all(): erstell_datum = ktn.erstell_datum.date() try: titel = ITeilnehmer['titel'].vocabulary.getTerm(ktn.teilnehmer.titel).title if titel == "kein Titel": titel = "" except: titel = "" print "KTN %s - %s" %(ktn.id, erstell_datum) BETREFF = 'Online-Fernlehrgang der BGHW Benutzername: %s' % ktn.teilnehmer.id if erstell_datum == T30.date() and len(ktn.antworten) == 0: MAILS.append(dict( _from='fernlehrgang.bghw.de', _to=ktn.teilnehmer.email or '*****@*****.**', tid=ktn.teilnehmer.id, subject=BETREFF, text=mt.TEXT0 % ( titel, ITeilnehmer['anrede'].vocabulary.getTerm(ktn.teilnehmer.anrede).title, ktn.teilnehmer.name ) )) ktn.teilnehmer.journal_entries.append( models.JournalEntry( status="info", type="EMAIL-Report 30 Tage", kursteilnehmer_id=ktn.id, teilnehmer_id=ktn.teilnehmer.id) ) print "30 TAGE" elif erstell_datum == T180.date() and len(ktn.antworten) == 0: MAILS.append(dict( _from='fernlehrgang.bghw.de', _to=ktn.teilnehmer.email or '*****@*****.**', subject=BETREFF, tid=ktn.teilnehmer.id, text=mt.TEXT1 % ( titel, ITeilnehmer['anrede'].vocabulary.getTerm(ktn.teilnehmer.anrede).title, ktn.teilnehmer.name ) )) ktn.teilnehmer.journal_entries.append( models.JournalEntry( status="info", type="EMAIL-Report 180 Tage, keine Antworten", kursteilnehmer_id=ktn.id, teilnehmer_id=ktn.teilnehmer.id) ) elif erstell_datum == T180.date() and len(ktn.antworten) <= 40: MAILS.append(dict( _from='fernlehrgang.bghw.de', _to=ktn.teilnehmer.email or '*****@*****.**', subject=BETREFF, tid=ktn.teilnehmer.id, text=mt.TEXT2 % ( titel, ITeilnehmer['anrede'].vocabulary.getTerm(ktn.teilnehmer.anrede).title, ktn.teilnehmer.name ) )) ktn.teilnehmer.journal_entries.append( models.JournalEntry( status="info", type="EMAIL-Report 180 Tage, kleiner 4. Lehrheft", kursteilnehmer_id=ktn.id, teilnehmer_id=ktn.teilnehmer.id) ) print "180 TAGE" elif erstell_datum == T300.date() and len(ktn.antworten) < 80: MAILS.append(dict( _from='fernlehrgang.bghw.de', _to=ktn.teilnehmer.email or '*****@*****.**', subject=BETREFF, tid=ktn.teilnehmer.id, text=mt.TEXT3 % ( titel, ITeilnehmer['anrede'].vocabulary.getTerm(ktn.teilnehmer.anrede).title, ktn.teilnehmer.name ) )) ktn.teilnehmer.journal_entries.append( models.JournalEntry( status="info", type="EMAIL-Report 300 Tage und noch nicht fertig", kursteilnehmer_id=ktn.id, teilnehmer_id=ktn.teilnehmer.id) ) print "300 TAGE" elif erstell_datum == T365.date() and len(ktn.antworten) < 80: MAILS.append(dict( _from='fernlehrgang.bghw.de', _to=ktn.teilnehmer.email or '*****@*****.**', subject=BETREFF, tid=ktn.teilnehmer.id, text=mt.TEXT4 % ( titel, ITeilnehmer['anrede'].vocabulary.getTerm(ktn.teilnehmer.anrede).title, ktn.teilnehmer.name ) )) ktn.teilnehmer.journal_entries.append( models.JournalEntry( status="info", type="EMAIL-Report 365 Tage", kursteilnehmer_id=ktn.id, teilnehmer_id=ktn.teilnehmer.id) ) ktn.status = "Z1" print "356 TAGE" for mail in MAILS: print mail['tid'], mail['_to'], mail['subject'] send_mail('*****@*****.**', (mail['_to'], '*****@*****.**'), mail['subject'], mail['text'])
# -*- coding: utf-8 -*- # Copyright (c) 2007-2013 NovaReto GmbH # [email protected] import grok from fernlehrgang import log from z3c.saconfig import EngineFactory, GloballyScopedSession from zope.app.appsetup.product import getProductConfiguration config = getProductConfiguration('database') try: DSN = config['dsn'] except: DSN = "postgresql+psycopg2://flg:flg@localhost/flg" log(DSN) print DSN # FIX: engine_factory = EngineFactory(DSN, convert_unicode=True, encoding='utf-8', optimize_limits=True, echo=False) engine_factory = EngineFactory( DSN, convert_unicode=True, encoding='iso-8859-15', echo=False) scoped_session = GloballyScopedSession() grok.global_utility(engine_factory, direct=True) grok.global_utility(scoped_session, direct=True)
def update(self): MAILS = [] JETZT, T30, T180, T300, T365 = time_ranges() log("%s, %s, %s, %s, %s" % (JETZT.date(), T30.date(), T180.date(), T300.date(), T365.date())) session = Session() alle_ktns = session.query(models.Kursteilnehmer).filter( models.Kursteilnehmer.fernlehrgang_id == models.Fernlehrgang.id, models.Fernlehrgang.typ == '5') for ktn in alle_ktns.all(): erstell_datum = ktn.erstell_datum.date() titel = ITeilnehmer['titel'].vocabulary.getTerm(ktn.teilnehmer.titel).title if titel == "kein Titel": titel = "" print "KTN %s - %s" %(ktn.id, erstell_datum) if erstell_datum == T30.date(): MAILS.append(dict( _from='fernlehrgang.bghw.de', _to=ktn.teilnehmer.email or '*****@*****.**', subject="Online-Fernlehrgang-Fortbildung der BGHW Benutzername %s" % ktn.teilnehmer.id, text = mt.TEXTFB1 % ( titel, ITeilnehmer['anrede'].vocabulary.getTerm(ktn.teilnehmer.anrede).title, ktn.teilnehmer.name ) )) ktn.teilnehmer.journal_entries.append( models.JournalEntry( status="info", type="MAIL 30T", kursteilnehmer_id=ktn.id, teilnehmer_id=ktn.teilnehmer.id) ) print "30 TAGE" elif erstell_datum == T180.date(): MAILS.append(dict( _from='fernlehrgang.bghw.de', _to=ktn.teilnehmer.email or '*****@*****.**', subject="Online-Fernlehrgang-Fortbildung der BGHW Benutzername %s" % ktn.teilnehmer.id, text = mt.TEXTFB2 % ( titel, ITeilnehmer['anrede'].vocabulary.getTerm(ktn.teilnehmer.anrede).title, ktn.teilnehmer.name ) )) ktn.teilnehmer.journal_entries.append( models.JournalEntry( status="info", type="MAIL 180T", kursteilnehmer_id=ktn.id, teilnehmer_id=ktn.teilnehmer.id) ) print "180 TAGE" elif erstell_datum == T300.date(): MAILS.append(dict( _from='fernlehrgang.bghw.de', _to=ktn.teilnehmer.email or '*****@*****.**', subject="Online-Fernlehrgang-Fortbildung der BGHW Benutzername %s" % ktn.teilnehmer.id, text = mt.TEXTFB3 % ( titel, ITeilnehmer['anrede'].vocabulary.getTerm(ktn.teilnehmer.anrede).title, ktn.teilnehmer.name ) )) ktn.teilnehmer.journal_entries.append( models.JournalEntry( status="info", type="MAIL 300T", kursteilnehmer_id=ktn.id, teilnehmer_id=ktn.teilnehmer.id) ) print "300 TAGE" elif erstell_datum == T365.date(): MAILS.append(dict( _from='fernlehrgang.bghw.de', _to=ktn.teilnehmer.email or '*****@*****.**', subject="Online-Fernlehrgang-Fortbildung der BGHW Benutzername %s" % ktn.teilnehmer.id, text = mt.TEXTFB4 % ( titel, ITeilnehmer['anrede'].vocabulary.getTerm(ktn.teilnehmer.anrede).title, ktn.teilnehmer.name ) )) ktn.teilnehmer.journal_entries.append( models.JournalEntry( status="info", type="MAIL 365T", kursteilnehmer_id=ktn.id, teilnehmer_id=ktn.teilnehmer.id) ) print "356 TAGE" for mail in MAILS: print mail send_mail('flg_app', (mail['_to'],), mail['subject'], mail['text'])
from sqlalchemy import * from sqlalchemy import TypeDecorator from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import relationship, relation, backref from z3c.saconfig import Session from z3c.saconfig.interfaces import IEngineCreatedEvent from zope.container.contained import Contained from zope.dublincore.interfaces import IDCDescriptiveProperties from sqlalchemy import event from zope.interface import alsoProvides from z3c.saconfig import EngineFactory, GloballyScopedSession from zope.app.appsetup.product import getProductConfiguration config = getProductConfiguration('database') SCHEMA = config['schema'] or None log('USING THE FOLLOWING SCHEMA --> %s' % SCHEMA) Base = declarative_base() Base.metadata.schema = SCHEMA class MyStringType(TypeDecorator): impl = String def process_bind_param(self, value, dialect): if value is not None and dialect.name == "oracle": value = value.encode('utf-8') return value @grok.subscribe(IEngineCreatedEvent) def setUpDatabase(event):
def fill_cache_unternehmen(*args): from fernlehrgang.browser.teilnehmer import voc_unternehmen voc_unternehmen(None) log(u'Der Cache für Unternehmen ist gefüllt')