Exemplo n.º 1
0
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}")
Exemplo n.º 2
0
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}")
Exemplo n.º 3
0
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")
Exemplo n.º 4
0
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")
Exemplo n.º 5
0
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")
Exemplo n.º 6
0
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")