예제 #1
0
def upload_image():
    try:
        image = request.files['img']
        upload_result = upload(image,
                               upload_preset=config.UPLOAD_PRESET,
                               api_key=config.API_KEY,
                               api_secret=config.API_SECRET,
                               cloud_name=config.CLOUD_NAME,
                               return_delete_token=True)
        token = upload_result['delete_token']
        img_url = upload_result['secure_url']

        if has_food(img_url):
            forbidden = forbidden_ingredients(img_url)
            used = vegi_ingredients_used(img_url)
            data = {
                "food": True,
                "forbidden": forbidden,
                "used": used,
                "url": img_url
            }
            return return_result(data=data)
        else:
            requests.post("https://api.cloudinary.com/v1_1/" +
                          config.CLOUD_NAME + "/delete_by_token",
                          data={'token': token})
            return return_result(data={'food': False})
    except Exception as e:
        return return_result(
            message=
            "Er is een onverwachte fout opgetreden. Neem a.u.b. contact op met veganwinners. {0}"
            .format(e),
            code=500,
            status="failure")
예제 #2
0
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")
예제 #3
0
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")
예제 #4
0
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")
예제 #5
0
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)
예제 #6
0
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)
예제 #7
0
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")
예제 #8
0
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")
예제 #9
0
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")
예제 #10
0
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")
예제 #11
0
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)
예제 #12
0
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)
예제 #13
0
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)
예제 #14
0
def server_error(e):
    return return_result(code=500, status="error", message=str(e))