Add basic output for nutritions.

This commit is contained in:
Sebastian Markgraf
2020-10-16 23:44:18 +02:00
parent 368d631602
commit 2b1cde2efc
3 changed files with 55 additions and 43 deletions

View File

@ -175,7 +175,7 @@ admin.site.register(ShareLink, ShareLinkAdmin)
class NutritionInformationAdmin(admin.ModelAdmin):
list_display = ('recipe', 'created_by', 'created_at',)
list_display = ('created_by', 'created_at',)
admin.site.register(NutritionInformation, NutritionInformationAdmin)
@ -196,7 +196,7 @@ admin.site.register(NutritionType, NutritionTypeAdmin)
class NutritionValueAdmin(admin.ModelAdmin):
list_display = ('information', 'value', 'type', 'created_by', 'created_at',)
list_display = ('value', 'type', 'created_by', 'created_at',)
admin.site.register(NutritionValue, NutritionValueAdmin)

View File

@ -181,6 +181,45 @@ 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)
created_by = models.ForeignKey(User, on_delete=models.CASCADE)
created_at = models.DateTimeField(auto_now_add=True)
def __str__(self):
return f'Nutrition'
class Recipe(models.Model):
name = models.CharField(max_length=128)
image = models.ImageField(upload_to='recipes/', blank=True, null=True)
@ -194,6 +233,7 @@ class Recipe(models.Model):
working_time = models.IntegerField(default=0)
waiting_time = models.IntegerField(default=0)
internal = models.BooleanField(default=False)
nutrition = models.ForeignKey(NutritionInformation, blank=True, null=True, on_delete=models.PROTECT)
created_by = models.ForeignKey(User, on_delete=models.PROTECT)
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
@ -361,43 +401,3 @@ class ViewLog(models.Model):
def __str__(self):
return self.recipe.name
class NutritionInformation(models.Model):
recipe = models.ForeignKey(Recipe, 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'Nutrition {self.recipe}'
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):
information = models.ForeignKey(NutritionInformation, on_delete=models.CASCADE)
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}'

View File

@ -205,6 +205,17 @@
{% endif %}
</div>
{% if recipe.nutrition %}
<div>
<hr>
<h3>{% trans 'Nutrition' %}</h3>
{% for n in recipe.nutrition.nutritions.all %}
{{ n.type.type }}: {{ n.value|floatformat:2 }} {{ n.type.unit.short }}
{% endfor %}
</div>
{% endif %}
<div v-if="recipe !== undefined && recipe.steps.length > 0">
<hr>
<h3>{% trans 'Instructions' %}</h3>
@ -472,7 +483,8 @@
this.$http.get("{% url 'api:recipe-detail' recipe.pk %}" {% if share %}
+ "?share={{ share }}"{% endif %}).then((response) => {
this.recipe = response.data;
this.loading = false
console.log(this.recipe);
this.loading = false;
for (let step of this.recipe.steps) {
if (step.ingredients.length > 0) {