Esempio n. 1
0
def new_item():
    """Create a new item"""

    if not is_user_logged_in(login_session):
        return render_template('forbidden.html')

    if request.method == 'POST':

        cats = crud.all_categories()

        if not is_item_form_valid(request.form):
            flash(u'Item title and category are both mandatory', 'error')
            return render_template('new_item.html',
                                   categories=cats,
                                   login_session=login_session)

        item_title = request.form['title']
        cat_id = request.form['category']

        if is_item_repeated(category_id=cat_id, item_title=item_title):
            cat_name = crud.category_name_by_id(cat_id)
            flash(
                u'There is an item called %s in category %s' %
                (item_title, cat_name), 'error')

            return render_template('new_item.html',
                                   categories=cats,
                                   login_session=login_session)

        email = login_session['email']
        user = user_helper.get_user_by_email(email=email)
        new_item = Item(title=request.form['title'],
                        description=request.form['description'],
                        cat_id=request.form['category'],
                        picture_path=request.form['picture'],
                        user=user)

        crud.new_item(new_item)

        flash(u'\"%s\" Successfully Created' % new_item.title, 'success')

        return redirect(
            url_for('item.get_items_by_category',
                    category_name=new_item.category.name))
    else:
        cats = crud.all_categories()
        return render_template('new_item.html',
                               categories=cats,
                               login_session=login_session)
Esempio n. 2
0
def get_item(category_name, item_title):
    """Get the selected item"""

    cats = crud.all_categories()
    item = crud.item(category_name, item_title)
    return render_template('item.html',
                           categories=cats,
                           item=item,
                           login_session=login_session)
Esempio n. 3
0
def get_items_by_category(category_name):
    """Get all Items by a selected Category"""

    cats = crud.all_categories()
    items_by_category = crud.items_by_category(category_name)
    return render_template('catalog.html',
                           categories=cats,
                           qty=len(items_by_category),
                           items=items_by_category,
                           login_session=login_session)
Esempio n. 4
0
def main():
    """The main screen"""

    cats = crud.all_categories()
    latest_items = crud.latest_item()
    return render_template('catalog.html',
                           categories=cats,
                           items=latest_items,
                           main_screen=True,
                           login_session=login_session)
Esempio n. 5
0
def catalog_json():
    """The whole catalog format in JSON"""

    categories = crud.all_categories()
    items = crud.all_items()
    catalog = {"Category": [cat.serialize for cat in categories]}
    for cat in catalog["Category"]:
        cat["item"] = [
            item.serialize for item in items if item.cat_id == cat['id']
        ]
    app.logger.info('JSON requested')
    return jsonify(catalog)
Esempio n. 6
0
def edit_item(item_id):
    """Edit an item"""

    if 'username' not in login_session:
        return render_template('forbidden.html',
                               error=constants.FORBIDDEN_ERROR_MSG)

    cats = crud.all_categories()
    item_to_be_edited = crud.item_by_id(item_id)

    if request.method == 'POST':
        title = request.form['title']
        picture_path = request.form['picture']
        description = request.form['description']
        cat_id = request.form['category']

        if item_to_be_edited.title != title:
            if is_item_repeated(category_id=cat_id, item_title=title):
                cat_name = crud.category_name_by_id(cat_id)
                flash(
                    u'There is an item called %s in category %s' %
                    (title, cat_name), 'error')

                return render_template('new_item.html',
                                       categories=cats,
                                       login_session=login_session)

        user_id = user_helper.get_user_id(login_session['email'])
        user = user_helper.get_user_info(user_id)
        if user.email == item_to_be_edited.user.email:
            crud.edit_item(item_id, title, description, picture_path, cat_id)
        else:
            return render_template('forbidden.html',
                                   error=constants.AUTH_ERROR_EDIT_ITEM)

        flash(u'Item Successfully Edited', 'success')
    else:
        return render_template('new_item.html',
                               item=item_to_be_edited,
                               categories=cats,
                               login_session=login_session)

    return redirect(url_for('main'))