Exemple #1
0
def add_recipe():
    form = RecipeForm()
    if request.method == 'POST' and form.validate():
        # Add recipe to database and create ingredient links
        recipe = Recipe(name=form.name.data, type=form.type.data,
                        time=form.time.data, category=form.category.data,
                        serves=form.serves.data, method=form.method.data)
        db.session.add(recipe)
        # Create links between recipe and all ingredients required
        for ingredient in session['ingredients']:
            find_ingredient = Ingredient.query.filter_by(name=ingredient[0]).first()
            ing_recipe_link = RI_Link(r_id=recipe.id, i_id=find_ingredient.id,
                                      quantity=ingredient[1], q_type=ingredient[2])
            recipe.ingredients.append(ing_recipe_link)
            find_ingredient.recipes.append(ing_recipe_link)
        # Add calorie value for the recipe
        calories = 0
        for ingredient in session['ingredients']:
            find_ing = Ingredient.query.filter_by(name=ingredient[0]).first()
            if ingredient[2] == 'g':
                calories += int(ingredient[1])*int(find_ing.calories_per_g)
            elif ingredient[2] == 'mL':
                calories += int(ingredient[1])*int(find_ing.calories_per_ml)
            elif ingredient[2] == 'tbs':
                calories += int(ingredient[1])*int(find_ing.calories_per_tbs)
            elif ingredient[2] == 'tsp':
                calories += int(ingredient[1])*int(find_ing.calories_per_tsp)
            elif ingredient[2] == 'each':
                calories += int(ingredient[1])*int(find_ing.calories_per_each)
        recipe.calories = int(calories/(int(recipe.serves)))
        db.session.commit()
        return redirect(url_for('index'))
    session['ingredients'] = []
    session.modified = True
    form = RecipeForm()
    return render_template('add-recipe.html', title= 'Add Recipe', form = form)