Beispiel #1
0
def user_public_page(user_id, username):
    """User public welcome page.

    Args:
        user_id (int): User ID value passed from the URL.
        username (str): User's registered username passed from URL.
    """

    try:
        db_user = session.query(User).filter_by(id=user_id).one()
        db_categories = (session.query(Category).filter_by(
            user_id=user_id).order_by(asc(Category.name)).all())
        db_items = (session.query(Item).filter_by(user_id=user_id).order_by(
            desc(Item.create_date)).limit(7).all())
    except NoResultFound:
        msg = ("<strong>Data not found. That user may have deleted"
               "their account.</strong>")
        response = make_response(msg, 404)
        return response

    owner = login_utils.get_user_info(user_id)

    if db_user.public is False:
        flash("That user set their data to private.")
        return redirect(url_for("bp_main.welcome"), code=302)
    else:
        msg = "Now visiting the page of {}".format(username)
        flash(msg)
        return render_template("catalog_public.html",
                               CATEGORIES=db_categories,
                               RECENT_ITEMS=db_items,
                               OWNER=owner)
def show_category(category_name, user_id):
    """Handler for a single category view (private and public).

    Args:
        category_name (unicode): Category value passed from the URL.
        user_id (int): User ID value passed from the URL.
    """

    try:
        db_category = (session.query(Category)
                       .filter_by(user_id=user_id, name=category_name).one())
        db_items = (session.query(Item)
                    .filter_by(user_id=user_id, category_name=category_name)
                    .order_by(asc(Item.name)).all())
    except NoResultFound:
        msg = ("<strong>Data not found. That user may have deleted"
               "their account.</strong>")
        response = make_response(msg, 404)
        return response

    # Allows to add more personalized info about item's creator
    owner = login_utils.get_user_info(user_id)

    # Determine whether to show the public view or the owner view
    if "username" not in login_session or owner.id != login_session["user_id"]:
        if owner.public is False:
            flash("That user set their data to private.")
            return redirect(url_for("bp_main.welcome"), code=302)
        else:
            return render_template("category_public.html",
                                   CATEGORY=db_category,
                                   ITEMS=db_items, OWNER=owner)
    else:
        return render_template("category.html", CATEGORY=db_category,
                               ITEMS=db_items)
Beispiel #3
0
def item_info(category_name, item_name, user_id):
    """Handler for item view (private and public).

    Args:
        category_name (unicode): Category value passed from the URL.
        item_name (unicode): Item value passed from the URL.
        user_id (int): User ID value passed from the URL.
    """

    try:
        db_category = (session.query(Category).filter_by(
            user_id=user_id, name=category_name).one())
        db_item = (session.query(Item).filter_by(user_id=user_id,
                                                 name=item_name).one())
    except NoResultFound:
        msg = ("<strong>Data not found. That user may have deleted"
               "their account.</strong>")
        response = make_response(msg, 404)
        return response

    owner = login_utils.get_user_info(db_category.user_id)

    # We need the image path for the client view (img-tag src value)
    img_src = None
    img_filename = db_item.image_file

    if img_filename is not None:
        user_img = Image(BASE_URL, user_id, img_filename)
        img_src = user_img.path_html

    if "username" not in login_session or owner.id != login_session["user_id"]:
        if owner.public is False:
            flash("That user set their data to private.")
            return redirect(url_for("bp_main.welcome"), code=302)
        else:
            return render_template("item_public.html",
                                   ITEM=db_item,
                                   ITEM_IMAGE=img_src,
                                   CATEGORY=db_category,
                                   OWNER=owner)
    else:
        return render_template("item.html",
                               ITEM=db_item,
                               ITEM_IMAGE=img_src,
                               CATEGORY=db_category)