some small meal plan fixes
This commit is contained in:
parent
5c85369120
commit
ea472158f9
18
cookbook/migrations/0155_mealtype_default.py
Normal file
18
cookbook/migrations/0155_mealtype_default.py
Normal file
@ -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),
|
||||
),
|
||||
]
|
@ -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)
|
||||
|
@ -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()
|
||||
|
||||
|
@ -46,7 +46,8 @@
|
||||
<table class="table table-sm table-striped table-responsive-sm" style=" table-layout:fixed;">
|
||||
<thead class="thead-dark" style="background-image: url({% static 'assets/header.svg' %});">
|
||||
<tr>
|
||||
<th class="thead-blank" v-for="d in dates" style="width: 14.2%; text-align: center;">[[formatDateDayname(d)]]<br/>[[formatDateDay(d)]].
|
||||
<th class="thead-blank" v-for="d in dates" style="width: 14.2%; text-align: center;">
|
||||
[[formatDateDayname(d)]]<br/>[[formatDateDay(d)]].
|
||||
<button class="btn btn-sm btn-outline-secondary shadow-none" @click="addDayToShopping(d)"><i
|
||||
class="fas fa-cart-plus fa-sm"></i></button>
|
||||
</th>
|
||||
@ -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()
|
||||
]
|
||||
|
@ -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'
|
||||
)
|
||||
|
Loading…
Reference in New Issue
Block a user