def edit_product(product_slug):
    """Presents the form to edit products."""
    product = Product.by_slug(product_slug)
    form = ProductForm(request.form, product)

    return render_template(
        'admin/edit-product.html', form=form, product=product)
def delete_product(product_slug):
    """Deletes a product."""
    product = Product.by_slug(product_slug)
    if request.method == 'POST':
        db.session.delete(product)
        db.session.commit()
        flash('Deleted “%s”' % product.name)
        return redirect('/')
    return render_template('admin/delete.html', product=product)
def update_product(product_slug):
    """Saves changes to an existing product."""
    product = Product.by_slug(product_slug)
    form = ProductForm(request.form, product)

    if not form.validate():
        return render_template(
            'admin/edit-product.html', form=form, product=product)

    product = Product.from_form(form, product=product)

    flash(message='Product updated', category='success')

    url = url_for('frontend.product', category_slug=product.category.slug,
                  product_slug=product.slug)
    return redirect(url)