mirror of
https://github.com/almet/copanier.git
synced 2025-04-28 19:42:37 +02:00
Merge branch 'multiple-deliveries' into 'master'
Delivery edition See merge request ybon/copanier!11
This commit is contained in:
commit
d62ecbf0af
4 changed files with 16 additions and 17 deletions
|
@ -204,27 +204,25 @@ async def import_products(request, response, id):
|
||||||
delivery = Delivery.load(id)
|
delivery = Delivery.load(id)
|
||||||
delivery.products = []
|
delivery.products = []
|
||||||
data = request.files.get("data")
|
data = request.files.get("data")
|
||||||
path = f"/livraison/{delivery.id}"
|
error_path = f"/livraison/{delivery.id}/edit"
|
||||||
if data.filename.endswith(".csv"):
|
|
||||||
|
if data.filename.endswith((".csv", ".xlsx")):
|
||||||
try:
|
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:
|
except ValueError as err:
|
||||||
response.message(err, status="error")
|
message = f"Impossible d'importer le fichier. {err.args[0]}"
|
||||||
response.redirect = path
|
response.message(message, status="error")
|
||||||
return
|
response.redirect = error_path
|
||||||
elif data.filename.endswith(".xlsx"):
|
|
||||||
try:
|
|
||||||
imports.products_from_xlsx(delivery, data)
|
|
||||||
except ValueError as err:
|
|
||||||
response.message(err, status="error")
|
|
||||||
response.redirect = path
|
|
||||||
return
|
return
|
||||||
else:
|
else:
|
||||||
response.message("Format de fichier inconnu", status="error")
|
response.message("Format de fichier inconnu", status="error")
|
||||||
response.redirect = path
|
response.redirect = error_path
|
||||||
return
|
return
|
||||||
response.message("Les produits de la livraison ont bien été mis à jour!")
|
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"])
|
@app.route("/livraison/{id}/exporter/produits", methods=["GET"])
|
||||||
|
|
|
@ -31,7 +31,8 @@ def products_from_xlsx(delivery, data):
|
||||||
def products_from_csv(delivery, data):
|
def products_from_csv(delivery, data):
|
||||||
reader = csv.DictReader(data.splitlines(), delimiter=";")
|
reader = csv.DictReader(data.splitlines(), delimiter=";")
|
||||||
if not set(reader.fieldnames) >= PRODUCT_FIELDS:
|
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 = []
|
delivery.products = []
|
||||||
for row in reader:
|
for row in reader:
|
||||||
delivery.products.append(Product(**row))
|
delivery.products.append(Product(**row))
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
</label>
|
</label>
|
||||||
<label>
|
<label>
|
||||||
<p>Description des produits</p>
|
<p>Description des produits</p>
|
||||||
<input type="text" name="description" value="{{ delivery.description or '' }}" required>
|
<input type="text" name="description" value="{{ delivery.description or '' }}">
|
||||||
</label>
|
</label>
|
||||||
<label>
|
<label>
|
||||||
<p>Référent</p>
|
<p>Référent</p>
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
<ul class="delivery-head">
|
<ul class="delivery-head">
|
||||||
<li><i class="icon-basket"></i> <strong>Produits</strong> {{ delivery.description }}</li>
|
{% if delivery.description %}<li><i class="icon-basket"></i> <strong>Produits</strong> {{ delivery.description }}</li>{% endif %}
|
||||||
<li><i class="icon-streetsign"></i> <strong>Lieu</strong> {{ delivery.where }}</li>
|
<li><i class="icon-streetsign"></i> <strong>Lieu</strong> {{ delivery.where }}</li>
|
||||||
<li><i class="icon-strategy"></i> <strong>Référent</strong> <a href="mailto:{{ delivery.contact }}">{{ delivery.contact }}</a></li>
|
<li><i class="icon-strategy"></i> <strong>Référent</strong> <a href="mailto:{{ delivery.contact }}">{{ delivery.contact }}</a></li>
|
||||||
<li><i class="icon-clock"></i> <strong>Date de livraison</strong> <time datetime="{{ delivery.from_date }}">{{ delivery.from_date|date }} de {{ delivery.from_date|time }} à {{ delivery.to_date|time }}</time></li>
|
<li><i class="icon-clock"></i> <strong>Date de livraison</strong> <time datetime="{{ delivery.from_date }}">{{ delivery.from_date|date }} de {{ delivery.from_date|time }} à {{ delivery.to_date|time }}</time></li>
|
||||||
|
|
Loading…
Reference in a new issue