Add option to limit events to specific sales channels (#1867)

This commit is contained in:
Martin Gross
2020-12-03 17:10:54 +01:00
committed by GitHub
parent 55d8639ecc
commit b3e95f54dd
17 changed files with 185 additions and 23 deletions

View File

@@ -85,7 +85,8 @@ TEST_EVENT_RES = {
],
'item_meta_properties': {
'day': 'Monday',
}
},
'sales_channels': ['web']
}

View File

@@ -34,7 +34,8 @@ class CartTestMixin:
organizer=self.orga, name='30C3', slug='30c3',
date_from=datetime.datetime(now().year + 1, 12, 26, tzinfo=datetime.timezone.utc),
live=True,
plugins="pretix.plugins.banktransfer"
plugins="pretix.plugins.banktransfer",
sales_channels=['web', 'bar']
)
self.tr19 = self.event.tax_rules.create(rate=Decimal('19.00'))
self.category = ItemCategory.objects.create(event=self.event, name="Everything", position=0)

View File

@@ -28,7 +28,7 @@ class EventTestMixin:
self.event = Event.objects.create(
organizer=self.orga, name='30C3', slug='30c3',
date_from=datetime.datetime(now().year + 1, 12, 26, tzinfo=datetime.timezone.utc),
live=True
live=True, sales_channels=['web', 'bar']
)
self.user = User.objects.create_user('dummy@dummy.dummy', 'dummy')
t = Team.objects.create(organizer=self.orga, can_change_event_settings=True)
@@ -1018,6 +1018,23 @@ class DeadlineTest(EventTestMixin, TestCase):
)
self.assertNotEqual(response.status_code, 403)
def test_saleschannel_disabled(self):
self.event.presale_start = None
self.event.presale_end = None
self.event.sales_channels = []
self.event.save()
response = self.client.get(
'/%s/%s/' % (self.orga.slug, self.event.slug)
)
self.assertEqual(response.status_code, 404)
response = self.client.post(
'/%s/%s/cart/add' % (self.orga.slug, self.event.slug),
{
'item_%d' % self.item.id: '1'
}
)
self.assertEqual(response.status_code, 404)
def test_in_time(self):
self.event.presale_start = now() - datetime.timedelta(days=1)
self.event.presale_end = now() + datetime.timedelta(days=1)

View File

@@ -121,6 +121,21 @@ class WidgetCartTest(CartTestMixin, TestCase):
self.assertIn('23', doc.select('.cart .cart-row')[0].select('.price')[0].text)
self.assertIn('23', doc.select('.cart .cart-row')[0].select('.price')[1].text)
def test_saleschannel_disabled(self):
self.event.sales_channels = []
self.event.save()
response = self.client.get('/%s/%s/widget/product_list' % (self.orga.slug, self.event.slug))
data = json.loads(response.content.decode())
assert data == {
"error": "Tickets for this event cannot be purchased on this sales channel.",
'poweredby': '<a href="https://pretix.eu" target="_blank" rel="noopener">event ticketing powered by pretix</a>',
}
self.assertEqual(response.status_code, 200)
response = self.client.post('/%s/%s/w/aaaaaaaaaaaaaaab/cart/add' % (self.orga.slug, self.event.slug), {
'item_%d' % self.ticket.id: '1'
}, follow=True)
self.assertEqual(response.status_code, 404)
def test_product_list_view(self):
response = self.client.get('/%s/%s/widget/product_list' % (self.orga.slug, self.event.slug))
assert response['Access-Control-Allow-Origin'] == '*'