forked from CGM_Public/pretix_original
Fix #1148 -- Reduce number of cases in which we show "Reserved"
This commit is contained in:
@@ -1111,16 +1111,16 @@ class Quota(LoggedModel):
|
|||||||
|
|
||||||
size_left -= self.count_blocking_vouchers(now_dt)
|
size_left -= self.count_blocking_vouchers(now_dt)
|
||||||
if size_left <= 0:
|
if size_left <= 0:
|
||||||
return Quota.AVAILABILITY_RESERVED, 0
|
return Quota.AVAILABILITY_ORDERED, 0
|
||||||
|
|
||||||
size_left -= self.count_in_cart(now_dt)
|
|
||||||
if size_left <= 0:
|
|
||||||
return Quota.AVAILABILITY_RESERVED, 0
|
|
||||||
|
|
||||||
if count_waitinglist:
|
if count_waitinglist:
|
||||||
size_left -= self.count_waiting_list_pending()
|
size_left -= self.count_waiting_list_pending()
|
||||||
if size_left <= 0:
|
if size_left <= 0:
|
||||||
return Quota.AVAILABILITY_RESERVED, 0
|
return Quota.AVAILABILITY_ORDERED, 0
|
||||||
|
|
||||||
|
size_left -= self.count_in_cart(now_dt)
|
||||||
|
if size_left <= 0:
|
||||||
|
return Quota.AVAILABILITY_RESERVED, 0
|
||||||
|
|
||||||
return Quota.AVAILABILITY_OK, size_left
|
return Quota.AVAILABILITY_OK, size_left
|
||||||
|
|
||||||
|
|||||||
@@ -215,7 +215,7 @@ class QuotaTestCase(BaseQuotaTestCase):
|
|||||||
|
|
||||||
v.block_quota = True
|
v.block_quota = True
|
||||||
v.save()
|
v.save()
|
||||||
self.assertEqual(self.item1.check_quotas(), (Quota.AVAILABILITY_RESERVED, 0))
|
self.assertEqual(self.item1.check_quotas(), (Quota.AVAILABILITY_ORDERED, 0))
|
||||||
|
|
||||||
def test_voucher_variation(self):
|
def test_voucher_variation(self):
|
||||||
self.quota.variations.add(self.var1)
|
self.quota.variations.add(self.var1)
|
||||||
@@ -228,7 +228,7 @@ class QuotaTestCase(BaseQuotaTestCase):
|
|||||||
|
|
||||||
v.block_quota = True
|
v.block_quota = True
|
||||||
v.save()
|
v.save()
|
||||||
self.assertEqual(self.var1.check_quotas(), (Quota.AVAILABILITY_RESERVED, 0))
|
self.assertEqual(self.var1.check_quotas(), (Quota.AVAILABILITY_ORDERED, 0))
|
||||||
|
|
||||||
def test_voucher_quota(self):
|
def test_voucher_quota(self):
|
||||||
self.quota.variations.add(self.var1)
|
self.quota.variations.add(self.var1)
|
||||||
@@ -241,7 +241,7 @@ class QuotaTestCase(BaseQuotaTestCase):
|
|||||||
|
|
||||||
v.block_quota = True
|
v.block_quota = True
|
||||||
v.save()
|
v.save()
|
||||||
self.assertEqual(self.var1.check_quotas(), (Quota.AVAILABILITY_RESERVED, 0))
|
self.assertEqual(self.var1.check_quotas(), (Quota.AVAILABILITY_ORDERED, 0))
|
||||||
|
|
||||||
def test_voucher_quota_multiuse(self):
|
def test_voucher_quota_multiuse(self):
|
||||||
self.quota.size = 5
|
self.quota.size = 5
|
||||||
@@ -250,7 +250,7 @@ class QuotaTestCase(BaseQuotaTestCase):
|
|||||||
Voucher.objects.create(quota=self.quota, event=self.event, block_quota=True, max_usages=5, redeemed=2)
|
Voucher.objects.create(quota=self.quota, event=self.event, block_quota=True, max_usages=5, redeemed=2)
|
||||||
self.assertEqual(self.var1.check_quotas(), (Quota.AVAILABILITY_OK, 2))
|
self.assertEqual(self.var1.check_quotas(), (Quota.AVAILABILITY_OK, 2))
|
||||||
Voucher.objects.create(quota=self.quota, event=self.event, block_quota=True, max_usages=2)
|
Voucher.objects.create(quota=self.quota, event=self.event, block_quota=True, max_usages=2)
|
||||||
self.assertEqual(self.var1.check_quotas(), (Quota.AVAILABILITY_RESERVED, 0))
|
self.assertEqual(self.var1.check_quotas(), (Quota.AVAILABILITY_ORDERED, 0))
|
||||||
|
|
||||||
def test_voucher_multiuse_count_overredeemed(self):
|
def test_voucher_multiuse_count_overredeemed(self):
|
||||||
if 'sqlite' not in settings.DATABASES['default']['ENGINE']:
|
if 'sqlite' not in settings.DATABASES['default']['ENGINE']:
|
||||||
@@ -282,7 +282,7 @@ class QuotaTestCase(BaseQuotaTestCase):
|
|||||||
self.quota.save()
|
self.quota.save()
|
||||||
Voucher.objects.create(quota=self.quota, event=self.event, valid_until=now() + timedelta(days=5),
|
Voucher.objects.create(quota=self.quota, event=self.event, valid_until=now() + timedelta(days=5),
|
||||||
block_quota=True)
|
block_quota=True)
|
||||||
self.assertEqual(self.var1.check_quotas(), (Quota.AVAILABILITY_RESERVED, 0))
|
self.assertEqual(self.var1.check_quotas(), (Quota.AVAILABILITY_ORDERED, 0))
|
||||||
|
|
||||||
def test_voucher_quota_expired(self):
|
def test_voucher_quota_expired(self):
|
||||||
self.quota.variations.add(self.var1)
|
self.quota.variations.add(self.var1)
|
||||||
@@ -339,7 +339,7 @@ class QuotaTestCase(BaseQuotaTestCase):
|
|||||||
WaitingListEntry.objects.create(
|
WaitingListEntry.objects.create(
|
||||||
event=self.event, item=self.item1, email='foo@bar.com'
|
event=self.event, item=self.item1, email='foo@bar.com'
|
||||||
)
|
)
|
||||||
self.assertEqual(self.item1.check_quotas(), (Quota.AVAILABILITY_RESERVED, 0))
|
self.assertEqual(self.item1.check_quotas(), (Quota.AVAILABILITY_ORDERED, 0))
|
||||||
self.assertEqual(self.item1.check_quotas(count_waitinglist=False), (Quota.AVAILABILITY_OK, 1))
|
self.assertEqual(self.item1.check_quotas(count_waitinglist=False), (Quota.AVAILABILITY_OK, 1))
|
||||||
|
|
||||||
def test_waitinglist_variation_active(self):
|
def test_waitinglist_variation_active(self):
|
||||||
@@ -349,7 +349,7 @@ class QuotaTestCase(BaseQuotaTestCase):
|
|||||||
WaitingListEntry.objects.create(
|
WaitingListEntry.objects.create(
|
||||||
event=self.event, item=self.item2, variation=self.var1, email='foo@bar.com'
|
event=self.event, item=self.item2, variation=self.var1, email='foo@bar.com'
|
||||||
)
|
)
|
||||||
self.assertEqual(self.var1.check_quotas(), (Quota.AVAILABILITY_RESERVED, 0))
|
self.assertEqual(self.var1.check_quotas(), (Quota.AVAILABILITY_ORDERED, 0))
|
||||||
self.assertEqual(self.var1.check_quotas(count_waitinglist=False), (Quota.AVAILABILITY_OK, 1))
|
self.assertEqual(self.var1.check_quotas(count_waitinglist=False), (Quota.AVAILABILITY_OK, 1))
|
||||||
|
|
||||||
def test_waitinglist_variation_fulfilled(self):
|
def test_waitinglist_variation_fulfilled(self):
|
||||||
@@ -383,10 +383,10 @@ class QuotaTestCase(BaseQuotaTestCase):
|
|||||||
|
|
||||||
cache = {}
|
cache = {}
|
||||||
|
|
||||||
self.assertEqual(self.var1.check_quotas(_cache=cache), (Quota.AVAILABILITY_RESERVED, 0))
|
self.assertEqual(self.var1.check_quotas(_cache=cache), (Quota.AVAILABILITY_ORDERED, 0))
|
||||||
|
|
||||||
with self.assertNumQueries(1):
|
with self.assertNumQueries(1):
|
||||||
self.assertEqual(self.var1.check_quotas(_cache=cache), (Quota.AVAILABILITY_RESERVED, 0))
|
self.assertEqual(self.var1.check_quotas(_cache=cache), (Quota.AVAILABILITY_ORDERED, 0))
|
||||||
|
|
||||||
# Do not reuse cache for count_waitinglist=False
|
# Do not reuse cache for count_waitinglist=False
|
||||||
self.assertEqual(self.var1.check_quotas(_cache=cache, count_waitinglist=False), (Quota.AVAILABILITY_OK, 1))
|
self.assertEqual(self.var1.check_quotas(_cache=cache, count_waitinglist=False), (Quota.AVAILABILITY_OK, 1))
|
||||||
|
|||||||
Reference in New Issue
Block a user