Waiting list: Make it harder to accidentally delete full list

This commit is contained in:
Raphael Michel
2023-07-17 11:44:18 +02:00
parent 8a903f21ae
commit 6c813ea299

View File

@@ -91,7 +91,7 @@ class WaitingListQuerySetMixin:
return self.request.POST return self.request.POST
return self.request.GET return self.request.GET
def get_queryset(self): def get_queryset(self, force_filtered=False):
qs = WaitingListEntry.objects.filter( qs = WaitingListEntry.objects.filter(
event=self.request.event event=self.request.event
).select_related('item', 'variation', 'voucher').prefetch_related( ).select_related('item', 'variation', 'voucher').prefetch_related(
@@ -135,6 +135,8 @@ class WaitingListQuerySetMixin:
qs = qs.filter( qs = qs.filter(
id__in=self.request_data.getlist('entry') id__in=self.request_data.getlist('entry')
) )
elif force_filtered and '__ALL' not in self.request_data:
qs = qs.none()
return qs return qs
@@ -158,7 +160,7 @@ class WaitingListActionView(EventPermissionRequiredMixin, WaitingListQuerySetMix
'forbidden': self.get_queryset().filter(voucher__isnull=False), 'forbidden': self.get_queryset().filter(voucher__isnull=False),
}) })
elif request.POST.get('action') == 'delete_confirm': elif request.POST.get('action') == 'delete_confirm':
for obj in self.get_queryset(): for obj in self.get_queryset(force_filtered=True):
if not obj.voucher_id: if not obj.voucher_id:
obj.log_action('pretix.event.orders.waitinglist.deleted', user=self.request.user) obj.log_action('pretix.event.orders.waitinglist.deleted', user=self.request.user)
obj.delete() obj.delete()