예제 #1
0
def bites_by_date(date):
    """
    Palauttaa kirjautuneen käyttäjän annokset valitulta päivältä.

    Parametrit:
    - date: päivämäärä muodossa YYYYmmdd
    """
    try:
        date = datetime.strptime(date, DATEFORMAT)
    except ValueError:
        return json("fail", {"parameters": "invalid date parameter"})

    return json(data=db.get_bites_by_user(g.user["_id"], date=date))
예제 #2
0
def bites_by_date(date):
    """
    Palauttaa kirjautuneen käyttäjän annokset valitulta päivältä.

    Parametrit:
    - date: päivämäärä muodossa YYYYmmdd
    """
    try:
        date = datetime.strptime(date, DATEFORMAT)
    except ValueError:
        return json("fail", {"parameters": "invalid date parameter"})

    return json(data=db.get_bites_by_user(g.user["_id"], date=date))
예제 #3
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()
예제 #4
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()