Place order: merge GET and POST views

This commit is contained in:
Yohan Boniface 2019-03-24 17:03:31 +01:00
parent 59783879b6
commit 0480cc585a

View file

@ -220,33 +220,7 @@ async def view_delivery(request, response, id):
response.html("delivery.html", {"delivery": delivery}) response.html("delivery.html", {"delivery": delivery})
@app.route("/livraison/{id}/commander", methods=["GET"]) @app.route("/livraison/{id}/commander", methods=["POST", "GET"])
@auth_required
async def order_form(request, response, id):
delivery = Delivery.load(id)
email = request.query.get("email", None)
if not email:
user = session.user.get(None)
if user:
email = user.email
if email:
order = delivery.orders.get(email) or Order()
response.html(
"place_order.html", {"delivery": delivery, "person": email, "order": order}
)
else:
response.message("Impossible de comprendre pour qui passer commande…", "error")
response.redirect = request.path
@app.route("/livraison/{id}/émargement", methods=["GET"])
@auth_required
async def signing_sheet(request, response, id):
delivery = Delivery.load(id)
response.html("signing_sheet.html", {"delivery": delivery})
@app.route("/livraison/{id}/commander", methods=["POST"])
@auth_required @auth_required
async def place_order(request, response, id): async def place_order(request, response, id):
delivery = Delivery.load(id) delivery = Delivery.load(id)
@ -255,18 +229,35 @@ async def place_order(request, response, id):
user = session.user.get(None) user = session.user.get(None)
if user: if user:
email = user.email email = user.email
order = Order() if not email:
form = request.form response.message("Impossible de comprendre pour qui passer commande…", "error")
for product in delivery.products: response.redirect = request.path
quantity = form.int(product.ref, 0) return
if quantity: if request.method == "POST":
order.products[product.ref] = ProductOrder(wanted=quantity) form = request.form
if not delivery.orders: order = Order()
delivery.orders = {} for product in delivery.products:
delivery.orders[email] = order quantity = form.int(product.ref, 0)
delivery.persist() if quantity:
response.message("Jour de fête! Votre commande a bien été prise en compte!") order.products[product.ref] = ProductOrder(wanted=quantity)
response.redirect = request.url.decode() if not delivery.orders:
delivery.orders = {}
delivery.orders[email] = order
delivery.persist()
response.message("Jour de fête! Votre commande a bien été prise en compte!")
response.redirect = request.path
else:
order = delivery.orders.get(email) or Order()
response.html(
"place_order.html", {"delivery": delivery, "person": email, "order": order}
)
@app.route("/livraison/{id}/émargement", methods=["GET"])
@auth_required
async def signing_sheet(request, response, id):
delivery = Delivery.load(id)
response.html("signing_sheet.html", {"delivery": delivery})
@app.route("/livraison/{id}/importer/commande", methods=["POST"]) @app.route("/livraison/{id}/importer/commande", methods=["POST"])