From b9534f23f58fa7e52fb9e2aa3e92260ad8e67587 Mon Sep 17 00:00:00 2001 From: Raphael Michel Date: Mon, 12 Nov 2018 11:11:21 +0100 Subject: [PATCH] Delete add-ons explicitly --- src/pretix/base/services/orders.py | 1 + src/tests/presale/test_cart.py | 14 ++++++++++++++ 2 files changed, 15 insertions(+) diff --git a/src/pretix/base/services/orders.py b/src/pretix/base/services/orders.py index cf460b97f5..fadb544ff4 100644 --- a/src/pretix/base/services/orders.py +++ b/src/pretix/base/services/orders.py @@ -1024,6 +1024,7 @@ class OrderChangeManager: 'addon_to': opa.addon_to_id, 'old_price': opa.price, }) + opa.delete() self.order.log_action('pretix.event.order.changed.cancel', user=self.user, auth=self.auth, data={ 'position': op.position.pk, 'positionid': op.position.positionid, diff --git a/src/tests/presale/test_cart.py b/src/tests/presale/test_cart.py index 118fa9871f..f5ea46bdc4 100644 --- a/src/tests/presale/test_cart.py +++ b/src/tests/presale/test_cart.py @@ -1679,6 +1679,20 @@ class CartAddonTest(CartTestMixin, TestCase): } ]) + def test_remove_with_addons(self): + cp1 = CartPosition.objects.create( + expires=now() + timedelta(minutes=10), item=self.ticket, price=Decimal('23.00'), + event=self.event, cart_id=self.session_key + ) + cp2 = CartPosition.objects.create( + expires=now() + timedelta(minutes=10), item=self.workshop1, price=Decimal('12.00'), + event=self.event, cart_id=self.session_key, addon_to=cp1 + ) + self.cm.remove_item(cp1.pk) + self.cm.commit() + assert not CartPosition.objects.filter(pk=cp1.pk).exists() + assert not CartPosition.objects.filter(pk=cp2.pk).exists() + def test_remove_addons(self): cp1 = CartPosition.objects.create( expires=now() + timedelta(minutes=10), item=self.ticket, price=Decimal('23.00'),