Solve cart deletion issues once and for all

This commit is contained in:
Raphael Michel
2019-04-04 09:05:53 +02:00
parent 2810e2a760
commit b931d27486
7 changed files with 13 additions and 1 deletions

View File

@@ -272,6 +272,8 @@ class SubEventViewSet(ConditionalListView, viewsets.ModelViewSet):
auth=self.request.auth,
data=self.request.data
)
instance.cartposition_set.filter(addon_to__isnull=False).delete()
instance.cartposition_set.all().delete()
super().perform_destroy(instance)
except ProtectedError:
raise PermissionDenied('The sub-event could not be deleted as some constraints (e.g. data created by '

View File

@@ -84,6 +84,7 @@ class ItemViewSet(ConditionalListView, viewsets.ModelViewSet):
user=self.request.user,
auth=self.request.auth,
)
self.get_object().cartposition_set.filter(addon_to__isnull=False).delete()
self.get_object().cartposition_set.all().delete()
super().perform_destroy(instance)

View File

@@ -111,7 +111,10 @@ class VoucherViewSet(viewsets.ModelViewSet):
user=self.request.user,
auth=self.request.auth,
)
super().perform_destroy(instance)
with transaction.atomic():
instance.cartposition_set.filter(addon_to__isnull=False).delete()
instance.cartposition_set.all().delete()
super().perform_destroy(instance)
@list_route(methods=['POST'])
def batch_create(self, request, *args, **kwargs):

View File

@@ -759,6 +759,7 @@ class Event(EventMixin, LoggedModel):
return not self.orders.exists() and not self.invoices.exists()
def delete_sub_objects(self):
self.cartposition_set.filter(addon_to__isnull=False).delete()
self.cartposition_set.all().delete()
self.items.all().delete()
self.subevents.all().delete()

View File

@@ -1158,6 +1158,7 @@ class ItemDelete(EventPermissionRequiredMixin, DeleteView):
success_url = self.get_success_url()
o = self.get_object()
if o.allow_delete():
self.get_object().cartposition_set.filter(addon_to__isnull=False).delete()
self.get_object().cartposition_set.all().delete()
self.get_object().log_action('pretix.event.item.deleted', user=self.request.user)
self.get_object().delete()

View File

@@ -117,6 +117,7 @@ class SubEventDelete(EventPermissionRequiredMixin, DeleteView):
return HttpResponseRedirect(self.get_success_url())
else:
self.object.log_action('pretix.subevent.deleted', user=self.request.user)
self.object.cartposition_set.filter(addon_to__isnull=False).delete()
self.object.cartposition_set.all().delete()
self.object.delete()
messages.success(request, pgettext_lazy('subevent', 'The selected date has been deleted.'))
@@ -512,6 +513,7 @@ class SubEventBulkAction(EventPermissionRequiredMixin, View):
elif request.POST.get('action') == 'delete_confirm':
for obj in self.objects:
if obj.allow_delete():
obj.cartposition_set.filter(addon_to__isnull=False).delete()
obj.cartposition_set.all().delete()
obj.log_action('pretix.subevent.deleted', user=self.request.user)
obj.delete()

View File

@@ -143,6 +143,7 @@ class VoucherDelete(EventPermissionRequiredMixin, DeleteView):
messages.error(request, _('A voucher can not be deleted if it already has been redeemed.'))
else:
self.object.log_action('pretix.voucher.deleted', user=self.request.user)
self.object.cartposition_set.filter(addon_to__isnull=False).delete()
self.object.cartposition_set.all().delete()
self.object.delete()
messages.success(request, _('The selected voucher has been deleted.'))
@@ -348,6 +349,7 @@ class VoucherBulkAction(EventPermissionRequiredMixin, View):
for obj in self.objects:
if obj.allow_delete():
obj.log_action('pretix.voucher.deleted', user=self.request.user)
obj.cartposition_set.filter(addon_to__isnull=False).delete()
obj.cartposition_set.all().delete()
obj.delete()
else: