mirror of
https://github.com/TandoorRecipes/recipes.git
synced 2026-01-09 16:18:00 -05:00
added migration for existing nutrition information
This commit is contained in:
@@ -15,7 +15,7 @@ from .models import (BookmarkletImport, Comment, CookLog, Food, FoodInheritField
|
|||||||
Recipe, RecipeBook, RecipeBookEntry, RecipeImport, SearchPreference, ShareLink,
|
Recipe, RecipeBook, RecipeBookEntry, RecipeImport, SearchPreference, ShareLink,
|
||||||
ShoppingList, ShoppingListEntry, ShoppingListRecipe, Space, Step, Storage,
|
ShoppingList, ShoppingListEntry, ShoppingListRecipe, Space, Step, Storage,
|
||||||
Supermarket, SupermarketCategory, SupermarketCategoryRelation, Sync, SyncLog,
|
Supermarket, SupermarketCategory, SupermarketCategoryRelation, Sync, SyncLog,
|
||||||
TelegramBot, Unit, UserFile, UserPreference, ViewLog, Automation, UserSpace, UnitConversion, PropertyType, FoodProperty)
|
TelegramBot, Unit, UserFile, UserPreference, ViewLog, Automation, UserSpace, UnitConversion, PropertyType, FoodProperty, RecipeProperty)
|
||||||
|
|
||||||
|
|
||||||
class CustomUserAdmin(UserAdmin):
|
class CustomUserAdmin(UserAdmin):
|
||||||
@@ -327,11 +327,11 @@ class ShareLinkAdmin(admin.ModelAdmin):
|
|||||||
admin.site.register(ShareLink, ShareLinkAdmin)
|
admin.site.register(ShareLink, ShareLinkAdmin)
|
||||||
|
|
||||||
|
|
||||||
class FoodPropertyTypeAdmin(admin.ModelAdmin):
|
class PropertyTypeAdmin(admin.ModelAdmin):
|
||||||
list_display = ('id', 'name')
|
list_display = ('id', 'name')
|
||||||
|
|
||||||
|
|
||||||
admin.site.register(PropertyType, FoodPropertyTypeAdmin)
|
admin.site.register(PropertyType, PropertyTypeAdmin)
|
||||||
|
|
||||||
|
|
||||||
class FoodPropertyAdmin(admin.ModelAdmin):
|
class FoodPropertyAdmin(admin.ModelAdmin):
|
||||||
@@ -341,6 +341,13 @@ class FoodPropertyAdmin(admin.ModelAdmin):
|
|||||||
admin.site.register(FoodProperty, FoodPropertyAdmin)
|
admin.site.register(FoodProperty, FoodPropertyAdmin)
|
||||||
|
|
||||||
|
|
||||||
|
class RecipePropertyAdmin(admin.ModelAdmin):
|
||||||
|
list_display = ('id', 'property_type', 'property_amount',)
|
||||||
|
|
||||||
|
|
||||||
|
admin.site.register(RecipeProperty, RecipePropertyAdmin)
|
||||||
|
|
||||||
|
|
||||||
class NutritionInformationAdmin(admin.ModelAdmin):
|
class NutritionInformationAdmin(admin.ModelAdmin):
|
||||||
list_display = ('id',)
|
list_display = ('id',)
|
||||||
|
|
||||||
|
|||||||
40
cookbook/migrations/0190_auto_20230506_2239.py
Normal file
40
cookbook/migrations/0190_auto_20230506_2239.py
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
# Generated by Django 4.1.7 on 2023-05-06 20:39
|
||||||
|
|
||||||
|
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', 'RecipeProperty')
|
||||||
|
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_foodproperty_propertytype_recipeproperty_and_more'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.RunPython(migrate_old_nutrition_data)
|
||||||
|
]
|
||||||
Reference in New Issue
Block a user