diff --git a/src/pretix/plugins/badges/exporters.py b/src/pretix/plugins/badges/exporters.py index bb0f08b54..220ce0df4 100644 --- a/src/pretix/plugins/badges/exporters.py +++ b/src/pretix/plugins/badges/exporters.py @@ -83,6 +83,14 @@ class BadgeExporter(BaseExporter): label=_('Include pending orders'), required=False )), + ('order_by', + forms.ChoiceField( + label=_('Sort by'), + choices=( + ('name', _('Attendee name')), + ('last_name', _('Last part of attendee name')), + ) + )), ] ) return d @@ -99,5 +107,11 @@ class BadgeExporter(BaseExporter): else: qs = qs.filter(order__status__in=[Order.STATUS_PAID]) + if form_data.get('order_by') == 'name': + qs = qs.order_by('attendee_name', 'order__code') + elif form_data.get('order_by') == 'last_name': + qs = qs.order_by('order__code') + qs = sorted(qs, key=lambda op: op.attendee_name.split()[-1] if op.attendee_name else '') + outbuffer = render_pdf(self.event, qs) return 'badges.pdf', 'application/pdf', outbuffer.read()