Beispiel #1
0
def rezeptliste(beginn, dauer):
    tage = models.Menue.all()
    tage.filter('datum >=', beginn).filter('datum <', beginn + timedelta(dauer))
    rezepte = [] # Für "Folgende Rezepte wurden geplant"
    messbar = {} # Die Zutaten mit quantitativer Mengenangabe
    einheiten = {}
    qualitativ = {} # Die Zutaten mit qualitativer Mengenangabe
    rezeptzutaten = {}
    for t in tage:
        for r in (t.vorspeise, t.hauptgang, t.nachtisch):
            if r:
                rezepte.append(r)
                for rz in r.zutaten:
                    rzzutat = rz.zutat
                    zutatkey = str(rzzutat.key())
                    rezeptzutaten[zutatkey] = rzzutat
                    zt = rzzutat.name
                    if rz.menge:
                        if zutatkey in messbar.keys():
                            messbar[zutatkey] += rz.menge
                        else:
                            messbar[zutatkey] = rz.menge
                    elif rz.menge_qualitativ:
                        if not zutatkey in qualitativ.keys():
                            qualitativ[zutatkey] = []
                        qualitativ[zutatkey].append(rz.menge_qualitativ)
    messbarkat = dict([(kat, []) for kat in models.ZUTATENKATEGORIEN])
    for zk, menge in messbar.items():
        zutat = rezeptzutaten[zk]
        messbarkat[zutat.kategorie].append({'name': zutat.name,
                     'menge': tools.prettyFloat(menge),
                     'einheit': zutat.masseinheit,
                     'key': str(zk)})
    for z in messbarkat.values():
        z.sort(lambda x,y: cmp(x["name"].lower(), y["name"].lower()))
    qualitativkat = dict([(kat, []) for kat in models.ZUTATENKATEGORIEN])
    for zk, menge in qualitativ.items():
        zutat = rezeptzutaten[zk]
        qualitativkat[zutat.kategorie].append({'name': zutat.name,
                     'menge': ', '.join(menge),
                     'key': str(zk)})
    for z in qualitativkat.values():
        z.sort(lambda x,y: cmp(x["name"].lower(), y["name"].lower()))
    rezepte.sort(lambda x,y: cmp(x.titel.lower(), y.titel.lower()))

    res = standard_template_values()
    res.update({'dauer': dauer,
        'beginn': beginn.strftime('%d. %m. %Y'),
        'rezepte': rezepte,
        'messbar': messbarkat,
        'qualitativ': qualitativkat,
    })
    return res
Beispiel #2
0
 def toStr(self):
     liste = (self.menge_qualitativ and [self.menge_qualitativ] or
              [tools.prettyFloat(self.menge), self.einheit or ''])
     liste.append(self.name)
     return ' '.join(liste)