mirror of
https://github.com/almet/copanier.git
synced 2025-04-28 11:32:38 +02:00
Add a multi import mechanism
This commit is contained in:
parent
1794913997
commit
20df999dc0
2 changed files with 33 additions and 1 deletions
|
@ -1,4 +1,5 @@
|
|||
import csv
|
||||
from collections import defaultdict
|
||||
from pathlib import Path
|
||||
|
||||
import ujson as json
|
||||
|
@ -382,7 +383,31 @@ async def import_commande(request, response, id):
|
|||
delivery = Delivery.load(id)
|
||||
delivery.orders[email] = order
|
||||
delivery.persist()
|
||||
response.message(f"Yallah! La commande de {email} a bien été importée!")
|
||||
response.message(f"Yallah! La commande de {email} a bien été importée !")
|
||||
response.redirect = f"/livraison/{delivery.id}"
|
||||
|
||||
@app.route("/livraison/{id}/importer/commandes", methods=["POST"])
|
||||
@staff_only
|
||||
async def import_multiple_commands(request, response, id):
|
||||
reader = csv.DictReader(
|
||||
request.files.get("data").read().decode().splitlines(), delimiter=";"
|
||||
)
|
||||
orders = defaultdict(Order)
|
||||
|
||||
current_ref = None
|
||||
for row in reader:
|
||||
for label, value in row.items():
|
||||
if label == 'ref':
|
||||
current_ref = value
|
||||
else:
|
||||
wanted = int(value or 0)
|
||||
if wanted:
|
||||
orders[label].products[current_ref] = ProductOrder(wanted=wanted)
|
||||
delivery = Delivery.load(id)
|
||||
for email, order in orders.items():
|
||||
delivery.orders[email] = order
|
||||
delivery.persist()
|
||||
response.message(f"Yes ! Les commandes ont bien été importées !")
|
||||
response.redirect = f"/livraison/{delivery.id}"
|
||||
|
||||
|
||||
|
|
|
@ -9,4 +9,11 @@
|
|||
<input type="email" name="email" placeholder="email">
|
||||
<input type="submit" name="Importer">
|
||||
</form>
|
||||
|
||||
<h4>Importer plusieurs commandes</h4>
|
||||
<p>Colonnes: ref*, toto@domain.tld, etc.</p>
|
||||
<form action="/livraison/{{ delivery.id }}/importer/commandes" method="post" enctype="multipart/form-data">
|
||||
<input type="file" name="data">
|
||||
<input type="submit" name="Importer">
|
||||
</form>
|
||||
{% endblock modal_body %}
|
||||
|
|
Loading…
Reference in a new issue