mirror of
https://github.com/TandoorRecipes/recipes.git
synced 2026-01-01 04:10:06 -05:00
add to shopping from meal plan editor
This commit is contained in:
@@ -1104,6 +1104,7 @@ class MealPlanSerializer(SpacedModelSerializer, WritableNestedModelSerializer):
|
||||
servings = CustomDecimalField()
|
||||
shared = UserSerializer(many=True, required=False, allow_null=True)
|
||||
shopping = serializers.SerializerMethodField('in_shopping')
|
||||
addshopping = serializers.BooleanField(write_only=True)
|
||||
|
||||
to_date = serializers.DateTimeField(required=False)
|
||||
|
||||
@@ -1121,8 +1122,14 @@ class MealPlanSerializer(SpacedModelSerializer, WritableNestedModelSerializer):
|
||||
if 'to_date' not in validated_data or validated_data['to_date'] is None:
|
||||
validated_data['to_date'] = validated_data['from_date']
|
||||
|
||||
add_to_shopping = False
|
||||
try:
|
||||
add_to_shopping = validated_data.pop('addshopping', False)
|
||||
except KeyError:
|
||||
pass
|
||||
|
||||
mealplan = super().create(validated_data)
|
||||
if self.context['request'].data.get('addshopping', False) and self.context['request'].data.get('recipe', None):
|
||||
if add_to_shopping and self.context['request'].data.get('recipe', None):
|
||||
SLR = RecipeShoppingEditor(user=validated_data['created_by'], space=validated_data['space'])
|
||||
SLR.create(mealplan=mealplan, servings=validated_data['servings'])
|
||||
return mealplan
|
||||
@@ -1132,7 +1139,7 @@ class MealPlanSerializer(SpacedModelSerializer, WritableNestedModelSerializer):
|
||||
fields = (
|
||||
'id', 'title', 'recipe', 'servings', 'note', 'note_markdown',
|
||||
'from_date', 'to_date', 'meal_type', 'created_by', 'shared', 'recipe_name',
|
||||
'meal_type_name', 'shopping'
|
||||
'meal_type_name', 'shopping','addshopping'
|
||||
)
|
||||
read_only_fields = ('created_by',)
|
||||
|
||||
|
||||
@@ -120,37 +120,6 @@ def update_food_inheritance(sender, instance=None, created=False, **kwargs):
|
||||
child.save()
|
||||
|
||||
|
||||
@receiver(post_save, sender=MealPlan)
|
||||
def auto_add_shopping(sender, instance=None, created=False, weak=False, **kwargs):
|
||||
print("MEAL_AUTO_ADD Signal trying to auto add to shopping")
|
||||
if not instance:
|
||||
print("MEAL_AUTO_ADD Instance is none")
|
||||
return
|
||||
|
||||
try:
|
||||
space = instance.get_space()
|
||||
user = instance.get_owner()
|
||||
with scope(space=space):
|
||||
slr_exists = instance.shoppinglistrecipe_set.exists()
|
||||
|
||||
if not created and slr_exists:
|
||||
for x in instance.shoppinglistrecipe_set.all():
|
||||
# assuming that permissions checks for the MealPlan have happened upstream
|
||||
if instance.servings != x.servings:
|
||||
SLR = RecipeShoppingEditor(id=x.id, user=user, space=instance.space)
|
||||
SLR.edit_servings(servings=instance.servings)
|
||||
elif not user.userpreference.mealplan_autoadd_shopping or not instance.recipe:
|
||||
print("MEAL_AUTO_ADD No recipe or no setting")
|
||||
return
|
||||
|
||||
if created:
|
||||
SLR = RecipeShoppingEditor(user=user, space=space)
|
||||
SLR.create(mealplan=instance, servings=instance.servings)
|
||||
print("MEAL_AUTO_ADD Created SLR")
|
||||
except AttributeError:
|
||||
pass
|
||||
|
||||
|
||||
@receiver(post_save, sender=Unit)
|
||||
def clear_unit_cache(sender, instance=None, created=False, **kwargs):
|
||||
if instance:
|
||||
|
||||
Reference in New Issue
Block a user