Replace Item.hidden_if_available with relationship to other Item (#3686)

* draft

* Implementation that is closer to old one

* Fix tests

* Add tests

* Update src/pretix/control/forms/item.py

Co-authored-by: Richard Schreiber <schreiber@rami.io>

* Review notes

---------

Co-authored-by: Richard Schreiber <schreiber@rami.io>
This commit is contained in:
Raphael Michel
2023-11-06 13:26:32 +01:00
committed by GitHub
parent 3d68c83907
commit 3af2342d7b
15 changed files with 235 additions and 54 deletions

View File

@@ -3336,6 +3336,33 @@ class CheckoutTestCase(BaseCheckoutTestCase, TestCase):
assert 'Workshop 1' in response.content.decode()
assert 'Workshop 2' in response.content.decode()
def test_set_addons_hidden_if_item_available(self):
with scopes_disabled():
self.workshopquota2 = Quota.objects.create(event=self.event, name='Workshop 1', size=5)
self.workshopquota2.items.add(self.workshop2)
self.workshopquota2.variations.add(self.workshop2a)
self.workshop2.hidden_if_item_available = self.workshop1
self.workshop2.save()
ItemAddOn.objects.create(base_item=self.ticket, addon_category=self.workshopcat, min_count=1)
CartPosition.objects.create(
event=self.event, cart_id=self.session_key, item=self.ticket,
price=23, expires=now() - timedelta(minutes=10)
)
response = self.client.get('/%s/%s/checkout/questions/' % (self.orga.slug, self.event.slug), follow=True)
self.assertRedirects(response, '/%s/%s/checkout/addons/' % (self.orga.slug, self.event.slug),
target_status_code=200)
assert 'Workshop 1' in response.content.decode()
assert 'Workshop 2' not in response.content.decode()
self.workshopquota.size = 0
self.workshopquota.save()
response = self.client.get('/%s/%s/checkout/addons/' % (self.orga.slug, self.event.slug), follow=True)
assert 'Workshop 1' in response.content.decode()
assert 'Workshop 2' in response.content.decode()
def test_set_addons_subevent(self):
with scopes_disabled():
self.event.has_subevents = True