From d226bbda5c8dd65414bbe66f169fd3ff2dcfba33 Mon Sep 17 00:00:00 2001 From: Raphael Michel Date: Tue, 11 Feb 2020 16:25:48 +0100 Subject: [PATCH] Order data export: Add column with the number of positions --- src/pretix/base/exporters/orderlist.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/pretix/base/exporters/orderlist.py b/src/pretix/base/exporters/orderlist.py index 41446e7bd7..961164bcc3 100644 --- a/src/pretix/base/exporters/orderlist.py +++ b/src/pretix/base/exporters/orderlist.py @@ -3,7 +3,9 @@ from decimal import Decimal import pytz from django import forms -from django.db.models import DateTimeField, F, Max, OuterRef, Subquery, Sum +from django.db.models import ( + Count, DateTimeField, F, IntegerField, Max, OuterRef, Subquery, Sum, +) from django.dispatch import receiver from django.utils.formats import date_format from django.utils.translation import pgettext, ugettext as _, ugettext_lazy @@ -80,8 +82,12 @@ class OrderListExporter(MultiSheetListExporter): 'm' ).order_by() + s = OrderPosition.objects.filter( + order=OuterRef('pk') + ).order_by().values('order').annotate(k=Count('id')).values('k') qs = self.event.orders.annotate( - payment_date=Subquery(p_date, output_field=DateTimeField()) + payment_date=Subquery(p_date, output_field=DateTimeField()), + pcnt=Subquery(s, output_field=IntegerField()) ).select_related('invoice_address').prefetch_related('invoices') if form_data['paid_only']: qs = qs.filter(status=Order.STATUS_PAID) @@ -111,6 +117,7 @@ class OrderListExporter(MultiSheetListExporter): headers.append(_('Sales channel')) headers.append(_('Requires special attention')) headers.append(_('Comment')) + headers.append(_('Positions')) yield headers @@ -185,6 +192,7 @@ class OrderListExporter(MultiSheetListExporter): row.append(order.sales_channel) row.append(_('Yes') if order.checkin_attention else _('No')) row.append(order.comment or "") + row.append(order.pcnt) yield row def iterate_fees(self, form_data: dict):