diff --git a/src/pretix/control/templates/pretixcontrol/event/logs_embed.html b/src/pretix/control/templates/pretixcontrol/event/dashboard_partial_logs.html similarity index 100% rename from src/pretix/control/templates/pretixcontrol/event/logs_embed.html rename to src/pretix/control/templates/pretixcontrol/event/dashboard_partial_logs.html diff --git a/src/pretix/control/templates/pretixcontrol/event/dashboard_partial_warnings.html b/src/pretix/control/templates/pretixcontrol/event/dashboard_partial_warnings.html new file mode 100644 index 0000000000..c3585e76b5 --- /dev/null +++ b/src/pretix/control/templates/pretixcontrol/event/dashboard_partial_warnings.html @@ -0,0 +1,48 @@ +{% load i18n %} +{% if has_pending_refunds %} +
+ {% blocktrans trimmed %} + This event contains pending refunds that you should take care of. + {% endblocktrans %} + {% trans "Show pending refunds" %} +
+{% endif %} +{% if has_cancellation_requests %} +
+ {% blocktrans trimmed %} + This event contains requested cancellations that you should take care of. + {% endblocktrans %} + {% trans "Show orders requesting cancellation" %} +
+{% endif %} +{% if has_pending_approvals %} +
+ {% blocktrans trimmed %} + This event contains pending approvals that you should take care of. + {% endblocktrans %} + {% trans "Show orders pending approval" %} +
+{% endif %} +{% if has_pending_orders_with_full_payment %} +
+ {% blocktrans trimmed %} + This event contains fully paid orders that are not marked as paid, probably + because no quota was left at the time their payment arrived. You should review the cases and consider + either refunding the customer or creating more space. + {% endblocktrans %} + {% 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 %} diff --git a/src/pretix/control/templates/pretixcontrol/event/index.html b/src/pretix/control/templates/pretixcontrol/event/index.html index a8d04040de..42941b2349 100644 --- a/src/pretix/control/templates/pretixcontrol/event/index.html +++ b/src/pretix/control/templates/pretixcontrol/event/index.html @@ -14,6 +14,7 @@ {% else %} {{ request.event.get_date_range_display }} {% endif %} +
@@ -31,63 +32,7 @@
- {% if has_overpaid_orders %} -
- {% blocktrans trimmed %} - This event contains overpaid orders, for example due to duplicate payment attempts. - You should review the cases and consider refunding the overpaid amount to the user. - {% endblocktrans %} - {% trans "Show overpaid orders" %} -
- {% endif %} - {% if has_pending_refunds %} -
- {% blocktrans trimmed %} - This event contains pending refunds that you should take care of. - {% endblocktrans %} - {% trans "Show pending refunds" %} -
- {% endif %} - {% if has_cancellation_requests %} -
- {% blocktrans trimmed %} - This event contains requested cancellations that you should take care of. - {% endblocktrans %} - {% trans "Show orders requesting cancellation" %} -
- {% endif %} - {% if has_pending_approvals %} -
- {% blocktrans trimmed %} - This event contains pending approvals that you should take care of. - {% endblocktrans %} - {% trans "Show orders pending approval" %} -
- {% endif %} - {% if has_pending_orders_with_full_payment %} -
- {% blocktrans trimmed %} - This event contains fully paid orders that are not marked as paid, probably - because no quota was left at the time their payment arrived. You should review the cases and consider - either refunding the customer or creating more space. - {% endblocktrans %} - {% 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/urls.py b/src/pretix/control/urls.py index edc7edf82f..c59aa26c34 100644 --- a/src/pretix/control/urls.py +++ b/src/pretix/control/urls.py @@ -273,7 +273,8 @@ urlpatterns = [ re_path(r'^$', dashboards.event_index, name='event.index'), re_path(r'^qrcode.(?P(png|jpeg|gif|svg))$', event.EventQRCode.as_view(), name='event.qrcode'), re_path(r'^widgets.json$', dashboards.event_index_widgets_lazy, name='event.index.widgets'), - re_path(r'^logs/embed$', dashboards.event_index_log_lazy, name='event.index.logs'), + re_path(r'^dashboard/partials/logs$', dashboards.event_index_log_lazy, name='event.index.logs'), + re_path(r'^dashboard/partials/warnings$', dashboards.event_index_warnings_lazy, name='event.index.warnings'), re_path(r'^live/$', event.EventLive.as_view(), name='event.live'), re_path(r'^transfer_session/$', event.EventTransferSession.as_view(), name='event.transfer_session'), re_path(r'^logs/$', event.EventLog.as_view(), name='event.log'), diff --git a/src/pretix/control/views/dashboards.py b/src/pretix/control/views/dashboards.py index eaa3ca2d19..cfa98a5622 100644 --- a/src/pretix/control/views/dashboards.py +++ b/src/pretix/control/views/dashboards.py @@ -379,6 +379,42 @@ def event_index(request, organizer, event): 'comment_form': CommentForm(initial={'comment': request.event.comment}, readonly=not can_change_event_settings), } + ctx['timeline'] = [ + { + 'date': t.datetime.astimezone(request.event.timezone).date(), + 'entry': t, + 'time': t.datetime.astimezone(request.event.timezone) + } + for t in timeline_for_event(request.event, subevent) + ] + ctx['today'] = now().astimezone(request.event.timezone).date() + ctx['nearly_now'] = now().astimezone(request.event.timezone) - timedelta(seconds=20) + resp = render(request, 'pretixcontrol/event/index.html', ctx) + return resp + + +def event_index_widgets_lazy(request, organizer, event): + subevent = None + if request.GET.get("subevent", "") != "" and request.event.has_subevents: + i = request.GET.get("subevent", "") + try: + subevent = request.event.subevents.get(pk=i) + except SubEvent.DoesNotExist: + pass + + widgets = [] + for r, result in event_dashboard_widgets.send(sender=request.event, subevent=subevent, lazy=False): + widgets.extend(result) + + return build_json_response(widgets) + + +def event_index_warnings_lazy(request, organizer, event): + can_view_orders = request.user.has_event_permission(request.organizer, request.event, 'event.orders:read', + request=request) + can_change_event_settings = request.user.has_event_permission(request.organizer, request.event, + 'event.settings.general:write', request=request) + ctx = {} ctx['has_overpaid_orders'] = can_view_orders and Order.annotate_overpayments(request.event.orders).filter( Q(~Q(status=Order.STATUS_CANCELED) & Q(pending_sum_t__lt=0)) | Q(Q(status=Order.STATUS_CANCELED) & Q(pending_sum_rc__lt=0)) @@ -402,35 +438,11 @@ def event_index(request, organizer, event): | Q(failed_attempts__gt=0) ).exists() - ctx['timeline'] = [ - { - 'date': t.datetime.astimezone(request.event.timezone).date(), - 'entry': t, - 'time': t.datetime.astimezone(request.event.timezone) - } - for t in timeline_for_event(request.event, subevent) - ] - ctx['today'] = now().astimezone(request.event.timezone).date() - ctx['nearly_now'] = now().astimezone(request.event.timezone) - timedelta(seconds=20) - resp = render(request, 'pretixcontrol/event/index.html', ctx) - # resp['Content-Security-Policy'] = "style-src 'unsafe-inline'" - return resp - - -def event_index_widgets_lazy(request, organizer, event): - subevent = None - if request.GET.get("subevent", "") != "" and request.event.has_subevents: - i = request.GET.get("subevent", "") - try: - subevent = request.event.subevents.get(pk=i) - except SubEvent.DoesNotExist: - pass - - widgets = [] - for r, result in event_dashboard_widgets.send(sender=request.event, subevent=subevent, lazy=False): - widgets.extend(result) - - return build_json_response(widgets) + return render( + request, + 'pretixcontrol/event/dashboard_partial_warnings.html', + ctx + ) def event_index_log_lazy(request, organizer, event): @@ -465,7 +477,7 @@ def event_index_log_lazy(request, organizer, event): return render( request, - 'pretixcontrol/event/logs_embed.html', + 'pretixcontrol/event/dashboard_partial_logs.html', { 'logs': qs[:5] } diff --git a/src/pretix/static/pretixcontrol/js/ui/dashboard.js b/src/pretix/static/pretixcontrol/js/ui/dashboard.js index 22c1b95931..b0b95ae553 100644 --- a/src/pretix/static/pretixcontrol/js/ui/dashboard.js +++ b/src/pretix/static/pretixcontrol/js/ui/dashboard.js @@ -15,8 +15,12 @@ $(function () { if ($("#logs_target").length == 0) { return; } - $.get("logs/embed", function (data) { - $("#logs_target").html(data) - add_log_expand_handlers($("#logs_target")) + $.get("dashboard/partials/logs", function (data) { + $("#logs_target").html(data) + add_log_expand_handlers($("#logs_target")) + }); + $.get("dashboard/partials/warnings", function (data) { + $("#warnings_loading").remove() + $("#warnings_target").html(data) }); });