From 8831ae1b167566af2a3c335838f78dedfea3cfbc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Poulain?= Date: Sun, 12 May 2024 19:20:15 +0200 Subject: [PATCH] =?UTF-8?q?feat(fourn=C3=A9e):=20s=C3=A9pare=20les=20coul?= =?UTF-8?q?=C3=A9es=20pour=20une=20meilleur=20pr=C3=A9sentation=20des=20fo?= =?UTF-8?q?urn=C3=A9e=20complexes?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- fournée/core/admin.py | 43 +++++++++---------- .../templates/admin/fournée_change_form.html | 40 +++++++++++------ 2 files changed, 49 insertions(+), 34 deletions(-) diff --git a/fournée/core/admin.py b/fournée/core/admin.py index 3936e06..9a77d84 100644 --- a/fournée/core/admin.py +++ b/fournée/core/admin.py @@ -208,29 +208,17 @@ class FournéeAdmin(nested_admin.NestedModelAdmin): obj = self.model.objects.get(pk=object_id) extra_context["commandes"] = obj.commande_set.all() coulées = obj.coulée_set.all() - ingrédients = sorted( - set( - coulées.values_list( - "pâte__ingrédient__nom", "pâte__ingrédient__ordre" - ) - ), - key=lambda x: x[1], - ) - extra_context["ingrédients"] = ingrédients - """ on créé un tableau coulée / ingrédient """ + """ on créé les tableaux coulée / ingrédient """ extra_context["coulées"] = [] for c in obj.coulée_set.all(): - tmp = [c] - for i, _ in ingrédients: - if c.pâte.ingrédient_set.filter(nom=i).exists(): - tmp.append( - (c.quantité / c.pâte.poids_de_base * sum( - c.pâte.ingrédient_set.filter(nom=i).values_list("quantité", flat=True) - )).quantize(Decimal('1.000')).normalize() - ) - else: - tmp.append("") + quantités = [c, ] + ingrédients = c.pâte.ingrédient_set.values_list('nom', flat=True) + for i in ingrédients: + quantités.append((c.quantité / c.pâte.poids_de_base * sum( + c.pâte.ingrédient_set.filter(nom=i).values_list("quantité", flat=True) + )).quantize(Decimal('1.000')).normalize()) + masse_coulée = sum( obj.coulée_set.filter(pâte=c.pâte).values_list( "quantité", flat=True @@ -243,9 +231,20 @@ class FournéeAdmin(nested_admin.NestedModelAdmin): problems = f"{(masse_coulée - masse_commandée).normalize()} kg coulés en trop !!" elif masse_coulée < masse_commandée: problems = f"{(masse_commandée - masse_coulée).normalize()} kg coulés en moins !!" - extra_context["coulées"].append([problems, tmp]) - pains = set(obj.commande_set.exclude(réservation__isnull=True).values_list("pains__nom", flat=True)) + extra_context["coulées"].append([problems, ingrédients, quantités]) + """ on créé un tableau total coulée / ingrédient """ + ingrédients = sorted( + set( + coulées.values_list( + "pâte__ingrédient__nom", "pâte__ingrédient__ordre" + ) + ), + key=lambda x: x[1], + ) + extra_context["ingrédients"] = ingrédients + + pains = set(obj.commande_set.exclude(réservation__isnull=True).values_list("pains__nom", flat=True)) totaux = [] for i, _ in ingrédients: total = sum([ diff --git a/fournée/templates/admin/fournée_change_form.html b/fournée/templates/admin/fournée_change_form.html index 6770cc4..60fda79 100644 --- a/fournée/templates/admin/fournée_change_form.html +++ b/fournée/templates/admin/fournée_change_form.html @@ -27,26 +27,42 @@ {{ i }} {% endfor %} + + Totaux {% for p in totaux_coulées %} {{ p }} {% endfor %} - - - {% for problems, coulée in coulées %} - - {% for i in coulée %} - {% if forloop.first %}{% else %}{% endif %} - {{ i }} - {% if forloop.first %}{% if problems %} ({{ problems }}){% endif %}{% else %}{% endif %} - {% endfor %} - - {% endfor %} -

+
+ {% for problems, ingrédients, quantités in coulées %} +

{{ quantités.0 }}{% if problems %} ({{ problems }}){% endif %}

+ + + + + {% for i in ingrédients %} + + {% endfor %} + + + + + {% for q in quantités %} + {% if forloop.first %} + + {% else %} + + {% endif %} + {% endfor %} + + +
{{ i }}
{{ q.pâte.nom }}{{ q }}
+ {% endfor %} +
{% endif %} {% if divisions %}