Esempio n. 1
0
    description = request.form['description'].strip()

    picture = request.files['picture']
    picture_data = None

    if picture:
        if not allowed_file(picture.filename):
            flash("The picture must be a JPEG or PNG file.", "danger")
            return render_template('create_item.html', categories=categories, nonce=createNonce())

        picture_data = picture.read()

    item = Item(name=name, description=description, category=category, creation_date=datetime.utcnow())
    if picture_data:
        item.picture = picture.filename
        item.picture_data = picture_data

    session.add(item)
    session.commit()
    flash("The item '%s' has been created." % name, "success")

    return redirect(url_for('listItems', category_id=category.id))

def allowed_file(filename):
    return '.' in filename and \
           filename.rsplit('.', 1)[1].lower() in ['jpg', 'jpeg', 'png']

@app.route('/item/<int:item_id>/edit/', methods=['GET','POST'])
@login_required
def editItem(item_id):
    """Modifies the item with the given id.
def newItem(category_id=''):
    """ Create new item
    Args:
        category_id: (optional) the id of the category
    """

    categories = session.query(Category).all()

    if request.method == 'POST':

        nonce = request.form['nonce'].strip()

        # Check if nonce is set correct
        if not useNonce(nonce):
            flash("An error occurred. Please try again.", "danger")
            return render_template('forms/newItem.html',
                                   categories=categories,
                                   nonce=createNonce())

        # Check if a name is set
        if not request.form['item_name'].strip():
            flash("Please enter a name", "danger")
            return render_template('forms/newItem.html',
                                   categories=categories,
                                   nonce=createNonce())

        # Check if a category is selected
        if not request.form['item_category'].strip():
            flash("Please enter a name", "danger")
            return render_template('forms/newItem.html',
                                   categories=categories,
                                   nonce=createNonce())

        try:
            category = session.query(Category).filter_by(
                id=request.form['item_category'].strip()).one()
        except Exception, e:
            flash("Please choose a valid category.", "danger")
            return render_template('forms/newItem.html',
                                   categories=categories,
                                   nonce=createNonce())

        # check if an items with the same name already exists in this category
        existingItem = session.query(Item).filter_by(
            category_id=category.id,
            name=request.form['item_name'].strip()).first()
        if existingItem:
            flash(
                "An item with the same name already exists "
                "in this category. Please choose a different name", "danger")
            return render_template('forms/newItem.html',
                                   categories=categories,
                                   nonce=createNonce())

        picture = request.files['item_picture']
        picture_data = None

        if picture:
            if not allowed_file(picture.filename):
                flash("The picture must be a JPEG, GIF, or PNG file.",
                      "danger")
                return render_template('forms/newItem.html',
                                       categories=categories,
                                       nonce=createNonce())

            picture_data = picture.read()

        newItem = Item(name=request.form['item_name'],
                       description=request.form['item_description'],
                       category_id=request.form['item_category'],
                       user_id=login_session['user_id'],
                       created_on=datetime.utcnow())

        if picture_data:
            newItem.picture = picture.filename
            newItem.picture_data = picture_data

        session.add(newItem)
        session.commit()
        flash('New Item %s successfully created' % newItem.name)
        session.commit()
        return redirect(url_for('home'))
Esempio n. 3
0
    if picture:
        if not allowed_file(picture.filename):
            flash("The picture must be a JPEG or PNG file.", "danger")
            return render_template('create_item.html',
                                   categories=categories,
                                   nonce=createNonce())

        picture_data = picture.read()

    item = Item(name=name,
                description=description,
                category=category,
                creation_date=datetime.utcnow())
    if picture_data:
        item.picture = picture.filename
        item.picture_data = picture_data

    session.add(item)
    session.commit()
    flash("The item '%s' has been created." % name, "success")

    return redirect(url_for('listItems', category_id=category.id))


def allowed_file(filename):
    return '.' in filename and \
           filename.rsplit('.', 1)[1].lower() in ['jpg', 'jpeg', 'png']


@app.route('/item/<int:item_id>/edit/', methods=['GET', 'POST'])
@login_required
def newItem(category_id=''):
    """ Create new item
    Args:
        category_id: (optional) the id of the category
    """

    categories = session.query(Category).all()

    if request.method == 'POST':

        nonce = request.form['nonce'].strip()

        # Check if nonce is set correct
        if not useNonce(nonce):
            flash("An error occurred. Please try again.", "danger")
            return render_template('forms/newItem.html',
                                   categories=categories, nonce=createNonce())

        # Check if a name is set
        if not request.form['item_name'].strip():
            flash("Please enter a name", "danger")
            return render_template('forms/newItem.html',
                                   categories=categories, nonce=createNonce())

        # Check if a category is selected
        if not request.form['item_category'].strip():
            flash("Please enter a name", "danger")
            return render_template('forms/newItem.html',
                                   categories=categories, nonce=createNonce())

        try:
            category = session.query(Category).filter_by(
                id=request.form['item_category'].strip()).one()
        except Exception, e:
            flash("Please choose a valid category.", "danger")
            return render_template('forms/newItem.html',
                                   categories=categories, nonce=createNonce())

        # check if an items with the same name already exists in this category
        existingItem = session.query(Item).filter_by(
            category_id=category.id, name=request.form['item_name'].strip()).first()
        if existingItem:
            flash("An item with the same name already exists "
                  "in this category. Please choose a different name", "danger")
            return render_template('forms/newItem.html',
                                   categories=categories, nonce=createNonce())


        picture = request.files['item_picture']
        picture_data = None

        if picture:
            if not allowed_file(picture.filename):
                flash("The picture must be a JPEG, GIF, or PNG file.", "danger")
                return render_template('forms/newItem.html',
                                       categories=categories,
                                       nonce=createNonce())

            picture_data = picture.read()

        newItem = Item(name=request.form['item_name'],
                       description=request.form['item_description'],
                       category_id=request.form['item_category'],
                       user_id=login_session['user_id'],
                       created_on=datetime.utcnow())

        if picture_data:
            newItem.picture = picture.filename
            newItem.picture_data = picture_data


        session.add(newItem)
        session.commit()
        flash('New Item %s successfully created' % newItem.name)
        session.commit()
        return redirect(url_for('home'))