def add_recipe(): data = request.data recipe_data = json.loads(data.decode("utf-8")) recipe = Recipe(title=recipe_data['title'], instructions=recipe_data['instructions'], img=recipe_data['img'], type=recipe_data['type'], time=recipe_data['time'], people=recipe_data['people'], owner=recipe_data['owner']) db_session.add(recipe) for ingredient in recipe_data['ingredients']: ingredient = Ingredient(item=ingredient['item'], quantity=ingredient['quantity']) db_session.add(ingredient) recipe.ingredients.append(ingredient) try: db_session.commit() except Exception: db_session.rollback() clear_sessions() return return_result(data=recipe_data)
def get_recipe_for_id(id): try: recipe = Recipe.query.filter(Recipe.id == id)[0] data = { "id": recipe.id, "title": recipe.title, "instructions": recipe.instructions, "img": recipe.img, "type": recipe.type, "time": recipe.time, "people": recipe.people, "owner": recipe.owner, "ingredients": [ dict([("id", ingredient.id), ("item", ingredient.item), ("quantity", ingredient.quantity)]) for ingredient in recipe.ingredients ] } clear_sessions() return return_result(data=data) except IndexError: return return_result(message="This recipe index does not exist", code=400, status="failure")
def get_all_recipes(limit): recipes = Recipe.query \ .limit(limit) data = [{ "id": recipe.id, "title": recipe.title, "instructions": recipe.instructions, "img": recipe.img, "type": recipe.type, "time": recipe.time, "people": recipe.people, "owner": recipe.owner, "ingredients": [ dict([("id", ingredient.id), ("item", ingredient.item), ("quantity", ingredient.quantity)]) for ingredient in recipe.ingredients ] } for recipe in recipes] clear_sessions() return return_result(data=data)
def add_like_for_recipe_id(id): try: for recipe in Recipe.query.filter(Recipe.id == id): recipe.likes = recipe.likes + 1 db_session.commit() clear_sessions() return return_result(data="incremented like for recipe with id: " + id) except IndexError: clear_sessions() return return_result(message="This recipe index does not exist", code=400, status="failure")
def get_all_recipe_reviews(): reviews = Review.query data = [{ "id": review.id, "recipe_id": review.recipe_id, "credit": review.credit, "text": review.text, "approved": review.approved } for review in reviews] clear_sessions() return return_result(data=data)
def get_all_recipes_approved_with_search_and_type(search, type): if search == '*' and type == "Alle": recipes = Recipe.query.filter(Recipe.approved) elif type == "Alle": recipes = Recipe.query\ .filter(Recipe.approved)\ .filter(or_(Recipe.title.like("%" + search + "%"), Recipe.instructions.like("%" + search + "%"))) elif search == '*': recipes = Recipe.query\ .filter(Recipe.approved)\ .filter(Recipe.type == type) else: recipes = Recipe.query \ .filter(Recipe.approved) \ .filter(or_(Recipe.title.like("%" + search + "%"), Recipe.instructions.like("%" + search + "%"))) \ .filter(Recipe.type == type) data = [{ "id": recipe.id, "title": recipe.title, "instructions": recipe.instructions, "img": recipe.img, "type": recipe.type, "time": recipe.time, "people": recipe.people, "owner": recipe.owner, "likes": recipe.likes, "vegan": recipe.vegan, "ingredients": [ dict([("id", ingredient.id), ("item", ingredient.item), ("quantity", ingredient.quantity)]) for ingredient in recipe.ingredients ] } for recipe in recipes] data = sorted(data, key=lambda x: x.get('id'), reverse=True) clear_sessions() return return_result(data=data)
def approve_review_for_recipe(review_id, approve): if approve != config.APPROVE_KEY: return return_result(message="Not the right approve key!", code=400, status="failure") try: for review in Review.query.filter(Review.id == review_id): review.approved = True db_session.commit() clear_sessions() return return_result(data="approved review " + review_id) except IndexError: clear_sessions() return return_result(message="This review index does not exist", code=400, status="failure")
def add_review(): try: data = request.data review_data = json.loads(data.decode("utf-8")) for recipe in Recipe.query.filter(Recipe.id == review_data['id']): review = Review(credit=replacer(review_data['credit']), text=replacer(review_data['text']), approved=False) db_session.add(review) recipe.reviews.append(review) db_session.commit() clear_sessions() return return_result(data="added review for recipe with id: " + review_data['id']) except IndexError: clear_sessions() return return_result(message="This recipe index does not exist", code=400, status="failure")
def get_recipe_for_id(id): try: recipe = Recipe.query.filter(Recipe.id == id, Recipe.approved)[0] data = { "id": recipe.id, "title": recipe.title, "instructions": recipe.instructions, "img": recipe.img, "type": recipe.type, "time": recipe.time, "people": recipe.people, "owner": recipe.owner, "likes": recipe.likes, "vegan": recipe.vegan, "ingredients": [ dict([("id", ingredient.id), ("item", ingredient.item), ("quantity", ingredient.quantity)]) for ingredient in recipe.ingredients ], "reviews": [ dict([("id", review.id), ("credit", review.credit), ("text", review.text)]) for review in recipe.reviews if review.approved ] } clear_sessions() return return_result(data=data) except IndexError: clear_sessions() return return_result(message="This recipe index does not exist", code=400, status="failure")
def get_recipe_for_id_using_approval(id, approve): if approve != config.APPROVE_KEY: return return_result(message="Not the right approve key!", code=400, status="failure") try: recipe = Recipe.query.filter(Recipe.id == id)[0] data = { "id": recipe.id, "title": recipe.title, "instructions": recipe.instructions, "img": recipe.img, "type": recipe.type, "time": recipe.time, "people": recipe.people, "owner": recipe.owner, "likes": recipe.likes, "vegan": recipe.vegan, "ingredients": [ dict([("id", ingredient.id), ("item", ingredient.item), ("quantity", ingredient.quantity)]) for ingredient in recipe.ingredients ] } clear_sessions() return return_result(data=data) except IndexError: clear_sessions() return return_result(message="This recipe index does not exist", code=400, status="failure")
def add_recipe(): data = request.data recipe_data = json.loads(data.decode("utf-8")) if not recipe_data['img'].startswith("https://res.cloudinary.com/" + config.CLOUD_NAME + "/image/upload/"): return return_result(message="Je hebt geen geldig plaatje geupload.", code=500, status="failure") recipe = Recipe(title=replacer(recipe_data['title']), instructions=replacer(recipe_data['instructions']), img=recipe_data['img'], type=recipe_data['type'], time=replacer(recipe_data['time']), people=recipe_data['people'], vegan=recipe_data['vegan'], owner=replacer(recipe_data['owner']), approved=False, likes=0) db_session.add(recipe) for ingredient in recipe_data['ingredients']: ingredient = Ingredient(item=replacer(ingredient['item']), quantity=replacer(ingredient['quantity'])) db_session.add(ingredient) recipe.ingredients.append(ingredient) try: db_session.commit() clear_sessions() return return_result(data=recipe_data) except Exception: db_session.rollback() clear_sessions() return return_result( message="Je bereidingswijze is te lang, kort hem a.u.b. wat in.", code=500, status="failure")
def get_all_recipes(): recipes = Recipe.query data = [{ "id": recipe.id, "title": recipe.title, "instructions": recipe.instructions, "img": recipe.img, "type": recipe.type, "time": recipe.time, "people": recipe.people, "owner": recipe.owner, "likes": recipe.likes, "vegan": recipe.vegan, "ingredients": [ dict([("id", ingredient.id), ("item", ingredient.item), ("quantity", ingredient.quantity)]) for ingredient in recipe.ingredients ] } for recipe in recipes] data = sorted(data, key=lambda x: x.get('id'), reverse=True) clear_sessions() return return_result(data=data)