From 79025e55d6a95de958113c41f506431741786dfd Mon Sep 17 00:00:00 2001 From: Richard Schreiber Date: Fri, 29 Aug 2025 10:53:47 +0200 Subject: [PATCH] Fix unhandled not found error when manually managing sync jobs --- src/pretix/control/views/datasync.py | 42 +++++++++++++++++----------- 1 file changed, 25 insertions(+), 17 deletions(-) diff --git a/src/pretix/control/views/datasync.py b/src/pretix/control/views/datasync.py index 6a8e3fcb26..4882cab9eb 100644 --- a/src/pretix/control/views/datasync.py +++ b/src/pretix/control/views/datasync.py @@ -82,27 +82,35 @@ class ControlSyncJob(OrderView): messages.success(self.request, _('The sync job has been enqueued and will run in the next minutes.')) elif self.request.POST.get("cancel_job"): with transaction.atomic(): - job = self.order.queued_sync_jobs.select_for_update(of=OF_SELF).get( - pk=self.request.POST.get("cancel_job") - ) - if job.in_flight: - messages.warning(self.request, _('The sync job is already in progress.')) + try: + job = self.order.queued_sync_jobs.select_for_update(of=OF_SELF).get( + pk=self.request.POST.get("cancel_job") + ) + except OrderSyncQueue.DoesNotExist: + messages.error(self.request, _('The sync job could not be found.')) else: - job.delete() - messages.success(self.request, _('The sync job has been canceled.')) + if job.in_flight: + messages.warning(self.request, _('The sync job is already in progress.')) + else: + job.delete() + messages.success(self.request, _('The sync job has been canceled.')) elif self.request.POST.get("run_job_now"): with transaction.atomic(): - job = self.order.queued_sync_jobs.select_for_update(of=OF_SELF).get( - pk=self.request.POST.get("run_job_now") - ) - if job.in_flight: - messages.success(self.request, _('The sync job is already in progress.')) + try: + job = self.order.queued_sync_jobs.select_for_update(of=OF_SELF).get( + pk=self.request.POST.get("run_job_now") + ) + except OrderSyncQueue.DoesNotExist: + messages.error(self.request, _('The sync job could not be found.')) else: - job.not_before = now() - job.need_manual_retry = None - job.save() - sync_single.apply_async(args=(job.pk,)) - messages.success(self.request, _('The sync job has been set to run as soon as possible.')) + if job.in_flight: + messages.success(self.request, _('The sync job is already in progress.')) + else: + job.not_before = now() + job.need_manual_retry = None + job.save() + sync_single.apply_async(args=(job.pk,)) + messages.success(self.request, _('The sync job has been set to run as soon as possible.')) return redirect(self.get_order_url())