def food(fid): """ Palauttaa yksittäisen elintarvikkeen tiedot. """ food = scraper.get_food(fid) if not food: return json("fail", {"fid": "food not found"}) return json(data=food)
def add_or_delete_fav(fid): """ POST lisää kirjautuneelle käyttäjälle uuden suosikkielintarvikkeen. DELETE poistaa suosikkielintarvikkeen. """ if request.method == DELETE: db.delete_fav_from_user(g.user["_id"], fid) return json() food = scraper.get_food(fid) if not food: return json("fail", {"fid": "food not found"}) fav = {"fid": food["_id"], "name": food["name"]} db.add_fav_to_user(g.user["_id"], fav) return json()
def bites(): """ GET palauttaa kirjautuneen käyttäjän annokset annetulta aikaväliltä. URL-parametrit: - start: inklusiivinen alkupäivämäärä (YYYYmmdd) - end: inklusiivinen loppupäivämäärä (YYYYmmdd) POST lisää uuden annoksen. POST-parametrit: - fid: elintarvikkeen id (ei pakollinen, jos rid on määritelty) - rid: reseptin nimi (ei pakollinen, jos fid on määritelty) - amount: määrä grammoissa - date: päivämäärä (YYYYmmdd) Huom! Jos sekä fid että rid ovat määritelty, käytetään fid:tä. """ if request.method == GET: try: start = datetime.strptime(request.args.get("start"), DATEFORMAT) end = datetime.strptime(request.args.get("end"), DATEFORMAT) except TypeError: return json("fail", {"parameters": "missing date parameters"}) except ValueError: return json("fail", {"parameters": "invalid date parameters"}) return json(data=db.get_bites_by_user(g.user["_id"], start, end)) # POST - lisätään annos: try: amount = int(request.form["amount"]) bite = { "uid": g.user["_id"], "fid": request.form["fid"], "amount": amount, "date": datetime.strptime(request.form["date"], DATEFORMAT) } if "fid" in request.form: bite["fid"] = request.form["fid"] else: bite["rid"] = request.form["rid"] except KeyError: return json("fail", {"parameters": "missing parameters"}) except ValueError: return json("fail", {"parameters": "invalid parameters"}) if "fid" in bite: food = scraper.get_food(bite["fid"]) if not food: return json("fail", {"fid": "food not found"}) bite["name"] = food["name"] for p1, p2 in BASIC_STATS: bite[p1] = round(food["data"][p2][0] / 100.0 * amount) else: recipe = db.get_recipe(bite["rid"]) if not recipe: return json("fail", {"rid": "recipe not found"}) bite["name"] = recipe["name"] for p1, p2 in BASIC_STATS: bite[p1] = round(recipe[p1] / 100.0 * amount) db.add_bite(bite) return json()