def add_recipe(recipe): """ Lisää reseptin. """ for food in recipe["foods"]: food["fid"] = objectify(food["fid"]) recipe["user"]["uid"] = objectify(recipe["user"]["uid"]) return db.recipes.insert(recipe)
def get_recipes_by_user(uid): """ Palauttaa käyttäjän reseptit. """ uid = objectify(uid) user = db.users.find_one(uid, ["recipes"]) return user["recipes"] if user else None
def get_favs_by_user(uid): """ Palauttaa listan käyttäjän suosikkielintarvikkeista, tai None, jos käyttäjää ei löydy tai käyttäjällä ei ole suosikkeja. """ uid = objectify(uid) user = db.users.find_one(uid, ["favs"]) return None if not user else user["favs"]
def set_user_goals(uid, goals): """ Asettaa id:tä vastaavan käyttäjän päivittäiset ravintoainetavoitteet. Palauttaa päivityksen onnistumista vastaavan totuusarvon. """ return db.users.update({"_id": objectify(uid)}, {"$set": { "goals": goals }})["err"] is None
def get_bites_by_user(uid, start_date=None, end_date=None, date=None): """ Palauttaa käyttäjän annokset joko tietyltä päivältä tai aikaväliltä, järjestettynä päivämäärän (kasvava) mukaan. Päivämääräparametrit ovat inklusiivisia. """ if date: bites = db.bites.find({ "uid": objectify(uid), "date": date }) else: bites = db.bites.find({ "uid": objectify(uid), "date": {"$gte": start_date, "$lte": end_date} }) return list(bites.sort("date")) if bites else bites
def get_bites_by_user(uid, start_date=None, end_date=None, date=None): """ Palauttaa käyttäjän annokset joko tietyltä päivältä tai aikaväliltä, järjestettynä päivämäärän (kasvava) mukaan. Päivämääräparametrit ovat inklusiivisia. """ if date: bites = db.bites.find({"uid": objectify(uid), "date": date}) else: bites = db.bites.find({ "uid": objectify(uid), "date": { "$gte": start_date, "$lte": end_date } }) return list(bites.sort("date")) if bites else bites
def set_user_goals(uid, goals): """ Asettaa id:tä vastaavan käyttäjän päivittäiset ravintoainetavoitteet. Palauttaa päivityksen onnistumista vastaavan totuusarvon. """ return db.users.update( {"_id": objectify(uid)}, {"$set": {"goals": goals}} )["err"] is None
def _simpleTestHarness(no_wrap): import utils def testFormatter(event): return "*{}".format(event["state"]) def buildFormatter(field, width): def f(dict): if field == 'number': return dict[field] return "{}".format(dict[field]).replace("_", " ") return {"formatter": f, "wrapperFormatter": width} set_no_wrap(no_wrap) field_labels = ['Time Stamp', 'State', 'Event Log ID', 'Reason Text', 'Entity Instance ID', 'Severity', 'Number'] fields = ['timestamp', 'state', 'event_log_id', 'reason_text', 'entity_instance_id', 'severity', 'number'] formatterSpecX = {"timestamp": 10, "state": 8, "event_log_id": 70, "reason_text": 30, "entity_instance_id": 30, "severity": 12, "number": 4} formatterSpec = {} for f in fields: formatterSpec[f] = buildFormatter(f, formatterSpecX[f]) logs = [] for i in range(0, 30): log = {} for f in fields: if f == 'number': log[f] = i else: log[f] = "{}{}".format(f, i) logs.append(utils.objectify(log)) formatterSpec = formatterSpecX formatters = build_wrapping_formatters(logs, fields, field_labels, formatterSpec) utils.print_list(logs, fields, field_labels, formatters=formatters, sortby=6, reversesort=True, no_wrap_fields=['entity_instance_id']) print("nowrap = {}".format(is_nowrap_set()))
def get_days_by_user(uid, start_date=None, end_date=None): """ Palauttaa listan päivistä, joina käyttäjä on lisännyt annoksia. Päivällä on seuraavat avaimet: count, carbs, fat, protein, kcal, date Päiväparametrit ovat inklusiivisia. """ key = ["date"] condition = {"uid": objectify(uid)} date_condition = {} if start_date: date_condition["$gte"] = start_date if end_date: date_condition["$lte"] = end_date if date_condition: condition["date"] = date_condition initial = {key: 0 for key in ["count", "carbs", "fat", "protein", "kcal"]} reducer = "function(c,r){r.count++;r.carbs+=c.carbs;r.fat+=c.fat;r.kcal+=c.kcal;r.protein+=c.protein;}" return db.bites.group(key, condition, initial, reducer)
def get_recipe(rid): """ Palauttaa id:tä vastaavan reseptin. """ rid = objectify(rid) return db.recipes.find_one(rid)
def delete_recipe(rid): """ Poistaa reseptin, palauttaa poistojen lukumäärän. """ rid = objectify(rid) return db.recipes.remove({"_id": rid})["n"]
def delete_recipe_from_user(uid, rid): """ Poistaa käyttäjältä reseptin. """ uid, rid = objectify(uid), objectify(rid) return db.users.update({"_id": uid}, {"$pull": {"recipes": {"rid": rid}}})
def add_recipe_to_user(uid, recipe): """ Lisää käyttäjälle reseptin. """ uid = objectify(uid) return db.users.update({"_id": uid}, {"$addToSet": {"recipes": recipe}})
def delete_bite(bid): """ Poistaa annoksen, palauttaa poistojen lukumäärän. """ bid = objectify(bid) return db.bites.remove({"_id": bid})["n"]
def delete_fav_from_user(uid, fid): """ Poistaa käyttäjältä suosikkielintarvikkeen. """ uid = objectify(uid) return db.users.update({"_id": uid}, {"$pull": {"favs": {"fid": fid}}})
def add_fav_to_user(uid, fav): """ Lisää käyttäjälle suosikkielintarvikkeen. """ uid = objectify(uid) return db.users.update({"_id": uid}, {"$addToSet": {"favs": fav}})