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)
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)
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)