Improve voucher redemption filter (#792)

This commit is contained in:
Raphael Michel
2018-03-03 11:58:59 +01:00
committed by GitHub
parent d537e6a869
commit e35e264d81
2 changed files with 9 additions and 3 deletions

View File

@@ -42,7 +42,7 @@ class Voucher(LoggedModel):
:param max_usages: The number of times this voucher can be redeemed
:type max_usages: int
:param redeemed: The number of times this voucher already has been redeemed
:type redeemed: bool
:type redeemed: int
:param valid_until: The expiration date of this voucher (optional)
:type valid_until: datetime
:param block_quota: If set to true, this voucher will reserve quota for its holder

View File

@@ -606,7 +606,9 @@ class VoucherFilterForm(FilterForm):
choices=(
('', _('All')),
('v', _('Valid')),
('r', _('Redeemed')),
('u', _('Unredeemed')),
('r', _('Redeemed at least once')),
('f', _('Fully redeemed')),
('e', _('Expired')),
('c', _('Redeemed and checked in with ticket')),
),
@@ -701,9 +703,13 @@ class VoucherFilterForm(FilterForm):
if fdata.get('status'):
s = fdata.get('status')
if s == 'v':
qs = qs.filter(Q(valid_until__isnull=True) | Q(valid_until__gt=now())).filter(redeemed=0)
qs = qs.filter(Q(valid_until__isnull=True) | Q(valid_until__gt=now())).filter(redeemed__lt=F('max_usages'))
elif s == 'r':
qs = qs.filter(redeemed__gt=0)
elif s == 'u':
qs = qs.filter(redeemed=0)
elif s == 'f':
qs = qs.filter(redeemed__gte=F('max_usages'))
elif s == 'e':
qs = qs.filter(Q(valid_until__isnull=False) & Q(valid_until__lt=now())).filter(redeemed=0)
elif s == 'c':