diff --git a/fournée/core/admin.py b/fournée/core/admin.py index 49790d7..cf11929 100644 --- a/fournée/core/admin.py +++ b/fournée/core/admin.py @@ -155,7 +155,9 @@ class FournéeAdmin(nested_admin.NestedModelAdmin): Si elles ne le sont pas, on ajoute ce qui manque.""" for pâte_id, pâte_nom, pâte_ordre in ( obj.commande_set.values_list( - "réservation__pain__pâte", "réservation__pain__pâte__nom", "réservation__pain__pâte__ordre" + "réservation__pain__pâte", + "réservation__pain__pâte__nom", + "réservation__pain__pâte__ordre" ) .order_by("réservation__pain__pâte") .distinct() @@ -169,16 +171,21 @@ class FournéeAdmin(nested_admin.NestedModelAdmin): pâte_manquante = somme_commandée - somme_coulée if pâte_manquante > 0: obj.coulée_set.create( - pâte_id=pâte_id, quantité=pâte_manquante, ordre=pâte_ordre + pâte_id=pâte_id, + quantité=pâte_manquante, + ordre=pâte_ordre ) self.message_user( request, - f"Création d'une coulée de {pâte_manquante.normalize()} kg pour la pâte {pâte_nom}.", + f"Création d'une coulée de " + f"{pâte_manquante.normalize()} kg " + f"pour la pâte {pâte_nom}.", ) elif pâte_manquante < 0: self.message_user( request, - f"Attention la pâte {pâte_nom} est prévue en excès ({-pâte_manquante.normalize()} kg en trop)", + f"Attention la pâte {pâte_nom} est prévue " + f"en excès ({-pâte_manquante.normalize()} kg en trop)", messages.WARNING, ) @@ -216,7 +223,8 @@ class FournéeAdmin(nested_admin.NestedModelAdmin): ingrédients = c.pâte.ingrédient_set.values_list('nom', 'couleur') 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) + c.pâte.ingrédient_set.filter(nom=i) + .values_list("quantité", flat=True) )).quantize(Decimal('1.000')).normalize()) masse_coulée = sum( @@ -228,24 +236,42 @@ class FournéeAdmin(nested_admin.NestedModelAdmin): if masse_coulée == masse_commandée: problems = "" elif masse_coulée > masse_commandée: - problems = f"{(masse_coulée - masse_commandée).normalize()} kg coulés en trop !!" + 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 !!" + problems = ( + f"{(masse_commandée - masse_coulée).normalize()} " + "kg coulés en moins !!" + ) extra_context["coulées"].append([problems, ingrédients, quantités]) """ on créé un tableau total coulée / ingrédient """ - ingrédients = [models.Ingrédient.objects.filter(nom=nom).first() for nom in set(coulées.values_list("pâte__ingrédient__nom", flat=True))] + ingrédients = [ + models.Ingrédient.objects.filter(nom=nom).first() + for nom in set( + coulées.values_list("pâte__ingrédient__nom", flat=True) + ) + ] ingrédients.sort(key=lambda x: x.ordre) extra_context["ingrédients"] = ingrédients - pains = models.Pain.objects.filter(pk__in=obj.commande_set.exclude(réservation__isnull=True).values_list("pains", flat=True)).values_list("nom", flat=True) + pains = models.Pain.objects.filter( + pk__in=obj.commande_set.exclude(réservation__isnull=True) + .values_list("pains", flat=True) + ).values_list("nom", flat=True) totaux = [sum(obj.coulée_set.values_list('quantité', flat=True))] for i in ingrédients: total = sum([ qté * qté_unit / unit for qté, qté_unit, unit in obj.coulée_set.filter(pâte__ingrédient__nom=i.nom) - .values_list('quantité', 'pâte__ingrédient__quantité', 'pâte__poids_de_base') + .values_list( + 'quantité', + 'pâte__ingrédient__quantité', + 'pâte__poids_de_base', + ) ]).quantize(Decimal('1.000')).normalize() totaux.append(total) extra_context["totaux_coulées"] = totaux diff --git a/fournée/core/models.py b/fournée/core/models.py index 27bab73..2983021 100644 --- a/fournée/core/models.py +++ b/fournée/core/models.py @@ -15,8 +15,15 @@ class Fournée(models.Model): def masse_commandée(self, pâte_id): "Renvoie la masse commandée d'une pâte donnée" - poids_qté = self.commande_set.exclude(réservation=None).filter(réservation__pain__pâte_id=pâte_id).values('réservation__pain__poids', 'réservation__quantité') - return sum([c['réservation__quantité'] * c['réservation__pain__poids'] for c in poids_qté]) + poids_qté = ( + self.commande_set.exclude(réservation=None) + .filter(réservation__pain__pâte_id=pâte_id) + .values('réservation__pain__poids', 'réservation__quantité') + ) + return sum([ + c['réservation__quantité'] * c['réservation__pain__poids'] + for c in poids_qté + ]) class Ingrédient(models.Model): class Meta: