Esempio n. 1
0
def insert_recipe():
    form = AddRecipeForm()
    recipes = recipes_coll
    print(request.form)
    if form.validate_on_submit():
        image = request.form['image']
        name = request.form['name']
        author = request.form['author']
        notes = request.form['notes']
        course = request.form['course']
        cuisine = request.form['cuisine']
        allergens = request.form.getlist('allergens')
        ingredient = request.form.getlist('ingredient')
        step = request.form.getlist('step')
        recipes.insert_one({
            'image': image,
            'name': name,
            'notes': notes,
            'author': author,
            'course': course,
            'cuisine': cuisine,
            'allergens': allergens,
            'ingredient': ingredient,
            'step': step
        })
        return redirect(url_for('recipes'))
    return render_template('addrecipe.html',
                           page_title="Add your Own Recipe",
                           form=form)
Esempio n. 2
0
def edit_recipe(recipes_id):
    recipes = recipes_coll.find_one({"_id": ObjectId(recipes_id)})
    form = AddRecipeForm(obj=recipes)
    if form.validate_on_submit():
        recipes.image = form.image.data
        recipes.step = form.step.data
        recipes.allergens = form.allergens.data
        recipes.course = form.course.data
        recipes.ingredient = form.ingredient.data
        recipes.cuisine = form.cuisine.data
        recipes.author = form.author.data
        recipes.name = form.name.data
        recipes.notes = form.notes.data
        form.populate_obj(recipes)
        return redirect(url_for('recipes'))
    elif request.method == "GET":
        form.image.data = recipes['image']
        form.step.data = ''.join(recipes['step'])
        form.allergens.data = recipes['allergens']
        form.course.data = recipes['course']
        form.ingredient.data = ''.join(recipes['ingredient'])
        form.cuisine.data = recipes['cuisine']
        form.notes.data = recipes['notes']
        form.author.data = recipes['author']
        form.name.data = recipes['name']

    return render_template('editrecipe.html',
                           recipes=recipes,
                           page_title='Edit your Recipe',
                           form=form)
Esempio n. 3
0
def edit_recipe(recipe_id):
    """
    Verify that a user is logged in and they created the recipe.
    Render a form to edit the recipe. Validate the user input when
    submitted and any image upload. Secure the filename and update
    the relevant fields in the mongoDB document.
    """

    if not session.get('user'):
        flash('You need to log in to edit a recipe.')
        return redirect(url_for('login'))

    search_form = SearchForm()
    recipe = mongo.db.recipes.find_one_or_404({'_id': ObjectId(recipe_id)})

    if recipe['added_by'] != session['user']:
        flash('You can only edit your own recipes.')
        return redirect(url_for('profile', user=session['user']))

    form = AddRecipeForm(data=recipe)

    if request.method == 'POST':
        if form.validate_on_submit():
            update_recipe = {
                '$set': {
                    'name': form.name.data,
                    'ingredients': form.ingredients.data,
                    'instructions': form.instructions.data,
                    'servings': form.servings.data,
                    'time_required': form.time_required.data,
                }
            }

            if form.image.data:
                recipe_image = request.files['image']
                secured_filename = secure_filename(recipe_image.filename)
                mongo.save_file(secured_filename, recipe_image)
                update_recipe['$set']['recipe_image'] = recipe_image.filename
                update_recipe['$set']['recipe_image_url'] = url_for(
                    'file', filename=recipe_image.filename)
                if recipe.get('recipe_image'):
                    # save reference to old image:
                    old_image = recipe['recipe_image']
                    image = mongo.db.fs.files.find_one({'filename': old_image})
                    image_ID = ObjectId(image['_id'])
                    GridFS(mongo.db).delete(image_ID)

            mongo.db.recipes.update_one({'_id': ObjectId(recipe_id)},
                                        update_recipe)
            flash('Recipe Updated')
            return redirect(url_for('profile', user=session['user']))

    return render_template('edit_recipe.html',
                           recipe=recipe,
                           form=form,
                           search_form=search_form)
Esempio n. 4
0
def add_recipe():
    form = AddRecipeForm(request.form)
    if request.method == 'POST':
        if form.validate_on_submit():
            new_recipe = Recipe(form.recipe_title.data,
                                form.recipe_description.data)
            db.session.add(new_recipe)
            db.session.commit()
            flash('New recipe, {}, added!'.format(new_recipe.recipe_title),
                  'success')
            return redirect(url_for('recipes.index'))
        else:
            flash_errors(form)
            flash('Error - Recipe was not added.', 'error')

    return render_template('add_recipe.html', form=form)
