forked from CGM_Public/pretix_original
Allow filtering the voucher list for checked-in tickets
This commit is contained in:
@@ -19,6 +19,7 @@
|
|||||||
<option value="v" {% if request.GET.status == "v" %}selected="selected"{% endif %}>{% trans "Valid" %}</option>
|
<option value="v" {% if request.GET.status == "v" %}selected="selected"{% endif %}>{% trans "Valid" %}</option>
|
||||||
<option value="r" {% if request.GET.status == "r" %}selected="selected"{% endif %}>{% trans "Redeemed" %}</option>
|
<option value="r" {% if request.GET.status == "r" %}selected="selected"{% endif %}>{% trans "Redeemed" %}</option>
|
||||||
<option value="e" {% if request.GET.status == "e" %}selected="selected"{% endif %}>{% trans "Expired" %}</option>
|
<option value="e" {% if request.GET.status == "e" %}selected="selected"{% endif %}>{% trans "Expired" %}</option>
|
||||||
|
<option value="e" {% if request.GET.status == "c" %}selected="selected"{% endif %}>{% trans "Redeemed and checked in with ticket" %}</option>
|
||||||
</select>
|
</select>
|
||||||
{% if request.event.has_subevents %}
|
{% if request.event.has_subevents %}
|
||||||
<select name="subevent" class="form-control">
|
<select name="subevent" class="form-control">
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ from django.conf import settings
|
|||||||
from django.contrib import messages
|
from django.contrib import messages
|
||||||
from django.core.urlresolvers import resolve, reverse
|
from django.core.urlresolvers import resolve, reverse
|
||||||
from django.db import transaction
|
from django.db import transaction
|
||||||
from django.db.models import Q, Sum
|
from django.db.models import Exists, OuterRef, Q, Sum
|
||||||
from django.http import (
|
from django.http import (
|
||||||
Http404, HttpResponse, HttpResponseBadRequest, HttpResponseRedirect,
|
Http404, HttpResponse, HttpResponseBadRequest, HttpResponseRedirect,
|
||||||
JsonResponse,
|
JsonResponse,
|
||||||
@@ -16,7 +16,7 @@ from django.views.generic import (
|
|||||||
CreateView, DeleteView, ListView, TemplateView, UpdateView, View,
|
CreateView, DeleteView, ListView, TemplateView, UpdateView, View,
|
||||||
)
|
)
|
||||||
|
|
||||||
from pretix.base.models import Voucher
|
from pretix.base.models import Checkin, Voucher
|
||||||
from pretix.base.models.vouchers import _generate_random_code
|
from pretix.base.models.vouchers import _generate_random_code
|
||||||
from pretix.control.forms.vouchers import VoucherBulkForm, VoucherForm
|
from pretix.control.forms.vouchers import VoucherBulkForm, VoucherForm
|
||||||
from pretix.control.permissions import EventPermissionRequiredMixin
|
from pretix.control.permissions import EventPermissionRequiredMixin
|
||||||
@@ -46,6 +46,13 @@ class VoucherList(PaginationMixin, EventPermissionRequiredMixin, ListView):
|
|||||||
qs = qs.filter(redeemed__gt=0)
|
qs = qs.filter(redeemed__gt=0)
|
||||||
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':
|
||||||
|
checkins = Checkin.objects.filter(
|
||||||
|
position__voucher=OuterRef('pk')
|
||||||
|
)
|
||||||
|
qs = qs.annotate(has_checkin=Exists(checkins)).filter(
|
||||||
|
redeemed__gt=0, has_checkin=True
|
||||||
|
)
|
||||||
if self.request.GET.get("subevent", "") != "":
|
if self.request.GET.get("subevent", "") != "":
|
||||||
s = self.request.GET.get("subevent", "")
|
s = self.request.GET.get("subevent", "")
|
||||||
qs = qs.filter(subevent_id=s)
|
qs = qs.filter(subevent_id=s)
|
||||||
|
|||||||
Reference in New Issue
Block a user