forked from CGM_Public/pretix_original
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
|
:param max_usages: The number of times this voucher can be redeemed
|
||||||
:type max_usages: int
|
:type max_usages: int
|
||||||
:param redeemed: The number of times this voucher already has been redeemed
|
: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)
|
:param valid_until: The expiration date of this voucher (optional)
|
||||||
:type valid_until: datetime
|
:type valid_until: datetime
|
||||||
:param block_quota: If set to true, this voucher will reserve quota for its holder
|
:param block_quota: If set to true, this voucher will reserve quota for its holder
|
||||||
|
|||||||
@@ -606,7 +606,9 @@ class VoucherFilterForm(FilterForm):
|
|||||||
choices=(
|
choices=(
|
||||||
('', _('All')),
|
('', _('All')),
|
||||||
('v', _('Valid')),
|
('v', _('Valid')),
|
||||||
('r', _('Redeemed')),
|
('u', _('Unredeemed')),
|
||||||
|
('r', _('Redeemed at least once')),
|
||||||
|
('f', _('Fully redeemed')),
|
||||||
('e', _('Expired')),
|
('e', _('Expired')),
|
||||||
('c', _('Redeemed and checked in with ticket')),
|
('c', _('Redeemed and checked in with ticket')),
|
||||||
),
|
),
|
||||||
@@ -701,9 +703,13 @@ class VoucherFilterForm(FilterForm):
|
|||||||
if fdata.get('status'):
|
if fdata.get('status'):
|
||||||
s = fdata.get('status')
|
s = fdata.get('status')
|
||||||
if s == 'v':
|
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':
|
elif s == 'r':
|
||||||
qs = qs.filter(redeemed__gt=0)
|
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':
|
elif s == 'e':
|
||||||
qs = qs.filter(Q(valid_until__isnull=False) & Q(valid_until__lt=now())).filter(redeemed=0)
|
qs = qs.filter(Q(valid_until__isnull=False) & Q(valid_until__lt=now())).filter(redeemed=0)
|
||||||
elif s == 'c':
|
elif s == 'c':
|
||||||
|
|||||||
Reference in New Issue
Block a user