def process_edit_post_form(post_id): """Get the edit post form data and flash error messages if form input invalid or edit the post in the database """ form_input_labels = [("post_title", "Title"), ("post_content", "Content")] if is_form_invalid(request.form, form_input_labels): return redirect(f"/posts/{post_id}/edit") post = Post.query.get_or_404(post_id) post.title = request.form["post_title"] post.content = request.form["post_content"] tag_names = request.form.getlist("tag_name") # Use filter to grab updated tags, did not figure this out ourselves, tried to grab tags one by one # see below tags = Tag.query.filter(Tag.name.in_(tag_names)).all() post.tags = tags # PostTag.filter_by(tag_id=new_tag.id).delete() # May be inefficient to query this many times # for tag_name in tag_names: # new_tag = Tag.query.filter_by(name=tag_name).one() # post.tags.append(new_tag) db.session.add(post) db.session.commit() return redirect(f"/posts/{post_id}")
def process_new_post_form(user_id): """Get the new post form data and flash error messages if form input invalid or add the new post in the database """ form_input_labels = [("post_title", "Title"), ("post_content", "Content")] if is_form_invalid(request.form, form_input_labels): return redirect(f"/users/{user_id}/posts/new") User.query.get_or_404(user_id) new_post = Post( title=request.form["post_title"], content=request.form["post_content"], user_id=user_id, ) tag_names = request.form.getlist("tag_name") tags = Tag.query.filter(Tag.name.in_(tag_names)).all() new_post.tags = tags # May be inefficient to query this many times # for tag_name in tag_names: # new_tag = Tag.query.filter_by(name=tag_name).one() # new_post.tags.append(new_tag) db.session.add(new_post) db.session.commit() return redirect(f"/users/{user_id}")
def process_new_tag_form(): """Get the new tag form data and flash error messages if form input invalid or add the new tag in the database """ tag_name = request.form["tag_name"] or None form_input_labels = [("tag_name", "Tag Name")] if is_form_invalid(request.form, form_input_labels): return redirect("/tags/new") new_tag = Tag(name=tag_name) db.session.add(new_tag) db.session.commit() return redirect("/tags")
def process_edit_user_form(user_id): """Get the edit user form data and flash error messages if form input invalid or update user data in the database """ form_input_labels = [("first_name", "First Name"), ("last_name", "Last Name")] if is_form_invalid(request.form, form_input_labels): return redirect(f"/users/{user_id}/edit") user = User.query.get(user_id) user.first_name = request.form["first_name"] or None user.last_name = request.form["last_name"] or None user.image_url = request.form["image_url"] or None db.session.commit() return redirect("/users")
def process_edit_tag_form(tag_id): """Get the edit tag form data and flash error messages if form input invalid or edit the tag in the database """ Tag.query.get_or_404(tag_id) tag_name = request.form["tag_name"] or None form_input_labels = [("tag_name", "Tag Name")] if is_form_invalid(request.form, form_input_labels): return redirect(f"/tags/{tag_id}/edit") tag = Tag.query.get(tag_id) tag.name = tag_name db.session.add(tag) db.session.commit() return redirect("/tags")
def process_new_user_form(): """Get the new user form data and flash error messages if form input invalid or add the new user in the database """ first_name = request.form["first_name"] or None last_name = request.form["last_name"] or None image_url = request.form["image_url"] or None form_input_labels = [("first_name", "First Name"), ("last_name", "Last Name")] if is_form_invalid(request.form, form_input_labels): return redirect("/users/new") new_user = User(first_name=first_name, last_name=last_name, image_url=image_url) db.session.add(new_user) db.session.commit() return redirect("/users")