def new_item(state=None): error = None name = None description = None category_id = request.args.get('category_id', '') subcategory_id = request.args.get('subcategory_id', '') catalog = list_category() subcategories = [] if request.method == 'POST': category = None subcategory = None name = request.form.get('name', '').strip() description = request.form.get('description', '').strip() category_id = request.form.get('category', '').strip() subcategory_id = request.form.get('subcategory', '').strip() image_file = request.files.get('image', '') if not name: error = 'item name is missing' elif not category_id: error = 'category is missing' else: category = get_category(category_id) if not category: error = 'category is not found' else: if subcategory_id: subcategory = get_subcategory(subcategory_id) if not subcategory: error = 'subcategory is not found' if error is None: item = Item(name=name, description=description, added=datetime.now(), updated=datetime.now(), category_id=category.id) if subcategory: item.subcategory_id = subcategory.id db_session.add(item) db_session.commit() if image_file and allowed_file(image_file.filename): filename = "{0}-{1}".format(item.id, secure_filename(image_file.filename)) image_file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename)) image = ItemImage(item_id=item.id, filename=filename) db_session.add(image) db_session.commit() flash('New item %s successfully created' % name) return redirect(url_for('show_item', category_id=item.category.id, category_name=item.category.name, item_id=item.id, item_name=item.name)) if category_id: category = get_category(category_id) if category: subcategories = list_subcategory(category) return render_template('item_new_edit.html', error=error, user=login_session.get('user'), name=name, description=description, category_id=category_id, subcategories=subcategories, subcategory_id=subcategory_id, catalog=catalog, item_image=None, state=state, edit_or_add="Add")