Seat-specific vouchers (#1486)

* Basic functionality

* API

* Do not delete seats with vouchers

* Show seat in list of seats

* Validate availability of seats

* Fix invalid logic in Seat.is_available

* Show voucher name in edit form
This commit is contained in:
Raphael Michel
2019-11-15 10:56:34 +01:00
committed by GitHub
parent f79df47b78
commit a2c1c69d7e
19 changed files with 474 additions and 42 deletions

View File

@@ -235,11 +235,11 @@ def seat_select2(request, **kwargs):
if request.event.has_subevents:
try:
qs = request.event.subevents.get(active=True, pk=request.GET.get('subevent', 0)).free_seats
qs = request.event.subevents.get(active=True, pk=request.GET.get('subevent', 0)).free_seats()
except SubEvent.DoesNotExist:
qs = request.event.seats.none()
else:
qs = request.event.free_seats
qs = request.event.free_seats()
qs = qs.filter(
Q(name__icontains=query) | Q(seat_guid__icontains=query)
).order_by('name').select_related('product', 'subevent')

View File

@@ -37,7 +37,9 @@ class VoucherList(PaginationMixin, EventPermissionRequiredMixin, ListView):
permission = 'can_view_vouchers'
def get_queryset(self):
qs = self.request.event.vouchers.filter(waitinglistentries__isnull=True).select_related('item', 'variation')
qs = self.request.event.vouchers.filter(waitinglistentries__isnull=True).select_related(
'item', 'variation', 'seat'
)
if self.filter_form.is_valid():
qs = self.filter_form.filter_qs(qs)