diff --git a/cookbook/migrations/0155_mealtype_default.py b/cookbook/migrations/0155_mealtype_default.py new file mode 100644 index 000000000..6519916eb --- /dev/null +++ b/cookbook/migrations/0155_mealtype_default.py @@ -0,0 +1,18 @@ +# Generated by Django 3.2.7 on 2021-09-23 11:38 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('cookbook', '0154_auto_20210922_1705'), + ] + + operations = [ + migrations.AddField( + model_name='mealtype', + name='default', + field=models.BooleanField(blank=True, default=False), + ), + ] diff --git a/cookbook/models.py b/cookbook/models.py index b0780bfa5..29538743b 100644 --- a/cookbook/models.py +++ b/cookbook/models.py @@ -598,6 +598,7 @@ class MealType(models.Model, PermissionModelMixin): order = models.IntegerField(default=0) icon = models.CharField(max_length=16, blank=True, null=True) color = models.CharField(max_length=7, blank=True, null=True) + default = models.BooleanField(default=False, blank=True) created_by = models.ForeignKey(User, on_delete=models.CASCADE) space = models.ForeignKey(Space, on_delete=models.CASCADE) diff --git a/cookbook/serializer.py b/cookbook/serializer.py index a60f82fd6..573980250 100644 --- a/cookbook/serializer.py +++ b/cookbook/serializer.py @@ -64,7 +64,7 @@ class SpacedModelSerializer(serializers.ModelSerializer): return super().create(validated_data) -class MealTypeSerializer(SpacedModelSerializer): +class MealTypeSerializer(SpacedModelSerializer, WritableNestedModelSerializer): def create(self, validated_data): validated_data['created_by'] = self.context['request'].user @@ -73,7 +73,7 @@ class MealTypeSerializer(SpacedModelSerializer): class Meta: list_serializer_class = SpaceFilterSerializer model = MealType - fields = ('id', 'name', 'order', 'icon', 'color', 'created_by') + fields = ('id', 'name', 'order', 'icon', 'color', 'default', 'created_by') read_only_fields = ('created_by',) @@ -561,7 +561,7 @@ class MealPlanSerializer(SpacedModelSerializer, WritableNestedModelSerializer): recipe = RecipeOverviewSerializer(required=False, allow_null=True) recipe_name = serializers.ReadOnlyField(source='recipe.name') meal_type = MealTypeSerializer() - meal_type_name = serializers.ReadOnlyField(source='meal_type.name') + meal_type_name = serializers.ReadOnlyField(source='meal_type.name') # TODO deprecate once old meal plan was removed note_markdown = serializers.SerializerMethodField('get_note_markdown') servings = CustomDecimalField() diff --git a/cookbook/templates/meal_plan.html b/cookbook/templates/meal_plan.html index 500631e9d..0979c40fa 100644 --- a/cookbook/templates/meal_plan.html +++ b/cookbook/templates/meal_plan.html @@ -46,7 +46,8 @@
| [[formatDateDayname(d)]] [[formatDateDay(d)]]. + |
+ [[formatDateDayname(d)]] [[formatDateDay(d)]]. |
@@ -460,7 +461,7 @@
this.$set(mte, 'delete', false)
}
- if (this.meal_types.length === 0){
+ if (this.meal_types.length === 0) {
this.makeToast(gettext('Information'), gettext('To use the meal plan please first create at least one meal plan type.'), 'warning')
}
}).catch((err) => {
@@ -552,8 +553,7 @@
let plan_entry = evt.added.element
plan_entry.date = date
- plan_entry.meal_type.id = meal_type.id
- plan_entry.meal_type.name = meal_type.name
+ plan_entry.meal_type = meal_type
plan_entry.meal_type_name = meal_type.name
if (plan_entry.is_new) { // its not a meal plan object
@@ -585,7 +585,7 @@
this.makeToast(gettext('Error'), gettext('There was an error loading a resource!') + err.bodyText, 'danger')
})
},
- removeDuplicates: function(data, key) {
+ removeDuplicates: function (data, key) {
return [
...new Map(data.map(item => [key(item), item])).values()
]
diff --git a/cookbook/tests/api/test_api_meal_plan.py b/cookbook/tests/api/test_api_meal_plan.py
index 773154c62..cf5841622 100644
--- a/cookbook/tests/api/test_api_meal_plan.py
+++ b/cookbook/tests/api/test_api_meal_plan.py
@@ -105,7 +105,7 @@ def test_add(arg, request, u1_s2, recipe_1_s1, meal_type):
c = request.getfixturevalue(arg[0])
r = c.post(
reverse(LIST_URL),
- {'recipe': {'id': recipe_1_s1.id, 'name': recipe_1_s1.name, 'keywords': []}, 'meal_type': meal_type.id,
+ {'recipe': {'id': recipe_1_s1.id, 'name': recipe_1_s1.name, 'keywords': []}, 'meal_type': {'id': meal_type.id, 'name': meal_type.name},
'date': (datetime.now()).strftime("%Y-%m-%d"), 'servings': 1, 'title': 'test'},
content_type='application/json'
)
|---|