Exemplo n.º 1
0
def newItem():
    Categories = session.query(Category).order_by(asc(Category.name)).all()
    if request.method == 'POST':
        category = session.query(Category).filter_by(
            name=request.form['category_name']).one()
        if not request.form['title']:
            flash('Title can not be empty for new item', category='Danger')
            return render_template('newitem.html', categories=Categories)
        if category:
            item = Item(title=request.form['title'],
                        description=request.form['description'],
                        category_id=category.id,
                        user_id=login_session['user_id'])
            photo = request.files['photo']
            bin_data = photo.read()
            item.photo = bin_data
            try:
                session.add(item)
                session.commit()
                flash('New Menu %s Item Successfully Created' % (item.title),
                      category='Success')
                return redirect(
                    url_for('showCategory', category_name=item.category.name))
            except IntegrityError:
                flash(
                    'An item with same title exists.'
                    'Item titles must be unique.',
                    category='Danger')
                session.rollback()
                return render_template('newitem.html', categories=Categories)
        else:
            flash('Category not selected for new item', category='Danger')
            return render_template('newitem.html', categories=Categories)
    else:
        return render_template('newitem.html', categories=Categories)
Exemplo n.º 2
0
def newItem():
    if 'username' not in login_session:
        return redirect('/login')
    Categories = session.query(Category).order_by(asc(Category.name)).all()
    if request.method == 'POST':
        category = session.query(Category).filter_by(
            name=request.form['category_name']
        ).one()
        if not request.form['title']:
            flash('Title can not be empty for new item', category='Danger')
            return render_template('newitem.html', categories=Categories)
        if category:
            item = Item(
                    title=request.form['title'],
                    description=request.form['description'],
                    category_id=category.id,
                    user_id=login_session['user_id']
            )
            photo = request.files['photo']
            bin_data = photo.read()
            item.photo = bin_data
            try:
                session.add(item)
                session.commit()
                flash(
                    'New Menu %s Item Successfully Created'
                    % (item.title),
                    category='Success'
                )
                return redirect(
                    url_for(
                        'showCategory',
                        category_name=item.category.name
                    )
                )
            except IntegrityError:
                flash(
                    'An item with same title exists.'
                    'Item titles must be unique.',
                    category='Danger'
                )
                session.rollback()
                return render_template('newitem.html', categories=Categories)
        else:
            flash('Category not selected for new item', category='Danger')
            return render_template('newitem.html', categories=Categories)
    else:
        return render_template('newitem.html', categories=Categories)
Exemplo n.º 3
0
def add_item():
    name = None
    description = None
    category_id = '0'
    if request.method == 'POST':
        category_id = request.form['category_id']
        name = request.form['name'].strip()
        description = request.form['description']
        # validate name is not empty
        if name:
            item = Item(name=name, description=description,
                        category_id=category_id, user_id=session['user_id'])
            db.add(item)
            db.commit()
            f = request.files['photo']
            # validate file is with allowed extension and
            # get back the extension
            extension = get_extension(f)
            if extension:
                # photo named after item id to avoid overwriting
                # use timestamp in name to avoid caching headache after update
                filename = secure_filename(
                    str(item.id) + datetime.datetime.now().isoformat() +
                    '.' + extension)
                f.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))
                item.photo = filename
                db.add(item)
                db.commit()
            flash("New item %s Successfully Added" % item.name)
            return redirect(url_for('show_item',
                                    category_id=category_id, item_id=item.id))
        flash("Name cannot be empty!")
    categories = db.query(Category).all()
    if category_id == '0' and request.args.get('category_id'):
        category_id = request.args.get('category_id')
    item = {'name': name,
            'description': description,
            'category_id': int(category_id)}
    # if reload the page when validation for name is failed
    # so it needs to refill previous entered data when reload
    # for that, it use item variable
    return render_template('add_item.html', categories=categories,
                           item=item, logged_in=True)