mirror of
https://github.com/TandoorRecipes/recipes.git
synced 2026-01-09 08:08:24 -05:00
handle auto_onhand on bulkShoppingListEntry api
This commit is contained in:
@@ -1168,12 +1168,24 @@ class ShoppingListEntryViewSet(viewsets.ModelViewSet):
|
|||||||
@decorators.action(detail=False, methods=['POST'], serializer_class=ShoppingListEntryBulkSerializer, permission_classes=[CustomIsUser])
|
@decorators.action(detail=False, methods=['POST'], serializer_class=ShoppingListEntryBulkSerializer, permission_classes=[CustomIsUser])
|
||||||
def bulk(self, request):
|
def bulk(self, request):
|
||||||
serializer = self.serializer_class(data=request.data)
|
serializer = self.serializer_class(data=request.data)
|
||||||
|
|
||||||
if serializer.is_valid():
|
if serializer.is_valid():
|
||||||
ShoppingListEntry.objects.filter(Q(created_by=self.request.user)
|
print(serializer.validated_data)
|
||||||
| Q(created_by__in=list(self.request.user.get_shopping_share()))).filter(space=request.space, id__in=serializer.validated_data['ids']
|
bulk_entries = ShoppingListEntry.objects.filter(
|
||||||
).update(checked=serializer.validated_data['checked'],
|
Q(created_by=self.request.user) | Q(created_by__in=list(self.request.user.get_shopping_share()))
|
||||||
updated_at=timezone.now(),
|
).filter(space=request.space, id__in=serializer.validated_data['ids'])
|
||||||
)
|
bulk_entries.update(checked=(checked := serializer.validated_data['checked']), updated_at=timezone.now(), )
|
||||||
|
|
||||||
|
# update the onhand for food if shopping_add_onhand is True
|
||||||
|
if request.user.userpreference.shopping_add_onhand:
|
||||||
|
foods = Food.objects.filter(id__in=bulk_entries.values('food'))
|
||||||
|
if checked:
|
||||||
|
for f in foods:
|
||||||
|
f.onhand_users.add(*request.user.userpreference.shopping_share.all(), request.user)
|
||||||
|
elif checked == False:
|
||||||
|
for f in foods:
|
||||||
|
f.onhand_users.remove(*request.user.userpreference.shopping_share.all(), request.user)
|
||||||
|
|
||||||
return Response(serializer.data)
|
return Response(serializer.data)
|
||||||
else:
|
else:
|
||||||
return Response(serializer.errors, 400)
|
return Response(serializer.errors, 400)
|
||||||
|
|||||||
Reference in New Issue
Block a user