Merge branch 'multiple-deliveries' into 'master'

Delivery edition

See merge request ybon/copanier!11
This commit is contained in:
Alexis Metaireau 2019-04-22 15:11:53 +02:00
commit d62ecbf0af
4 changed files with 16 additions and 17 deletions

View file

@ -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}"
error_path = f"/livraison/{delivery.id}/edit"
if data.filename.endswith((".csv", ".xlsx")):
try:
if data.filename.endswith(".csv"):
try:
imports.products_from_csv(delivery, data.read().decode())
except ValueError as err:
response.message(err, status="error")
response.redirect = path
return
elif data.filename.endswith(".xlsx"):
try:
else:
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"])

View file

@ -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))

View file

@ -13,7 +13,7 @@
</label>
<label>
<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>
<p>Référent</p>

View file

@ -1,5 +1,5 @@
<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-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>