diff --git a/fournée/core/admin.py b/fournée/core/admin.py index a41cb4e..2149ce2 100644 --- a/fournée/core/admin.py +++ b/fournée/core/admin.py @@ -38,7 +38,14 @@ class DocumentInline(admin.TabularInline): class FournitureAdmin(admin.ModelAdmin): - list_display = ["nom", "ordre", "couleur", "conditionnement", "emballage"] + list_display = [ + "nom", + "ordre", + "couleur", + "conditionnement", + "emballage", + "consommation", + ] list_editable = ["ordre", "couleur", "conditionnement", "emballage"] inlines = [ DocumentInline, @@ -46,6 +53,10 @@ class FournitureAdmin(admin.ModelAdmin): actions = None save_as = True + @admin.display + def consommation(self, obj): + return obj.consommation() + admin_site.register(models.Fourniture, FournitureAdmin) diff --git a/fournée/core/models.py b/fournée/core/models.py index 78d3a18..189cb0a 100644 --- a/fournée/core/models.py +++ b/fournée/core/models.py @@ -1,3 +1,4 @@ +import datetime from uuid import uuid4 from django.db import models @@ -61,6 +62,30 @@ class Fourniture(models.Model): def __str__(self): return f"{self.nom}" + def consommation(self): + """Renvois la consommation de la semaine passée""" + today = datetime.date.today() + sevendays = datetime.timedelta(days=7) + fournées = Fournée.objects.filter(date__gte=today-sevendays) + coulées_id = fournées.values('coulée') + quantités_coulées = [ + q * pi / pb + for pi, pb, q in Ingrédient.objects.filter( + recette__coulée__in=coulées_id, fourniture=self + ).values_list( + 'recette__coulée__quantité', + 'recette__poids_de_base', + 'quantité', + )] + quantité = clean(sum(quantités_coulées)) if quantités_coulées else 0 + r = f"{quantité} kg" + if quantité and self.conditionnement: + r += ( + f" soit {clean(quantité/self.conditionnement)} " + + f"{self.emballage}" + ) + return r + class Ingrédient(models.Model): class Meta: