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