示例#1
0
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)
示例#2
0
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'))
示例#3
0
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'))
示例#4
0
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)
    })