diff --git a/src/pretix/base/services/cart.py b/src/pretix/base/services/cart.py index 8ff5c0001..23021f283 100644 --- a/src/pretix/base/services/cart.py +++ b/src/pretix/base/services/cart.py @@ -1131,7 +1131,7 @@ def add_items_to_cart(self, event: int, items: List[dict], cart_id: str=None, lo @app.task(base=ProfiledEventTask, bind=True, max_retries=5, default_retry_delay=1, throws=(CartError,)) -def apply_voucher(self, event: Event, voucher: str, cart_id: str=None, locale='en') -> None: +def apply_voucher(self, event: Event, voucher: str, cart_id: str=None, locale='en', sales_channel='web') -> None: """ Removes a list of items from a user's cart. :param event: The event ID in question @@ -1141,7 +1141,7 @@ def apply_voucher(self, event: Event, voucher: str, cart_id: str=None, locale='e with language(locale): try: try: - cm = CartManager(event=event, cart_id=cart_id) + cm = CartManager(event=event, cart_id=cart_id, sales_channel=sales_channel) cm.apply_voucher(voucher) cm.commit() except LockTimeoutException: @@ -1151,7 +1151,7 @@ def apply_voucher(self, event: Event, voucher: str, cart_id: str=None, locale='e @app.task(base=ProfiledEventTask, bind=True, max_retries=5, default_retry_delay=1, throws=(CartError,)) -def remove_cart_position(self, event: Event, position: int, cart_id: str=None, locale='en') -> None: +def remove_cart_position(self, event: Event, position: int, cart_id: str=None, locale='en', sales_channel='web') -> None: """ Removes a list of items from a user's cart. :param event: The event ID in question @@ -1161,7 +1161,7 @@ def remove_cart_position(self, event: Event, position: int, cart_id: str=None, l with language(locale): try: try: - cm = CartManager(event=event, cart_id=cart_id) + cm = CartManager(event=event, cart_id=cart_id, sales_channel=sales_channel) cm.remove_item(position) cm.commit() except LockTimeoutException: @@ -1171,7 +1171,7 @@ def remove_cart_position(self, event: Event, position: int, cart_id: str=None, l @app.task(base=ProfiledEventTask, bind=True, max_retries=5, default_retry_delay=1, throws=(CartError,)) -def clear_cart(self, event: Event, cart_id: str=None, locale='en') -> None: +def clear_cart(self, event: Event, cart_id: str=None, locale='en', sales_channel='web') -> None: """ Removes a list of items from a user's cart. :param event: The event ID in question @@ -1180,7 +1180,7 @@ def clear_cart(self, event: Event, cart_id: str=None, locale='en') -> None: with language(locale): try: try: - cm = CartManager(event=event, cart_id=cart_id) + cm = CartManager(event=event, cart_id=cart_id, sales_channel=sales_channel) cm.clear() cm.commit() except LockTimeoutException: diff --git a/src/pretix/presale/views/cart.py b/src/pretix/presale/views/cart.py index 1efc6f092..2d6932d56 100644 --- a/src/pretix/presale/views/cart.py +++ b/src/pretix/presale/views/cart.py @@ -338,7 +338,8 @@ class CartApplyVoucher(EventViewMixin, CartActionMixin, AsyncAction, View): def post(self, request, *args, **kwargs): if 'voucher' in request.POST: - return self.do(self.request.event.id, request.POST.get('voucher'), get_or_create_cart_id(self.request), translation.get_language()) + return self.do(self.request.event.id, request.POST.get('voucher'), get_or_create_cart_id(self.request), + translation.get_language(), request.sales_channel.identifier) else: if 'ajax' in self.request.GET or 'ajax' in self.request.POST: return JsonResponse({ @@ -362,7 +363,8 @@ class CartRemove(EventViewMixin, CartActionMixin, AsyncAction, View): def post(self, request, *args, **kwargs): if 'id' in request.POST: - return self.do(self.request.event.id, request.POST.get('id'), get_or_create_cart_id(self.request), translation.get_language()) + return self.do(self.request.event.id, request.POST.get('id'), get_or_create_cart_id(self.request), + translation.get_language(), request.sales_channel.identifier) else: if 'ajax' in self.request.GET or 'ajax' in self.request.POST: return JsonResponse({ @@ -382,7 +384,8 @@ class CartClear(EventViewMixin, CartActionMixin, AsyncAction, View): return _('Your cart is now empty.') def post(self, request, *args, **kwargs): - return self.do(self.request.event.id, get_or_create_cart_id(self.request), translation.get_language()) + return self.do(self.request.event.id, get_or_create_cart_id(self.request), translation.get_language(), + request.sales_channel.identifier) @method_decorator(allow_cors_if_namespaced, 'dispatch')