mirror of
https://github.com/pretix/pretix.git
synced 2026-05-05 15:14:04 +00:00
Added voucher redemption
This commit is contained in:
@@ -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
|
||||
|
||||
|
||||
@@ -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(
|
||||
|
||||
Reference in New Issue
Block a user