From 20e281d0a4e26e8545c8d4ffd0d923b4a3b57b39 Mon Sep 17 00:00:00 2001 From: Richard Schreiber Date: Tue, 28 Jun 2022 10:01:15 +0200 Subject: [PATCH] Fix: handle ProtectedError when deleting a team (Z#23102243) --- src/pretix/control/views/organizer.py | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/src/pretix/control/views/organizer.py b/src/pretix/control/views/organizer.py index 54463ffbf..fe98d0e95 100644 --- a/src/pretix/control/views/organizer.py +++ b/src/pretix/control/views/organizer.py @@ -642,15 +642,26 @@ class TeamDeleteView(OrganizerDetailViewMixin, OrganizerPermissionRequiredMixin, def delete(self, request, *args, **kwargs): success_url = self.get_success_url() self.object = self.get_object() - if self.is_allowed(): - self.object.log_action('pretix.team.deleted', user=self.request.user) - self.object.delete() - messages.success(request, _('The selected team has been deleted.')) - return redirect(success_url) - else: + if not self.is_allowed(): messages.error(request, _('The selected team cannot be deleted.')) return redirect(success_url) + try: + self.object.log_action('pretix.team.deleted', user=self.request.user) + self.object.delete() + except ProtectedError: + messages.error( + self.request, + _( + 'The team could not be deleted as some constraints (e.g. data created by ' + 'plug-ins) do not allow it.' + ) + ) + return redirect(success_url) + + messages.success(request, _('The selected team has been deleted.')) + return redirect(success_url) + class TeamMemberView(OrganizerDetailViewMixin, OrganizerPermissionRequiredMixin, DetailView): template_name = 'pretixcontrol/organizers/team_members.html'