From 5d8f9ad512d2b31c81751ffb8abb017758de19a6 Mon Sep 17 00:00:00 2001 From: Alexis Metaireau Date: Mon, 22 Apr 2019 15:11:52 +0200 Subject: [PATCH] Delivery edition --- copanier/__init__.py | 26 +++++++++---------- copanier/imports.py | 3 ++- copanier/templates/edit_delivery.html | 2 +- .../templates/includes/delivery_head.html | 2 +- 4 files changed, 16 insertions(+), 17 deletions(-) diff --git a/copanier/__init__.py b/copanier/__init__.py index 2158e07..0b4e568 100644 --- a/copanier/__init__.py +++ b/copanier/__init__.py @@ -204,27 +204,25 @@ async def import_products(request, response, id): delivery = Delivery.load(id) delivery.products = [] data = request.files.get("data") - path = f"/livraison/{delivery.id}" - if data.filename.endswith(".csv"): + error_path = f"/livraison/{delivery.id}/edit" + + if data.filename.endswith((".csv", ".xlsx")): try: - imports.products_from_csv(delivery, data.read().decode()) + if data.filename.endswith(".csv"): + imports.products_from_csv(delivery, data.read().decode()) + else: + imports.products_from_xlsx(delivery, data) except ValueError as err: - response.message(err, status="error") - response.redirect = path - return - elif data.filename.endswith(".xlsx"): - try: - imports.products_from_xlsx(delivery, data) - except ValueError as err: - response.message(err, status="error") - response.redirect = path + message = f"Impossible d'importer le fichier. {err.args[0]}" + response.message(message, status="error") + response.redirect = error_path return else: response.message("Format de fichier inconnu", status="error") - response.redirect = path + response.redirect = error_path return response.message("Les produits de la livraison ont bien été mis à jour!") - response.redirect = path + response.redirect = f"/livraison/{delivery.id}" @app.route("/livraison/{id}/exporter/produits", methods=["GET"]) diff --git a/copanier/imports.py b/copanier/imports.py index 752ffce..1697e3c 100644 --- a/copanier/imports.py +++ b/copanier/imports.py @@ -31,7 +31,8 @@ def products_from_xlsx(delivery, data): def products_from_csv(delivery, data): reader = csv.DictReader(data.splitlines(), delimiter=";") if not set(reader.fieldnames) >= PRODUCT_FIELDS: - raise ValueError("Colonnes obligatoires: name, ref, price") + raise ValueError("Colonnes obligatoires: name, ref, price. " + "Assurez-vous que le délimiteur soit bien «;»") delivery.products = [] for row in reader: delivery.products.append(Product(**row)) diff --git a/copanier/templates/edit_delivery.html b/copanier/templates/edit_delivery.html index 613d94d..24f681d 100644 --- a/copanier/templates/edit_delivery.html +++ b/copanier/templates/edit_delivery.html @@ -13,7 +13,7 @@