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))
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)
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))
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)
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)
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)
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)
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)
def categories_new(): if not admin(): return redirect(url_for("index")) return render_template("categories/new_categories.html", categories=all_categories(), form=CategoryFormNew())
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)
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)
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"))
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")
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)
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"))
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))