Add basic output for nutritions.
This commit is contained in:
@ -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)
|
||||
|
@ -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}'
|
||||
|
@ -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) {
|
||||
|
Reference in New Issue
Block a user