Esempio n. 5
0
def add_recipe():
    """ adding a recipe to the database through the use of POST method """
    form = AddRecipeForm(request.form)
    if form.validate_on_submit():
        recipes = db.recipes
        recipes.insert_one({
            "recipe_name": request.form['recipe_name'],
            "author": request.form['author'],
            "cook_time": request.form['cook_time'],
            "level": request.form['level'],
            "ingredients": request.form['ingredients'],
            "method": request.form['method'],
            "servings": request.form['servings'],
        })
        return redirect(url_for("index", title="Recipe added"))
    return render_template("add_recipe.html", title="Add a recipe", form=form)
Esempio n. 6
0
def add_recipe():
    """
    After verifying that a user is logged in, render a form to
    add a new recipe. When submitted, validate the user input and
    any image upload. Secure the image filename and insert the
    document into mongoDB.
    """

    search_form = SearchForm()
    if 'user' not in session:
        flash('You need to log in to add a recipe.')
        return redirect(url_for('login'))

    form = AddRecipeForm()
    if request.method == 'POST':
        if form.validate_on_submit():
            new_recipe = {
                'name':
                form.name.data,
                'ingredients':
                form.ingredients.data,
                'instructions':
                form.instructions.data,
                'servings':
                form.servings.data,
                'time_required':
                form.time_required.data,
                'added_by':
                session['user'],
                'added_by_name':
                mongo.db.users.find_one({'email': session['user']})['name']
            }
            if form.image.data:
                recipe_image = request.files['image']
                secured_filename = secure_filename(recipe_image.filename)
                mongo.save_file(secured_filename, recipe_image)
                new_recipe['recipe_image'] = recipe_image.filename
                new_recipe['recipe_image_url'] = url_for(
                    'file', filename=recipe_image.filename)

            mongo.db.recipes.insert_one(new_recipe)
            return redirect(url_for('profile', user=session['user']))

    return render_template('add_recipe.html',
                           form=form,
                           search_form=search_form)
Esempio n. 7
0
def add_suggestion():
    form = AddRecipeForm()
    if form.validate_on_submit():
        name = form.title.data.lower()
        comfortfood = form.comfortfood.data
        fish = form.fish.data
        meal = form.selectmeal.data
        recipe = foodmood.url_convert(form.url.data)
        if db.session.query(models.FoodMood).filter(models.FoodMood.name == name).count() == 0 \
                and db.session.query(models.FoodMood).filter(models.FoodMood.recipe == recipe).count() == 0:
            fm = models.FoodMood(name=name,
                                 comfortfood=comfortfood,
                                 fish=fish,
                                 meal=meal,
                                 recipe=recipe)
            db.session.add(fm)
            db.session.commit()
            return redirect('/thanks-contributor.html')
        return render_template('/foodmood_add_suggestion.html',
                               form=form,
                               message='Title or recipe URL already exists')
    return render_template('/foodmood_add_suggestion.html', form=form)
Esempio n. 8
0
def add_recipe():
    """Retrieve form values, create a recipe instance and add it to the database"""

    # Requires login
    if 'user_id' not in session:
        return redirect('/login')
    
    form = AddRecipeForm()

    # Retrieve form values
    if form.validate_on_submit():
        title = form.title.data
        body = form.body.data

        recipe = Recipe(user_id=session['user_id'], title=title, body=body)

        db.session.add(recipe)
        db.session.commit()

        return redirect(f"/home/{session['user_id']}")

    else:
        return render_template('add_recipe.html', form=form, user_id=session['user_id'])
Esempio n. 9
0
def edit_recipe(recipe_id):
    """Displays a form with values inserted to be edited"""

    # Requires login
    if 'user_id' not in session:
        return redirect('/login')

    recipe = Recipe.query.get(recipe_id)

    form = AddRecipeForm(obj=recipe)

    if form.validate_on_submit():
        title = form.title.data
        body = form.body.data

        recipe.title = title
        recipe.body = body

        db.session.commit()

        return redirect(f"/home/{session['user_id']}")

    else:
        return render_template('edit_recipe.html', form=form, user_id=session['user_id'])
def add_recipe():
    """Creates a recipe and enters into recipe collection"""
    form = AddRecipeForm(request.form)
    if request.method == 'POST':
        # set the collection
        recipes_db = mongo.db.Recipes
        # insert the new recipe
        recipes_db.insert_one({
            'recipe_name': request.form['recipe_name'],
            'recipe_intro': request.form['recipe_intro'],
            'ingredients': request.form['ingredients'],
            'method': request.form['method'],
            'image': request.form['image'],
            'submit': request.form['submit'],
            'views': 0
        })
        return redirect(url_for('index', title='New Recipe Added'))
    else:
        return render_template('add_recipe.html',
                               title='add a recipe',
                               form=form)