Esempio n. 1
0
def createRows(rc, session, flg_id):
    FERNLEHRGANG_ID = flg_id
    lehrhefte = session.query(models.Lehrheft).options(joinedload(models.Lehrheft.fragen)).filter(models.Lehrheft.fernlehrgang_id == FERNLEHRGANG_ID).all()
    result = session.query(models.Teilnehmer, models.Unternehmen, models.Kursteilnehmer).options(joinedload(models.Kursteilnehmer.antworten))
    result = result.filter(
        and_(
            models.Kursteilnehmer.fernlehrgang_id == FERNLEHRGANG_ID,
            models.Kursteilnehmer.teilnehmer_id == models.Teilnehmer.id,
            models.Teilnehmer.unternehmen_mnr == models.Unternehmen.mnr)).order_by(models.Teilnehmer.id)
    i=1
    for teilnehmer, unternehmen, ktn in page_query(result):
        cal_res = CalculateResults(ktn)
        summary = cal_res.summary(lehrhefte)
        liste = []
        teilnehmer = ktn.teilnehmer
        ss = set([x.rlhid for x in ktn.antworten])
        antworten = len(ss)
        if teilnehmer:
            gebdat = ""
            if teilnehmer.geburtsdatum:
                try:
                    gebdat = teilnehmer.geburtsdatum.strftime('%d.%m.%Y')
                except:
                    gebdat = ""
            #unternehmen = teilnehmer.unternehmen
            liste.append(nN(teilnehmer.id))
            liste.append(nN(teilnehmer.titel))
            liste.append(nN(teilnehmer.anrede))
            liste.append(nN(teilnehmer.name))
            liste.append(nN(teilnehmer.vorname))
            liste.append(gebdat)
            liste.append(nN(teilnehmer.strasse))
            liste.append(nN(teilnehmer.nr))
            liste.append(nN(teilnehmer.plz))
            liste.append(nN(teilnehmer.ort))
            liste.append(nN(unternehmen.mnr))
            liste.append(nN(unternehmen.name))
            liste.append(nN(unternehmen.name2))
            liste.append(nN(unternehmen.name3))
            liste.append(nN(unternehmen.str))
            liste.append(nN(unternehmen.plz))
            liste.append(nN(unternehmen.ort))
            if teilnehmer.name:
                liste.append('ja')
            else:
                liste.append('nein')
            liste.append(nN(teilnehmer.kategorie))
            liste.append(nN(ktn.status))
            liste.append(un_helper(ktn.un_klasse))
            liste.append(nN(ktn.branche))
            liste.append(ges_helper(ktn.gespraech))
            liste.append(nN(summary['comment']))
            liste.append(nN(summary['resultpoints']))
            liste.append(nN(antworten))
        rc.append(liste)
        i+=1
def createRows(book, adressen, session, flg_id):
    ii = 0 
    FERNLEHRGANG_ID = flg_id
    lehrhefte = session.query(models.Lehrheft).options(joinedload(models.Lehrheft.fragen)).filter(models.Lehrheft.fernlehrgang_id == FERNLEHRGANG_ID).order_by(models.Lehrheft.nummer).all()
    result = session.query(models.Teilnehmer, models.Unternehmen, models.Kursteilnehmer).options(joinedload(models.Kursteilnehmer.antworten))
    result = result.filter(
        and_(
            models.Kursteilnehmer.fernlehrgang_id == FERNLEHRGANG_ID,
            models.Kursteilnehmer.teilnehmer_id == models.Teilnehmer.id,
            models.Teilnehmer.unternehmen_mnr == models.Unternehmen.mnr)).order_by(models.Teilnehmer.id)
    i=1
    for teilnehmer, unternehmen, ktn in page_query(result):
        if ktn.status in ('A1', 'A2'):
            cal_res = CalculateResults(ktn)
            summary = cal_res.summary(lehrhefte)
            row = adressen.row(ii+1)
            row.write(0, nN(flg_id))
            row.write(1, nN(ktn.fernlehrgang.titel))
            row.write(2, nN(teilnehmer.id))
            row.write(3, versandanschrift(teilnehmer))
            row.write(4, nN(teilnehmer.plz or unternehmen.plz))
            row.write(5, nN(unternehmen.mnr))
            row.write(6, nN(unternehmen.name))
            row.write(7, nN(unternehmen.name2))
            row.write(8, nN(teilnehmer.anrede))
            row.write(9, nN(teilnehmer.titel))
            row.write(10, nN(teilnehmer.vorname))
            row.write(11, nN(teilnehmer.name))
            row.write(12, fd(teilnehmer.geburtsdatum))
            strasse = nN(teilnehmer.strasse) + ' ' + nN(teilnehmer.nr)
            if strasse == " ":
                strasse = nN(unternehmen.str)
            else:
                if teilnehmer.adresszusatz:
                    strasse = strasse + ' // ' + teilnehmer.adresszusatz
            row.write(13, strasse)
            row.write(14, nN(teilnehmer.ort or unternehmen.ort))
            row.write(15, nN(teilnehmer.passwort))
            row.write(16, nN(teilnehmer.vorname))
            row.write(17, nN(teilnehmer.name))
            ii += 1
