Exemple #1
0
def products_create():
    if not current_user.is_admin:
        return redirect(url_for("index"))

    form = ProductFormNew(request.form)
    form.category.choices = [(c.id, c.name) for c in all_categories()]

    # Validoidaan syöte
    if not form.validate():
        return render_template("products/new_products.html",
                               categories=all_categories(),
                               form=form)

    # Tarkistetaan lomakkeen kategorian olemassaolo
    if not category_id_exists(form.category.data):
        form.category.errors.append("Kategoriaa ei löytynyt")
        return render_template("products/new_products.html",
                               categories=all_categories(),
                               form=form)

    ctgr = db.session().query(Category).filter(
        Category.id == form.category.data).first()

    # Lisätään uusi tuote
    product = Product(form.name.data, form.description.data, form.price.data,
                      form.quantity.data, ctgr.id)

    db.session().add(product)
    db.session().commit()

    return redirect(
        url_for("index", action_message="Lisättiin tuote " + product.name))
Exemple #2
0
def products_update_form(product_id):
    if not current_user.is_admin:
        return redirect(url_for("index"))

    form = ProductFormUpdate()

    # Tarkistetaan päivitettävän tuotteen olemassaolo
    if not product_id_exists(product_id):
        error_list = list(form.name.errors)
        error_list.append("Tuotetta ei löytynyt")
        form.name.errors = tuple(error_list)
        return render_template("products/update_products.html",
                               categories=all_categories(),
                               form=form,
                               product_id=product_id)

    # Jos tuote löytyi, tuodaan sen nykyiset tiedot lomakkeelle
    old_product = db.session().query(Product).filter(
        Product.id == product_id).first()
    form.name.data = old_product.name
    form.description.data = old_product.description
    form.price.data = old_product.price
    form.quantity.data = old_product.quantity
    form.category.choices = [(c.id, c.name) for c in all_categories()]
    form.category.data = old_product.category_id

    return render_template("products/update_products.html",
                           categories=all_categories(),
                           form=form,
                           product_id=product_id)
Exemple #3
0
def categories_create():
    if not admin():
        return redirect(url_for("index"))

    form = CategoryFormNew(request.form)

    # Validoidaan syöte
    if not form.validate():
        return render_template("categories/new_categories.html",
                               categories=all_categories(),
                               form=form)

    # Estetään duplikaattien lisääminen
    if category_name_exists(form.name.data):
        form.name.errors.append(
            "The database already contains a category named " + form.name.data)
        return render_template("categories/new_categories.html",
                               categories=all_categories(),
                               form=form)

    # Lisätään uusi kategoria
    ctgr = Category(form.name.data)

    db.session().add(ctgr)
    db.session().commit()

    return redirect(
        url_for("index", action_message="Lisättiin kategoria " + ctgr.name))
Exemple #4
0
def categories_update():
    if not admin():
        return redirect(url_for("index"))

    updateForm = CategoryFormUpdate(request.form)
    updateForm.categories.choices = [(c.id, c.name) for c in all_categories()]

    if not updateForm.validate():
        return render_template("categories/update_categories.html",
                               categories=all_categories(),
                               form=updateForm)

    # Tarkistetaan päivitettävän kategorian olemassaolo
    if category_id_exists(updateForm.categories.data):
        # Päivitetään kategoria
        ctgr = db.session().query(Category).filter(
            Category.id == updateForm.categories.data).first()
        ctgr.name = updateForm.newName.data
        db.session().commit()
        return redirect(
            url_for("index",
                    action_message="Päivitettiin kategoria " + ctgr.name))

    print(updateForm.categories.data)
    updateForm.categories.errors.append("Kategorian päivittäminen epäonnistui")
    return render_template("categories/update_categories.html",
                           categories=all_categories(),
                           form=updateForm)
Exemple #5
0
def products_new():
    if not current_user.is_admin:
        return redirect(url_for("index"))

    form = ProductFormNew()
    form.category.choices = [(c.id, c.name) for c in all_categories()]

    return render_template("products/new_products.html",
                           categories=all_categories(),
                           form=form)
Exemple #6
0
def categories_update_form():
    if not admin():
        return redirect(url_for("index"))

    form = CategoryFormUpdate()
    form.categories.choices = [(c.id, c.name) for c in all_categories()]

    return render_template("categories/update_categories.html",
                           categories=all_categories(),
                           form=form)
Exemple #7
0
def list_orders():
    if admin():
        return render_template("orders/list_orders.html",
                               categories=all_categories(),
                               orders=Order.query.all())

    orders = db.session().query(Order).filter(
        Order.account_id == current_user.id)

    return render_template("orders/list_orders.html",
                           categories=all_categories(),
                           orders=orders)
Exemple #8
0
def show_product(product_id):

    product = Product.query.filter(Product.id == product_id).first()

    return render_template("products/show_product.html",
                           categories=all_categories(),
                           product=product)
Exemple #9
0
def categories_new():
    if not admin():
        return redirect(url_for("index"))

    return render_template("categories/new_categories.html",
                           categories=all_categories(),
                           form=CategoryFormNew())
