diff --git a/cookbook/admin.py b/cookbook/admin.py index 7a3c68274..ec06a7baa 100644 --- a/cookbook/admin.py +++ b/cookbook/admin.py @@ -175,28 +175,7 @@ admin.site.register(ShareLink, ShareLinkAdmin) class NutritionInformationAdmin(admin.ModelAdmin): - list_display = ('created_by', 'created_at',) + list_display = ('id', 'created_by', 'created_at') admin.site.register(NutritionInformation, NutritionInformationAdmin) - - -class NutritionUnitAdmin(admin.ModelAdmin): - list_display = ('name', 'short', 'created_by', 'created_at',) - - -admin.site.register(NutritionUnit, NutritionUnitAdmin) - - -class NutritionTypeAdmin(admin.ModelAdmin): - list_display = ('type', 'unit', 'created_by', 'created_at',) - - -admin.site.register(NutritionType, NutritionTypeAdmin) - - -class NutritionValueAdmin(admin.ModelAdmin): - list_display = ('value', 'type', 'created_by', 'created_at',) - - -admin.site.register(NutritionValue, NutritionValueAdmin) diff --git a/cookbook/migrations/0089_auto_20201016_2358.py b/cookbook/migrations/0089_auto_20201016_2358.py deleted file mode 100644 index 24a55b3ce..000000000 --- a/cookbook/migrations/0089_auto_20201016_2358.py +++ /dev/null @@ -1,70 +0,0 @@ -# Generated by Django 3.1.1 on 2020-10-16 21:58 - -import datetime -from django.conf import settings -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ('cookbook', '0088_shoppinglist_finished'), - ] - - operations = [ - migrations.CreateModel( - name='NutritionType', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('type', models.CharField(max_length=128)), - ('created_at', models.DateTimeField(auto_now_add=True)), - ('created_by', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), - ], - ), - migrations.AlterField( - model_name='invitelink', - name='valid_until', - field=models.DateField(default=datetime.date(2020, 10, 30)), - ), - migrations.CreateModel( - name='NutritionValue', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('value', models.DecimalField(decimal_places=16, max_digits=32)), - ('created_at', models.DateTimeField(auto_now_add=True)), - ('created_by', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), - ('type', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='cookbook.nutritiontype')), - ], - ), - migrations.CreateModel( - name='NutritionUnit', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', models.CharField(max_length=128)), - ('short', models.CharField(max_length=16)), - ('created_at', models.DateTimeField(auto_now_add=True)), - ('created_by', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), - ], - ), - migrations.AddField( - model_name='nutritiontype', - name='unit', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='cookbook.nutritionunit'), - ), - migrations.CreateModel( - name='NutritionInformation', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('created_at', models.DateTimeField(auto_now_add=True)), - ('created_by', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), - ('nutritions', models.ManyToManyField(to='cookbook.NutritionValue')), - ], - ), - migrations.AddField( - model_name='recipe', - name='nutrition', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, to='cookbook.nutritioninformation'), - ), - ] diff --git a/cookbook/migrations/0089_auto_20201106_1655.py b/cookbook/migrations/0089_auto_20201106_1655.py new file mode 100644 index 000000000..ad8be711c --- /dev/null +++ b/cookbook/migrations/0089_auto_20201106_1655.py @@ -0,0 +1,40 @@ +# Generated by Django 3.1.1 on 2020-11-06 15:55 + +import datetime +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ('cookbook', '0088_shoppinglist_finished'), + ] + + operations = [ + migrations.AlterField( + model_name='invitelink', + name='valid_until', + field=models.DateField(default=datetime.date(2020, 11, 20)), + ), + migrations.CreateModel( + name='NutritionInformation', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('fats', models.DecimalField(decimal_places=16, default=0, max_digits=32)), + ('carbohydrates', models.DecimalField(decimal_places=16, default=0, max_digits=32)), + ('proteins', models.DecimalField(decimal_places=16, default=0, max_digits=32)), + ('calories', models.DecimalField(decimal_places=16, default=0, max_digits=32)), + ('source', models.CharField(blank=True, default='', max_length=512, null=True)), + ('created_at', models.DateTimeField(auto_now_add=True)), + ('created_by', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), + ], + ), + migrations.AddField( + model_name='recipe', + name='nutrition', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, to='cookbook.nutritioninformation'), + ), + ] diff --git a/cookbook/models.py b/cookbook/models.py index fae56f362..c8d6f60c7 100644 --- a/cookbook/models.py +++ b/cookbook/models.py @@ -181,38 +181,13 @@ class Step(models.Model): ordering = ['order', 'pk'] -class NutritionUnit(models.Model): - name = models.CharField(max_length=128) - short = models.CharField(max_length=16) - created_by = models.ForeignKey(User, on_delete=models.CASCADE) - created_at = models.DateTimeField(auto_now_add=True) - - def __str__(self): - return f'{self.name} ({self.short})' - - -class NutritionType(models.Model): - type = models.CharField(max_length=128) - unit = models.ForeignKey(NutritionUnit, on_delete=models.CASCADE) - created_by = models.ForeignKey(User, on_delete=models.CASCADE) - created_at = models.DateTimeField(auto_now_add=True) - - def __str__(self): - return f'{self.type}' - - -class NutritionValue(models.Model): - type = models.ForeignKey(NutritionType, on_delete=models.CASCADE) - value = models.DecimalField(max_digits=32, decimal_places=16) - created_by = models.ForeignKey(User, on_delete=models.CASCADE) - created_at = models.DateTimeField(auto_now_add=True) - - def __str__(self): - return f'{self.value} {self.type}' - - class NutritionInformation(models.Model): - nutritions = models.ManyToManyField(NutritionValue) + fats = models.DecimalField(default=0, decimal_places=16, max_digits=32) + carbohydrates = models.DecimalField(default=0, decimal_places=16, max_digits=32) + proteins = models.DecimalField(default=0, decimal_places=16, max_digits=32) + calories = models.DecimalField(default=0, decimal_places=16, max_digits=32) + source = models.CharField(max_length=512, default="", null=True, blank=True) + created_by = models.ForeignKey(User, on_delete=models.CASCADE) created_at = models.DateTimeField(auto_now_add=True) diff --git a/cookbook/serializer.py b/cookbook/serializer.py index d37c145d4..9ed0170a2 100644 --- a/cookbook/serializer.py +++ b/cookbook/serializer.py @@ -6,7 +6,7 @@ from rest_framework import serializers from rest_framework.exceptions import ValidationError from cookbook.models import MealPlan, MealType, Recipe, ViewLog, UserPreference, Storage, Sync, SyncLog, Keyword, Unit, Ingredient, Comment, RecipeImport, RecipeBook, RecipeBookEntry, ShareLink, CookLog, Food, Step, ShoppingList, \ - ShoppingListEntry, ShoppingListRecipe + ShoppingListEntry, ShoppingListRecipe, NutritionInformation from cookbook.templatetags.custom_tags import markdown @@ -263,3 +263,8 @@ class ViewLogSerializer(serializers.ModelSerializer): class Meta: model = ViewLog fields = '__all__' + +class NutritionInformationSerializer(serializers.ModelSerializer): + class Meta: + model = NutritionInformation + fields = '__all__' \ No newline at end of file diff --git a/cookbook/templates/recipe_view.html b/cookbook/templates/recipe_view.html index e94766e05..5baf672f3 100644 --- a/cookbook/templates/recipe_view.html +++ b/cookbook/templates/recipe_view.html @@ -215,21 +215,46 @@
| + {% trans Calories %} + | +{{ recipe.nutrition.calories|floatformat:2 }} | +kcal | +
| + {% trans Carbohydrates %} + | +{{ recipe.nutrition.carbohydrates|floatformat:2 }} | +g | +
| + {% trans Fats %} + | +{{ recipe.nutrition.fats|floatformat:2 }} | +g | +
| - {{ n.type.type }} + {% trans Proteins %} | -{{ n.value|floatformat:2 }} | -{{ n.type.unit.short }} | -
| {{ recipe.nutrition.proteins|floatformat:2 }} | +g | +|