mirror of
https://github.com/almet/copanier.git
synced 2025-04-28 19:42:37 +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
|
import csv
|
||||||
|
from collections import defaultdict
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
||||||
import ujson as json
|
import ujson as json
|
||||||
|
@ -382,7 +383,31 @@ async def import_commande(request, response, id):
|
||||||
delivery = Delivery.load(id)
|
delivery = Delivery.load(id)
|
||||||
delivery.orders[email] = order
|
delivery.orders[email] = order
|
||||||
delivery.persist()
|
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}"
|
response.redirect = f"/livraison/{delivery.id}"
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -9,4 +9,11 @@
|
||||||
<input type="email" name="email" placeholder="email">
|
<input type="email" name="email" placeholder="email">
|
||||||
<input type="submit" name="Importer">
|
<input type="submit" name="Importer">
|
||||||
</form>
|
</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 %}
|
{% endblock modal_body %}
|
||||||
|
|
Loading…
Reference in a new issue