mirror of
https://github.com/pretix/pretix.git
synced 2026-05-06 15:24:02 +00:00
Improve voucher redemption filter (#792)
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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':
|
||||
|
||||
Reference in New Issue
Block a user