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)
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)
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)
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)
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)
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)
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)
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'])
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)