コード例 #1
0
ファイル: api.py プロジェクト: novareto/fernlehrgang
 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)
コード例 #2
0
ファイル: api.py プロジェクト: novareto/fernlehrgang
 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)
コード例 #3
0
ファイル: api.py プロジェクト: novareto/fernlehrgang
 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 
コード例 #4
0
ファイル: api.py プロジェクト: novareto/fernlehrgang
 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 
コード例 #5
0
ファイル: api.py プロジェクト: novareto/fernlehrgang
    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"
コード例 #6
0
ファイル: search.py プロジェクト: novareto/fernlehrgang
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')
コード例 #7
0
ファイル: api.py プロジェクト: novareto/fernlehrgang
 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)
コード例 #8
0
ファイル: bn1.py プロジェクト: novareto/fernlehrgang
    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'])
コード例 #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)
コード例 #10
0
ファイル: bn.py プロジェクト: novareto/fernlehrgang
    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'])
コード例 #11
0
ファイル: models.py プロジェクト: novareto/fernlehrgang
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):
コード例 #12
0
ファイル: search.py プロジェクト: novareto/fernlehrgang
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')