Beispiel #1
0
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)
Beispiel #2
0
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)
Beispiel #3
0
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()
Beispiel #4
0
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()
Beispiel #5
0
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()
Beispiel #6
0
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()