From 5a9c760633e52e310035ce455ab62c1d07d4bfe1 Mon Sep 17 00:00:00 2001 From: Raphael Michel Date: Sat, 17 Sep 2016 23:42:23 +0200 Subject: [PATCH] Fixed bug when modifying an expired cart including a voucher --- src/pretix/base/services/cart.py | 2 +- src/tests/presale/test_cart.py | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/pretix/base/services/cart.py b/src/pretix/base/services/cart.py index 342562efbc..a504610619 100644 --- a/src/pretix/base/services/cart.py +++ b/src/pretix/base/services/cart.py @@ -61,7 +61,7 @@ def _re_add_expired_positions(items: List[dict], event: Event, cart_id: str, now 'count': 1, 'price': cp.price, 'cp': cp, - 'voucher': cp.voucher + 'voucher': cp.voucher.code }) positions.add(cp) return positions diff --git a/src/tests/presale/test_cart.py b/src/tests/presale/test_cart.py index 58d300622f..61c885d2be 100644 --- a/src/tests/presale/test_cart.py +++ b/src/tests/presale/test_cart.py @@ -450,6 +450,18 @@ class CartTest(CartTestMixin, TestCase): self.assertIsNone(objs[0].variation) self.assertEqual(objs[0].price, 23) + def test_voucher_expired_readd(self): + v = Voucher.objects.create(item=self.ticket, event=self.event, block_quota=True) + cp1 = CartPosition.objects.create( + event=self.event, cart_id=self.session_key, item=self.ticket, + price=23, expires=now() - timedelta(minutes=10), voucher=v + ) + self.client.post('/%s/%s/cart/add' % (self.orga.slug, self.event.slug), { + 'variation_%d_%d' % (self.shirt.id, self.shirt_red.id): '1' + }, follow=True) + obj = CartPosition.objects.get(id=cp1.id) + self.assertGreater(obj.expires, now()) + def test_voucher_variation(self): v = Voucher.objects.create(item=self.shirt, variation=self.shirt_red, event=self.event) self.client.post('/%s/%s/cart/add' % (self.orga.slug, self.event.slug), {