def createRows(session, rc, flg_ids, stichtag):
    lhs = {}
    ids = [x for x in flg_ids]
    result = session.query(models.Teilnehmer, models.Unternehmen, models.Kursteilnehmer).options(joinedload(models.Kursteilnehmer.antworten))
    from datetime import datetime
    stichtag = datetime.combine(stichtag, datetime.min.time())
    result = result.filter(
        and_(
            models.Kursteilnehmer.fernlehrgang_id.in_(ids),
            models.Antwort.datum > stichtag,
            models.Antwort.kursteilnehmer_id == models.Kursteilnehmer.id,
            models.Kursteilnehmer.teilnehmer_id == models.Teilnehmer.id,
            models.Teilnehmer.unternehmen_mnr == models.Unternehmen.mnr)).order_by(models.Teilnehmer.id)
    for x in ids:
        lehrhefte_sql = session.query(models.Lehrheft).options(joinedload(models.Lehrheft.fragen))
        lhs[x] = lehrhefte_sql.filter(models.Lehrheft.fernlehrgang_id == x).all()
    i=1
    for teilnehmer, unternehmen, ktn in result.all():
        if ktn.status in ('A1', 'A2'):
            cal_res = CalculateResults(ktn)
            summary = cal_res.summary(lhs[ktn.fernlehrgang_id])
            liste = []
            ss = set([x.lehrheft_id for x in ktn.antworten])
            antworten = len(ss)
            if teilnehmer and summary.get('resultpoints') >= 1:
                gebdat = ""
                if teilnehmer.geburtsdatum:
                    try:
                        gebdat = teilnehmer.geburtsdatum.strftime('%d.%m.%Y')
                    except:
                        gebdat = ""
                #unternehmen = teilnehmer.unternehmen
                liste.append(nN(ktn.fernlehrgang_id))
                liste.append(nN(ktn.fernlehrgang.titel))
                liste.append(nN(teilnehmer.id))
                liste.append(nN(ktn.fernlehrgang.lehrhefte[0].id)) # IST IMMER NUR EINS DA--Fortbilding
                liste.append(nN(versandanschrift(teilnehmer)))
                liste.append(nN(teilnehmer.plz or unternehmen.plz))
                liste.append(nN(unternehmen.mnr))
                liste.append(nN(unternehmen.name))
                liste.append(nN(unternehmen.name2))
                liste.append(nN(teilnehmer.anrede))
                liste.append(nN(teilnehmer.titel))
                liste.append(nN(teilnehmer.vorname))
                liste.append(nN(teilnehmer.name))
                liste.append(nN(gebdat))
                strasse = nN(teilnehmer.strasse) + ' ' + nN(teilnehmer.nr)
                if strasse == " ":
                    strasse = nN(unternehmen.str)
                else:
                    if teilnehmer.adresszusatz:
                        strasse = nN(strasse) + ' // ' + nN(teilnehmer.adresszusatz)
                liste.append(nN(strasse))
                liste.append(nN(teilnehmer.ort or unternehmen.ort))
                liste.append(nN(teilnehmer.passwort))
                liste.append(' ')
                liste.append(' ') # RDATUM
                liste.append(' ') # ANZAHL 
                liste.append(nN(summary.get('resultpoints')))
                liste.append(nN(' ')) # STICHTAG
                liste.append(nN(ktn.fernlehrgang.lehrhefte[0].id))
                liste.append(nN(teilnehmer.titel))
                liste.append(nN(teilnehmer.vorname))
                liste.append(nN(teilnehmer.name))
                for lehrheft in ktn.fernlehrgang.lehrhefte:
                    for frage in sorted(lehrheft.fragen, key=lambda frage: int(frage.frage)):
                        r=""
                        for antwort in ktn.antworten:
                            if frage.id == antwort.frage_id:
                                r = "%s %s %s" %(
                                        frage.antwortschema.upper(),
                                        nN(antwort.antwortschema),
                                        cal_res.calculateResult(
                                            frage.antwortschema,
                                            antwort.antwortschema,
                                            frage.gewichtung))
                        liste.append(r)
                rc.append(liste)
            i+=1
            print i