diff --git a/src/pretix/base/services/orders.py b/src/pretix/base/services/orders.py index 634033b151..2e39424237 100644 --- a/src/pretix/base/services/orders.py +++ b/src/pretix/base/services/orders.py @@ -457,7 +457,7 @@ class OrderChangeManager: if diff <= 0: continue avail = quota.availability() - if avail[0] != Quota.AVAILABILITY_OK or avail[1] < diff: + if avail[0] != Quota.AVAILABILITY_OK or (avail[1] is not None and avail[1] < diff): raise OrderError(self.error_messages['quota'].format(name=quota.name)) def _check_free_to_paid(self): diff --git a/src/tests/base/test_orders.py b/src/tests/base/test_orders.py index 73ce2f36cd..dbc8c6023f 100644 --- a/src/tests/base/test_orders.py +++ b/src/tests/base/test_orders.py @@ -188,6 +188,14 @@ class OrderChangeManagerTests(TestCase): def test_empty(self): self.ocm.commit() + def test_quota_unlimited(self): + q = self.event.quotas.create(name='Test', size=None) + q.items.add(self.shirt) + self.ocm.change_item(self.op1, self.shirt, None) + self.ocm.commit() + self.op1.refresh_from_db() + assert self.op1.item == self.shirt + def test_quota_full(self): q = self.event.quotas.create(name='Test', size=0) q.items.add(self.shirt)