From 8cde94fad662a014766babd72bd8e0bab08891ef Mon Sep 17 00:00:00 2001 From: Mira Weller Date: Thu, 17 Jul 2025 17:07:14 +0200 Subject: [PATCH] add info boxes to dashboard and hubspot settings if sync problems exist --- .../control/templates/pretixcontrol/event/index.html | 9 +++++++++ src/pretix/control/views/dashboards.py | 4 ++++ src/pretix/control/views/datasync.py | 5 +++-- 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/pretix/control/templates/pretixcontrol/event/index.html b/src/pretix/control/templates/pretixcontrol/event/index.html index d89bb08efa..78aeb4f9a4 100644 --- a/src/pretix/control/templates/pretixcontrol/event/index.html +++ b/src/pretix/control/templates/pretixcontrol/event/index.html @@ -79,6 +79,15 @@ class="btn btn-primary">{% trans "Show affected orders" %} {% endif %} + {% if has_sync_problems %} +
+ {% blocktrans trimmed %} + Orders in this event could not be synced to an external system as configured. + {% endblocktrans %} + {% trans "Show sync problems" %} +
+ {% endif %} {% eventsignal request.event "pretix.control.signals.event_dashboard_top" request=request %} {% if request.event.has_subevents %} diff --git a/src/pretix/control/views/dashboards.py b/src/pretix/control/views/dashboards.py index 8b5b47e2ae..35932ceaf3 100644 --- a/src/pretix/control/views/dashboards.py +++ b/src/pretix/control/views/dashboards.py @@ -383,6 +383,10 @@ def event_index(request, organizer, event): ctx['has_cancellation_requests'] = can_view_orders and CancellationRequest.objects.filter( order__event=request.event ).exists() + ctx['has_sync_problems'] = can_change_event_settings and request.event.queued_sync_jobs.filter( + Q(need_manual_retry__isnull=False) + | Q(failed_attempts__gt=0) + ).exists() ctx['timeline'] = [ { diff --git a/src/pretix/control/views/datasync.py b/src/pretix/control/views/datasync.py index 20b97e933c..5b6741e062 100644 --- a/src/pretix/control/views/datasync.py +++ b/src/pretix/control/views/datasync.py @@ -36,7 +36,8 @@ from pretix.base.datasync.datasync import sync_targets from pretix.base.models import Event, Order from pretix.base.models.datasync import OrderSyncQueue from pretix.control.permissions import ( - AdministratorPermissionRequiredMixin, OrganizerPermissionRequiredMixin, EventPermissionRequiredMixin, + AdministratorPermissionRequiredMixin, EventPermissionRequiredMixin, + OrganizerPermissionRequiredMixin, ) from pretix.control.signals import order_info from pretix.control.views.orders import OrderView @@ -97,7 +98,7 @@ class FailedSyncJobsView(ListView): template_name = 'pretixcontrol/datasync/failed_jobs.html' model = OrderSyncQueue context_object_name = 'queue_items' - paginate_by = 20 + paginate_by = 100 ordering = ('triggered',) def get_queryset(self):