Badges: Sort by last name

This commit is contained in:
Raphael Michel
2018-06-14 16:23:55 +02:00
parent b7174070fe
commit e95c9d73a1

View File

@@ -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()