示例#1
0
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")