mirror of
https://github.com/pretix/pretix.git
synced 2026-05-04 15:04:03 +00:00
Allow to hide products that require membership (#2240)
Co-authored-by: Richard Schreiber <schreiber@rami.io>
This commit is contained in:
@@ -288,6 +288,7 @@ TEST_ITEM_RES = {
|
||||
"day": "Tuesday"
|
||||
},
|
||||
"require_membership": False,
|
||||
"require_membership_hidden": False,
|
||||
"require_membership_types": [],
|
||||
"grant_membership_type": None,
|
||||
"grant_membership_duration_like_event": True,
|
||||
@@ -376,6 +377,7 @@ def test_item_detail_variations(token_client, organizer, event, team, item):
|
||||
"description": None,
|
||||
"position": 0,
|
||||
"require_membership": False,
|
||||
"require_membership_hidden": False,
|
||||
"require_membership_types": [],
|
||||
"sales_channels": list(get_all_sales_channels().keys()),
|
||||
"available_from": None,
|
||||
@@ -507,6 +509,7 @@ def test_item_create_with_variation(token_client, organizer, event, item, catego
|
||||
},
|
||||
"active": True,
|
||||
"require_membership": False,
|
||||
"require_membership_hidden": False,
|
||||
"require_membership_types": [],
|
||||
"description": None,
|
||||
"position": 0,
|
||||
@@ -1210,6 +1213,7 @@ TEST_VARIATIONS_RES = {
|
||||
"default_price": None,
|
||||
"price": "23.00",
|
||||
"require_membership": False,
|
||||
"require_membership_hidden": False,
|
||||
"require_membership_types": [],
|
||||
"sales_channels": list(get_all_sales_channels().keys()),
|
||||
"available_from": None,
|
||||
@@ -1227,6 +1231,7 @@ TEST_VARIATIONS_UPDATE = {
|
||||
"position": 1,
|
||||
"default_price": "20.0",
|
||||
"require_membership": False,
|
||||
"require_membership_hidden": False,
|
||||
"require_membership_types": [],
|
||||
"sales_channels": ["web"],
|
||||
"available_from": None,
|
||||
|
||||
@@ -195,6 +195,59 @@ class ItemDisplayTest(EventTestMixin, SoupTest):
|
||||
html = self.client.get('/%s/%s/' % (self.orga.slug, self.event.slug)).rendered_content
|
||||
self.assertNotIn("Early-bird", html)
|
||||
|
||||
def test_hidden_without_membership(self):
|
||||
self.orga.settings.customer_accounts = True
|
||||
|
||||
with scopes_disabled():
|
||||
mt = self.orga.membership_types.create(name="foo")
|
||||
q = Quota.objects.create(event=self.event, name='Quota', size=2)
|
||||
item = Item.objects.create(event=self.event, name='Early-bird ticket', default_price=0, active=True,
|
||||
require_membership=True, require_membership_hidden=True)
|
||||
item.require_membership_types.add(mt)
|
||||
q.items.add(item)
|
||||
customer = self.orga.customers.create(email='john@example.org', is_verified=True, is_active=True)
|
||||
customer.set_password('foo')
|
||||
customer.save()
|
||||
|
||||
html = self.client.get('/%s/%s/' % (self.orga.slug, self.event.slug)).rendered_content
|
||||
self.assertNotIn("Early-bird", html)
|
||||
|
||||
r = self.client.post('/%s/account/login' % self.orga.slug, {
|
||||
'email': 'john@example.org',
|
||||
'password': 'foo',
|
||||
})
|
||||
assert r.status_code == 302
|
||||
|
||||
html = self.client.get('/%s/%s/' % (self.orga.slug, self.event.slug)).rendered_content
|
||||
self.assertNotIn("Early-bird", html)
|
||||
|
||||
with scopes_disabled():
|
||||
m = customer.memberships.create(
|
||||
membership_type=mt,
|
||||
date_start=self.event.date_from - datetime.timedelta(days=5),
|
||||
date_end=self.event.date_from + datetime.timedelta(days=5),
|
||||
)
|
||||
|
||||
html = self.client.get('/%s/%s/' % (self.orga.slug, self.event.slug)).rendered_content
|
||||
self.assertIn("Early-bird", html)
|
||||
|
||||
m.canceled = True
|
||||
m.save()
|
||||
html = self.client.get('/%s/%s/' % (self.orga.slug, self.event.slug)).rendered_content
|
||||
self.assertNotIn("Early-bird", html)
|
||||
|
||||
m.canceled = False
|
||||
m.testmode = True
|
||||
m.save()
|
||||
html = self.client.get('/%s/%s/' % (self.orga.slug, self.event.slug)).rendered_content
|
||||
self.assertNotIn("Early-bird", html)
|
||||
|
||||
m.testmode = False
|
||||
m.date_end = m.date_start
|
||||
m.save()
|
||||
html = self.client.get('/%s/%s/' % (self.orga.slug, self.event.slug)).rendered_content
|
||||
self.assertNotIn("Early-bird", html)
|
||||
|
||||
def test_simple_with_category(self):
|
||||
with scopes_disabled():
|
||||
c = ItemCategory.objects.create(event=self.event, name="Entry tickets", position=0)
|
||||
|
||||
Reference in New Issue
Block a user