diff --git a/src/pretix/control/templates/pretixcontrol/checkin/index.html b/src/pretix/control/templates/pretixcontrol/checkin/index.html
index 3daa4b0106..bbe96c09ef 100644
--- a/src/pretix/control/templates/pretixcontrol/checkin/index.html
+++ b/src/pretix/control/templates/pretixcontrol/checkin/index.html
@@ -70,6 +70,7 @@
{% trans "Name" %}
|
+ {% trans "Ticket code" %} |
{% trans "Status" %}
|
{% trans "Timestamp" %}
@@ -102,6 +103,9 @@
{{ e.attendee_name }}
{% endif %}
+ |
+ {{ e.secret|slice:":10" }}…
+ |
{% if not e.last_checked_in %}
{% trans "Not checked in" %}
diff --git a/src/pretix/control/templates/pretixcontrol/orders/index.html b/src/pretix/control/templates/pretixcontrol/orders/index.html
index b481ad983b..1807c6d4c1 100644
--- a/src/pretix/control/templates/pretixcontrol/orders/index.html
+++ b/src/pretix/control/templates/pretixcontrol/orders/index.html
@@ -85,7 +85,7 @@
{% endif %}
-
+
| {% trans "Order code" %}
@@ -147,6 +147,30 @@
|
{% endfor %}
+ {% if sums %}
+
+
+ | {% trans "Sum over all pages" %} |
+ |
+
+ {% blocktrans trimmed count s=sums.c %}
+ 1 order
+ {% plural %}
+ {{ s }} orders
+ {% endblocktrans %}
+ |
+
+ {{ sums.s|money:request.event.currency }}
+ |
+
+ {% if sums.pc %}
+ {{ sums.pc }}
+ {% endif %}
+ |
+ |
+
+
+ {% endif %}
{% include "pretixcontrol/pagination.html" %}
diff --git a/src/pretix/control/views/orders.py b/src/pretix/control/views/orders.py
index 111fabf868..1b133cab47 100644
--- a/src/pretix/control/views/orders.py
+++ b/src/pretix/control/views/orders.py
@@ -13,7 +13,7 @@ from django.core.files import File
from django.db import transaction
from django.db.models import (
Count, IntegerField, OuterRef, ProtectedError, Q, Subquery,
-)
+ Sum)
from django.http import (
FileResponse, Http404, HttpResponseNotAllowed, JsonResponse,
)
@@ -126,6 +126,15 @@ class OrderList(EventPermissionRequiredMixin, PaginationMixin, ListView):
o.has_external_refund = annotated.get(o.pk)['has_external_refund']
o.has_pending_refund = annotated.get(o.pk)['has_pending_refund']
+ if ctx['page_obj'].paginator.count < 1000:
+ # Performance safeguard: Only count positions if the data set is small
+ ctx['sums'] = self.get_queryset().annotate(
+ pcnt=Subquery(s, output_field=IntegerField())
+ ).aggregate(
+ s=Sum('total'), pc=Sum('pcnt'), c=Count('id')
+ )
+ else:
+ ctx['sums'] = self.get_queryset().aggregate(s=Sum('total'), c=Count('id'))
return ctx
@cached_property
|