def edit_item(item_id): if 'editing_item' in session: del session['editing_item'] item = Item.query.filter_by(id=item_id).first_or_404() categories = Category.query.all() form = EditItemForm() form.categories.choices = [(category.id, category.name) for category in categories] session['editing_item'] = url_for('main.edit_item', item_id=item_id) if form.validate_on_submit(): # Updating item.title = form.title.data item.description = form.description.data item.price = form.price.data item.category_id = form.categories.data if item.photo_id: delete_photo(item.photo_id) item.photo_id = None if form.image.data: item.photo_id = upload_photo(form.image.data) db.session.commit() flash('Your changes have been saved.') return redirect(url_for('main.edit_item', item_id=item.id)) elif request.method == 'GET': # Rendering form.title.data = item.title form.description.data = item.description form.price.data = item.price form.categories.data = item.category_id return render_template('edit_item.html', title='Edit Item', form=form, item=item)
def from_dict(self, data): for field in ['name', 'description']: if field in data: setattr(self, field, data[field]) if 'photo_data' in data: image = base64.b64decode(data['photo_data']) self.photo_id = upload_photo(image)
def add_category(): form = EditCategoryForm() if form.validate_on_submit(): category = Category(name=form.name.data, description=form.description.data, photo_id=upload_photo(form.image.data) if form.image.data else None) db.session.add(category) db.session.commit() flash('Category have been created.') if 'editing_categories' in session: return redirect(session['editing_categories']) return render_template('add_category.html', title='Add category', form=form)
def add_item(): form = EditItemForm() if form.validate_on_submit(): item = Item(title=form.title.data, description=form.description.data, price=form.price.data, category_id=form.category_id.data, photo_id=upload_photo(form.image.data) if form.image.data else None) db.session.add(item) db.session.commit() flash('Item have been created.') if 'editing_category' in session: return redirect(session['editing_category']) return render_template('add_item.html', title='Add item', form=form)
def edit_category(category_id): if 'editing_category' in session: del session['editing_category'] category = Category.query.filter_by(id=category_id).first_or_404() form = EditCategoryForm() page = request.args.get('page', 1, type=int) items = category.get_items().paginate(page, current_app.config['ITEMS_PER_PAGE'], True) next_url = url_for('edit_category', category_id=category_id, page=items.next_num) \ if items.has_next else None prev_url = url_for('edit_category', category_id=category_id, page=items.prev_num) \ if items.has_prev else None session['editing_category'] = url_for('main.edit_category', category_id=category_id) if form.validate_on_submit(): # Updating category.name = form.name.data category.description = form.description.data if category.photo_id: delete_photo(category.photo_id) category.photo_id = None if form.image.data: category.photo_id = upload_photo(form.image.data) db.session.commit() flash('Your changes have been saved.') return redirect(url_for('main.edit_category', category_id=category.id)) elif request.method == 'GET': # Rendering form.name.data = category.name form.description.data = category.description return render_template('edit_category.html', title='Edit Category', form=form, category=category, items=items.items, next_url=next_url, prev_url=prev_url)