From 09e9273a57ae4c3c3355e568c85cc4cf2b9a3b05 Mon Sep 17 00:00:00 2001 From: Richard Schreiber Date: Tue, 2 Sep 2025 09:22:47 +0200 Subject: [PATCH] Fix unhandled not found error when manually managing sync jobs (#5412) * Fix unhandled not found error when manually managing sync jobs * Improve info text (suggestions from code review) Co-authored-by: luelista --------- Co-authored-by: luelista --- 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..6bf47afbb4 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.info(self.request, _('The sync job could not be found. It may have been processed in the meantime.')) 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.info(self.request, _('The sync job could not be found. It may have been processed in the meantime.')) 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())