39 lines
2.1 KiB
Python
39 lines
2.1 KiB
Python
# Generated by Django 4.1.9 on 2023-05-25 13:06
|
|
|
|
from django.db import migrations
|
|
from django_scopes import scopes_disabled
|
|
from gettext import gettext as _
|
|
|
|
def migrate_old_nutrition_data(apps, schema_editor):
|
|
print('Transforming nutrition information, this might take a while on large databases')
|
|
with scopes_disabled():
|
|
PropertyType = apps.get_model('cookbook', 'PropertyType')
|
|
RecipeProperty = apps.get_model('cookbook', 'Property')
|
|
Recipe = apps.get_model('cookbook', 'Recipe')
|
|
Space = apps.get_model('cookbook', 'Space')
|
|
|
|
# TODO respect space
|
|
for s in Space.objects.all():
|
|
property_fat = PropertyType.objects.get_or_create(name=_('Fat'), unit=_('g'), space=s, )[0]
|
|
property_carbohydrates = PropertyType.objects.get_or_create(name=_('Carbohydrates'), unit=_('g'), space=s, )[0]
|
|
property_proteins = PropertyType.objects.get_or_create(name=_('Proteins'), unit=_('g'), space=s, )[0]
|
|
property_calories = PropertyType.objects.get_or_create(name=_('Calories'), unit=_('kcal'), space=s, )[0]
|
|
|
|
for r in Recipe.objects.filter(nutrition__isnull=False, space=s).all():
|
|
rp_fat = RecipeProperty.objects.create(property_type=property_fat, property_amount=r.nutrition.fats, space=s)
|
|
rp_carbohydrates = RecipeProperty.objects.create(property_type=property_carbohydrates, property_amount=r.nutrition.carbohydrates, space=s)
|
|
rp_proteins = RecipeProperty.objects.create(property_type=property_proteins, property_amount=r.nutrition.proteins, space=s)
|
|
rp_calories = RecipeProperty.objects.create(property_type=property_calories, property_amount=r.nutrition.calories, space=s)
|
|
r.properties.add(rp_fat, rp_carbohydrates, rp_proteins, rp_calories)
|
|
r.nutrition = None
|
|
r.save()
|
|
class Migration(migrations.Migration):
|
|
|
|
dependencies = [
|
|
('cookbook', '0189_property_propertytype_unitconversion_food_fdc_id_and_more'),
|
|
]
|
|
|
|
operations = [
|
|
migrations.RunPython(migrate_old_nutrition_data)
|
|
]
|