From 1fd0028351b0b55e5ad4290fd28dae9b51e3c3fc Mon Sep 17 00:00:00 2001 From: vabene1111 Date: Fri, 14 Mar 2025 14:07:33 +0100 Subject: [PATCH] shopping list fixes --- cookbook/helper/shopping_helper.py | 5 +++-- cookbook/serializer.py | 6 ++++-- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/cookbook/helper/shopping_helper.py b/cookbook/helper/shopping_helper.py index 098bd60d5..f41af4fb9 100644 --- a/cookbook/helper/shopping_helper.py +++ b/cookbook/helper/shopping_helper.py @@ -153,8 +153,9 @@ class RecipeShoppingEditor(): return True for sle in ShoppingListEntry.objects.filter(list_recipe=self._shopping_list_recipe): - sle.amount = sle.ingredient.amount * Decimal(self._servings_factor) - sle.save() + if sle.ingredient: # TODO temporarily dont scale manual entries until ingredient_amount or some other base amount has been migrated to SLE + sle.amount = sle.ingredient.amount * Decimal(self._servings_factor) + sle.save() self._shopping_list_recipe.servings = self.servings self._shopping_list_recipe.save() return True diff --git a/cookbook/serializer.py b/cookbook/serializer.py index 74ce4dfaa..ff8e8093f 100644 --- a/cookbook/serializer.py +++ b/cookbook/serializer.py @@ -1245,8 +1245,10 @@ class ShoppingListEntrySerializer(WritableNestedModelSerializer): validated_data['created_by'] = self.context['request'].user if 'mealplan_id' in validated_data: - slr, created = ShoppingListRecipe.objects.get_or_create(mealplan_id=validated_data['mealplan_id'], mealplan__space=self.context['request'].space) - validated_data['list_recipe'] = slr + if existing_slr := ShoppingListRecipe.objects.filter(mealplan_id=validated_data['mealplan_id'], space=self.context['request'].space).get(): + validated_data['list_recipe'] = existing_slr + else: + validated_data['list_recipe'] = ShoppingListRecipe.objects.create(mealplan_id=validated_data['mealplan_id'], space=self.context['request'].space, created_by=self.context['request'].user) del validated_data['mealplan_id'] return super().create(validated_data)