Added voucher redemption

This commit is contained in:
Raphael Michel
2016-02-11 16:41:22 +01:00
parent bcde964ea3
commit f18a180ae4
15 changed files with 226 additions and 66 deletions

View File

@@ -475,12 +475,24 @@ class Quota(LoggedModel):
if size_left <= 0:
return Quota.AVAILABILITY_ORDERED, 0
size_left -= self.count_blocking_vouchers()
if size_left <= 0:
return Quota.AVAILABILITY_ORDERED, 0
size_left -= self.count_in_cart()
if size_left <= 0:
return Quota.AVAILABILITY_RESERVED, 0
return Quota.AVAILABILITY_OK, size_left
def count_blocking_vouchers(self) -> int:
from pretix.base.models import Voucher
return Voucher.objects.filter(
item__quotas__in=[self],
block_quota=True,
redeemed=False
).count()
def count_in_cart(self) -> int:
from pretix.base.models import CartPosition

View File

@@ -28,6 +28,10 @@ class Voucher(LoggedModel):
verbose_name=_("Voucher code"),
max_length=255, default=generate_code
)
redeemed = models.BooleanField(
verbose_name=_("Redeemed"),
default=False
)
valid_until = models.DateTimeField(
blank=True, null=True,
verbose_name=_("Valid until")
@@ -71,6 +75,11 @@ class Voucher(LoggedModel):
def save(self, *args, **kwargs):
self.code = self.code.upper()
super().save(*args, **kwargs)
self.event.get_cache().set('vouchers_exist', True)
def delete(self, using=None, keep_parents=False):
super().delete(using, keep_parents)
self.event.get_cache().delete('vouchers_exist')
def is_ordered(self) -> int:
return OrderPosition.objects.filter(