Esempio n. 1
0
 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)
Esempio n. 2
0
 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)
Esempio n. 3
0
 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 
Esempio n. 4
0
 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 
Esempio n. 5
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"
Esempio n. 6
0
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')
Esempio n. 7
0
 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)
Esempio n. 8
0
    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'])
Esempio n. 9
0
# -*- 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)
Esempio n. 10
0
    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'])
Esempio n. 11
0
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):
Esempio n. 12
0
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')