def update_product(product_id): product = get_product_or_404(product_id) product_form = ProductForm(formdata=MultiDict(request.json), obj=product) if product_form.categories_ids.data is None: product_form.categories_ids.data = [ category.id for category in product.categories ] product_form.items_in_stock.data = product.items_in_stock if not product_form.validate(): abort(product_form.errors, 400) product_form.populate_obj(product) if product_form.categories_ids.data is not None: product.categories = get_categories_by_ids_or_404( product_form.categories_ids.data) if product_form.rating.data is not None: product.featured = product_form.calculated_feature if product_form.brand_id.data is not None: product.brand = get_brand_or_404(product_form.brand_id.data) db.session.add(product) db.session.commit() return jsonify(result=product.serialized)
def update_product(pid): """Updates a single product""" form = ProductForm(request.form) if form.validate(): product = Product.query.filter_by(id=pid).first() product.name = form.name.data product.price = form.price.data product.quantity = form.quantity.data product.description = form.description.data db.session.commit() flash("Product updated!") return redirect(url_for('get_products')) flash("Invalid data") return redirect(url_for('get_products'))
def create_product(): """Create a new product""" form = ProductForm(request.form) if form.validate(): product = Product() product.name = form.name.data product.price = form.price.data product.quantity = form.quantity.data product.description = form.description.data db.session.add(product) db.session.commit() flash("Product created!") return redirect(url_for('get_products')) flash("Invalid data") return redirect(url_for('get_products'))
def create_product(): product_form = ProductForm(MultiDict(request.json)) if not product_form.validate(extra_validators=product_required_extra): abort(product_form.errors, 400) new_product = Product( name=product_form.name.data, rating=product_form.rating.data, featured=product_form.calculated_feature, expiration_date=product_form.expiration_date.data, brand=get_brand_or_404(product_form.brand_id.data), categories=get_categories_by_ids_or_404( product_form.categories_ids.data), items_in_stock=product_form.items_in_stock.data, receipt_date=product_form.receipt_date.data, ) db.session.add(new_product) db.session.commit() return (jsonify(result=new_product.serialized), 201, { 'Location': url_for('products.get_product', product_id=new_product.id) })