예제 #1
0
def update_item(id):
    """Updates the requested item."""
    if needs_login():
        return redirect(url_for('oauth2callback'))
    form = ItemForm(request.form)
    item = models.Item.query.filter_by(id=id).first()
    if not form.validate():
        return render_template('edit_item.html', form=form, item=item)

    # retain the old image path before populate_obj overwrites it with form
    # data
    old_image = item.image
    form.populate_obj(item)
    item.image = old_image

    if form.image is not None:
        image_data = request.files['image'].read()
        if len(image_data) > 0:
            # generate a random file name and save it to the image folder
            filename = ''.join(random.choice(
                string.ascii_uppercase + string.digits) for x in xrange(16))
            ext = os.path.splitext(request.files['image'].filename)[1]
            open(app.config['IMAGE_DIR'] +
                 filename + ext, 'w').write(image_data)
            item.image = filename + ext
            # if the user updates the image, delete the old one
            if os.path.isfile(app.config['IMAGE_DIR'] + old_image):
                os.remove(app.config['IMAGE_DIR'] + old_image)

    db.session.add(item)
    db.session.commit()
    return render_template('generic.html',
                           title="Update Completed",
                           description="%s has been updated." % item.name,
                           redirect_to_index=True)
예제 #2
0
def item_edit(item_id):
    """
    This creates a edits category only if the user is logged in
    """
    if not logged_in():
        flash('Please log in to edit items')
        return redirect(url_for('category_list'))
    item = Item.query.get(item_id)
    user = get_current_user()
    if item.user_id == user.id:
        form = ItemForm(obj=item)
        if form.validate_on_submit():
            form.populate_obj(item)
            db.session.add(item)
            db.session.commit()
            flash(item.title + ' updated successfully')
            return redirect(
                url_for('category_view', category_id=item.category_id))
        return render_template('item_edit.html',
                               form=form,
                               category_id=item.category_id)
    flash('You can not delete this Item its not created by you')
    return redirect(url_for('category_view', category_id=item.category_id))
예제 #3
0
파일: catalog.py 프로젝트: gitzart/catalog
def edit_item(item):
    u = User.query.get(session.get('uid', 0))  # User must exist
    i = Item.query.filter_by(slug=item).first_or_404()
    cats = Category.query.order_by(Category.name).all()
    form = ItemForm(name=i.name,
                    description=i.description,
                    category_id=i.category_id)
    form.category_id.choices = [(c.id, c.name) for c in cats]
    if form.validate_on_submit():
        if 'photos' in request.files:
            photos = get_item_photo_list(i.id)
            db.session.add_all(photos)
            db.session.commit()
            form.photos.data = ItemPhoto.query.filter_by(item_id=i.id).all()
        form.populate_obj(i)
        db.session.add(i)
        db.session.commit()
        c = i.category
        return redirect(url_for('item', category=c.slug, item=i.slug))
    return render_template('edit_item.html',
                           form=form,
                           user=u,
                           item=i,
                           categories=cats)
예제 #4
0
def editItem(category_name, item_title):
    """
    editItem: form to edit a item
    Args:
        category_name (data type: str): category name to filter result
        item_title (data type: str): item name to filter result
    Returns:
        return update a item and redirect to home or show form to edit a item
    """

    if 'username' not in login_session:
        return redirect(url_for('showLogin'))

    try:

        categories = session.query(Categories).order_by('name')

        category = session.query(Categories)\
                          .filter_by(name=category_name).one()

        if category is None:
            flash('Error unable to retrive category')
            return redirect(url_for('showHomepage'))

    except Exception as error:
        output = '<script>function myFunction(){'
        output += 'alert("caught this error-cat: %s");}</script>'
        output += '<body onload="myFunction()">' % (repr(error))
        # return output

        flash('Error cat')
        return redirect(url_for('showHomepage'))

    try:

        item = session.query(Items).filter_by(title=item_title,
                                              category_id=category.id).one()

        if item is None:
            flash('Error unable to retrive item')
            return redirect(url_for('showHomepage'))

        item = session.query(Items).filter_by(id=item.id).one()

    except Exception as error:
        output = '<script>function myFunction(){'
        output += 'alert("caught this error-item: %s");}</script>'
        output += '<body onload="myFunction()">' % (repr(error))
        # return output

        flash('Error item')
        return redirect(url_for('showHomepage'))

    try:

        creator = getUserInfo(item.user_id)

        form = ItemForm(obj=item)

        form.category_id.choices = [(0, 'Select')]
        form.category_id.choices += [(cat.id, cat.name) for
                                     cat in categories]

        print form.errors

        """
        Validate form on submit
        Gather user inputs and update the database
        """
        if form.validate_on_submit():
            form.populate_obj(item)

            item.title = form.title.data
            item.description = form.description.data
            item.category_id = form.category_id.data
            item.user_id = creator.id

            session.add(item)
            session.commit()

            flash("Successfully updated item")
            return redirect(url_for('showHomepage'))

        return render_template('edititem.html',
                               form=form,
                               categories=categories,
                               category=category,
                               creator=creator,
                               login_session=login_session)

    except Exception as error:
        output = '<script>function myFunction(){'
        output += 'alert("caught this error-2: %s");}</script>'
        output += '<body onload="myFunction()">' % (repr(error))
        # return output

        flash('Error 2')
        return redirect(url_for('showHomepage'))