Exemple #10
0
def list_statistics():
    if not current_user.is_admin:
        return redirect(url_for("index"))

    most_sold = Product.find_most_sold_products()
    least_sold = Product.find_least_sold_products()
    avg_prices = Category.find_average_prices_by_category()

    return render_template("statistics/list_statistics.html", categories = all_categories(),\
                            most_sold = most_sold, least_sold = least_sold, avg_prices = avg_prices)
Exemple #11
0
def show_cart():
    if current_user.is_admin:
        return redirect(url_for("index"))

    if "cart" not in session:
        return render_template("orders/list_cart.html",
                               categories=all_categories())

    total = 0
    values = []

    for value in session["cart"].values():
        values.append(Decimal(value["price"]))

    total = sum(values)

    return render_template("orders/list_cart.html",
                           categories=all_categories(),
                           products=session["cart"],
                           total=total)
Exemple #12
0
def category_show(category_id):
    if request.method == "GET":
        return render_template("index.html", categories = all_categories(),\
                                products = Product.query.filter(Product.category_id == category_id),\
                                order_by_form = OrderByForm(), ctgr_page = category_id, title = request.args.get("title"))

    order_by_form = OrderByForm(request.form)
    i = int(order_by_form.options.data)

    products = []

    if i is 0:
        products = Product.query.filter(Product.category_id == category_id)
    elif i is 1:
        products = Product.query.order_by(asc(
            Product.price)).filter(Product.category_id == category_id)
    elif i is 2:
        products = Product.query.order_by(desc(
            Product.price)).filter(Product.category_id == category_id)

    return render_template("index.html", categories = all_categories(), products = products,\
                            order_by_form = order_by_form, ctgr_page = category_id, title = request.args.get("title"))
Exemple #13
0
def categories_delete():
    if not admin():
        return redirect(url_for("index"))

    deleteForm = CategoryFormDelete(request.form)
    deleteForm.categories.choices = [(c.id, c.name) for c in all_categories()]

    # Tarkistetaan poistettavan kategorian olemassaolo
    if category_id_exists(deleteForm.categories.data):
        # Poistetaan kategoria
        ctgr = db.session().query(Category).filter(
            Category.id == deleteForm.categories.data).first()
        db.session().delete(ctgr)
        db.session().commit()
        return redirect(
            url_for("index",
                    action_message="Poistettiin kategoria " + ctgr.name))

    return render_template("categories/delete_categories.html",
                           categories=all_categories(),
                           form=CategoryFormDelete(),
                           error="Kategorian poistaminen epäonnistui")
Exemple #14
0
def show_order(order_id):
    if not admin():
        user_id = Order.query.filter(Order.id == order_id).first().account_id
        if user_id is not current_user.id:
            return redirect(url_for("index"))

    result = db.session().query(Order).join(OrderProduct).join(Product).filter(
        Order.id == order_id)

    return render_template("orders/show_order.html",
                           categories=all_categories(),
                           order_id=order_id,
                           rows=result)
Exemple #15
0
def orders_new():
    if admin() or "cart" not in session:
        return redirect(url_for("index"))

    if request.method == "GET":
        return render_template("orders/new_orders.html",
                               categories=all_categories(),
                               form=OrderFormNew())

    form = OrderFormNew(request.form)

    # Validoidaan syöte
    if not form.validate():
        return render_template("orders/new_orders.html",
                               categories=all_categories(),
                               form=form)

    # Luodaan uusi tilaus
    new_order = Order(form.address.data, form.postal_code.data, form.city.data,
                      current_user.id)
    new_order.completed = False

    db.session().add(new_order)
    db.session().commit()

    order_id = Order.query.order_by(Order.id.desc()).first().id

    for key in session["cart"]:
        orderProduct = OrderProduct(order_id, int(key),
                                    int(session["cart"][key]["amount"]))
        db.session().add(orderProduct)

    db.session().commit()

    session.pop("cart", None)

    return redirect(url_for("index", action_message="Tilaus lähetetty"))
Exemple #16
0
def products_update(product_id):
    if not current_user.is_admin:
        return redirect(url_for("index"))

    updateForm = ProductFormUpdate(request.form)
    updateForm.category.choices = [(c.id, c.name) for c in all_categories()]

    # Validoidaan syöte
    if not updateForm.validate():
        return render_template("products/update_products.html",
                               categories=all_categories(),
                               form=updateForm,
                               product_id=product_id)

    # Tarkistetaan lomakkeen kategorian olemassaolo
    if not category_id_exists(updateForm.category.data):
        updateForm.category.errors.append("Kategoriaa ei löytynyt")
        return render_template("products/update_products.html",
                               categories=all_categories(),
                               form=updateForm,
                               product_id=product_id)

    # Päivitetään tuote
    ctgr = db.session().query(Category).filter(
        Category.id == updateForm.category.data).first()
    product = db.session().query(Product).filter(
        Product.id == product_id).first()
    product.name = updateForm.name.data
    product.description = updateForm.description.data
    product.price = updateForm.price.data
    product.quantity = updateForm.quantity.data
    product.category_id = ctgr.id
    db.session().commit()

    return redirect(
        url_for("index", action_message="Päivitettiin tuote " + product.name))