créé un modèle fourniture et copie les données des ingrédients

This commit is contained in:
François Poulain 2024-05-14 10:00:02 +02:00
parent 00a8a28cfc
commit aecf03141d
4 changed files with 120 additions and 2 deletions

View File

@ -32,6 +32,16 @@ class PainAdmin(admin.ModelAdmin):
admin_site.register(models.Pain, PainAdmin)
class FournitureAdmin(admin.ModelAdmin):
list_display = ["nom", "ordre", "couleur"]
list_editable = ["ordre", "couleur"]
actions = None
save_as = True
admin_site.register(models.Fourniture, FournitureAdmin)
class IngrédientInline(admin.TabularInline):
model = models.Ingrédient
sortable_field_name = "ordre"

View File

@ -0,0 +1,55 @@
# Generated by Django 4.2.13 on 2024-05-14 07:23
import django.db.models.deletion
from django.db import migrations, models
import colorfield.fields
class Migration(migrations.Migration):
dependencies = [
("core", "0007_ingrédient_couleur"),
]
operations = [
migrations.CreateModel(
name="Fourniture",
fields=[
(
"id",
models.AutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
("nom", models.CharField(max_length=64)),
("ordre", models.SmallIntegerField(default=0)),
(
"couleur",
colorfield.fields.ColorField(
default="#000000", image_field=None, max_length=25, samples=None
),
),
],
options={
"ordering": ["ordre"],
},
),
migrations.AlterModelOptions(
name="ingrédient",
options={"ordering": ["fourniture__ordre", "-quantité"]},
),
migrations.AddField(
model_name="ingrédient",
name="fourniture",
field=models.ForeignKey(
blank=True,
on_delete=django.db.models.deletion.CASCADE,
null=True,
to="core.fourniture",
),
preserve_default=False,
),
]

View File

@ -0,0 +1,39 @@
# Generated by Django 4.2.13 on 2024-05-14 07:24
from django.db import migrations
def ingredients_vers_fournitures(apps, schema_editor):
Ingrédient = apps.get_model("core", "Ingrédient")
Fourniture = apps.get_model("core", "Fourniture")
for ingrédient in Ingrédient.objects.all():
fourniture, created = Fourniture.objects.get_or_create(
nom=ingrédient.nom,
defaults={
'ordre': ingrédient.ordre,
'couleur': ingrédient.couleur,
}
)
ingrédient.fourniture = fourniture
ingrédient.save()
def fournitures_vers_ingredients(apps, schema_editor):
Ingrédient = apps.get_model("core", "Ingrédient")
Fourniture = apps.get_model("core", "Fourniture")
for fourniture in Fourniture.objects.all():
ingrédients = Ingrédient.objects.filter(fourniture=fourniture)
ingrédients.update(
nom=fourniture.nom,
ordre=fourniture.ordre,
couleur=fourniture.couleur,
)
class Migration(migrations.Migration):
dependencies = [
("core", "0008_fourniture_alter_ingrédient_options_and_more"),
]
operations = [migrations.RunPython(ingredients_vers_fournitures, fournitures_vers_ingredients)]

View File

@ -25,18 +25,32 @@ class Fournée(models.Model):
for c in poids_qté
])
class Fourniture(models.Model):
class Meta:
ordering = ["ordre"]
nom = models.CharField(max_length=64)
ordre = models.SmallIntegerField(default=0)
couleur = ColorField(default='#000000')
def __str__(self):
return f"{self.nom}"
class Ingrédient(models.Model):
class Meta:
ordering = ["ordre", "-quantité"]
ordering = ["fourniture__ordre", "-quantité"]
recette = models.ForeignKey("Recette", on_delete=models.CASCADE)
nom = models.CharField(max_length=64)
fourniture = models.ForeignKey("Fourniture", on_delete=models.CASCADE, blank=True, null=True)
quantité = models.DecimalField(max_digits=6, decimal_places=3)
ordre = models.SmallIntegerField(default=0)
couleur = ColorField(default='#000000')
def __str__(self):
return f"{self.nom} ({self.quantité} kg)"
return f"{self.fourniture.nom} ({self.quantité} kg)"
class Recette(models.Model):