Fix #1468 -- Fix sorting by fallback name parts in check-in lists

This commit is contained in:
Raphael Michel
2019-10-29 19:50:28 +01:00
parent f473439f77
commit b156efaae8
4 changed files with 118 additions and 7 deletions

View File

@@ -6,7 +6,9 @@ import pytz
from django.utils.timezone import now
from django_scopes import scope
from pretix.base.models import Event, Item, Order, OrderPosition, Organizer
from pretix.base.models import (
Event, InvoiceAddress, Item, Order, OrderPosition, Organizer,
)
from pretix.plugins.checkinlists.exporters import CSVCheckinList
@@ -114,3 +116,89 @@ def test_csv_order_by_name_parts(event): # noqa
"FOO","Mrs Andrea J Zulu","Mrs","Andrea","J","Zulu","Ticket","13.00","","No","ggsngqtnmhx74jswjngw3fk8pfwz2a7k",
"dummy@dummy.test","","","2019-02-22","No",""
""")
@pytest.mark.django_db
def test_csv_order_by_inherited_name_parts(event): # noqa
from django.conf import settings
if not settings.JSON_FIELD_AVAILABLE:
raise pytest.skip("Not supported on this database")
with scope(organizer=event.organizer):
OrderPosition.objects.filter(attendee_name_cached__icontains="Andrea").delete()
op = OrderPosition.objects.get()
op.attendee_name_parts = {}
op.save()
order2 = Order.objects.create(
code='BAR', event=event, email='dummy@dummy.test',
status=Order.STATUS_PAID,
datetime=datetime.datetime(2019, 2, 22, 14, 0, 0, tzinfo=pytz.UTC), expires=now() + datetime.timedelta(days=10),
total=33, locale='en'
)
OrderPosition.objects.create(
order=order2,
item=event.items.first(),
variation=None,
price=Decimal("23"),
secret='hutjztuxhkbtwnesv2suqv26k6ttytyy'
)
InvoiceAddress.objects.create(
order=event.orders.get(code='BAR'),
name_parts={"title": "Mr", "given_name": "Albert", "middle_name": "J", "family_name": "Zulu", "_scheme": "title_given_middle_family"}
)
InvoiceAddress.objects.create(
order=event.orders.get(code='FOO'),
name_parts={"title": "Mr", "given_name": "Paul", "middle_name": "A", "family_name": "Jones", "_scheme": "title_given_middle_family"}
)
c = CSVCheckinList(event)
_, _, content = c.render({
'list': event.checkin_lists.first().pk,
'secrets': True,
'sort': 'name',
'_format': 'default',
'questions': []
})
assert clean(content.decode()) == clean(""""Order code","Attendee name","Attendee name: Title",
"Attendee name: First name","Attendee name: Middle name","Attendee name: Family name","Product","Price",
"Checked in","Automatically checked in","Secret","E-mail","Company","Voucher code","Order date","Requires special
attention","Comment"
"BAR","Mr Albert J Zulu","Mr","Albert","J","Zulu","Ticket","23.00","","No","hutjztuxhkbtwnesv2suqv26k6ttytyy",
"dummy@dummy.test","","","2019-02-22","No",""
"FOO","Mr Paul A Jones","Mr","Paul","A","Jones","Ticket","23.00","","No","hutjztuxhkbtwnesv2suqv26k6ttytxx",
"dummy@dummy.test","","","2019-02-22","No",""
""")
c = CSVCheckinList(event)
_, _, content = c.render({
'list': event.checkin_lists.first().pk,
'secrets': True,
'sort': 'name:given_name',
'_format': 'default',
'questions': []
})
assert clean(content.decode()) == clean(""""Order code","Attendee name","Attendee name: Title",
"Attendee name: First name","Attendee name: Middle name","Attendee name: Family name","Product","Price",
"Checked in","Automatically checked in","Secret","E-mail","Company","Voucher code","Order date","Requires special
attention","Comment"
"BAR","Mr Albert J Zulu","Mr","Albert","J","Zulu","Ticket","23.00","","No","hutjztuxhkbtwnesv2suqv26k6ttytyy",
"dummy@dummy.test","","","2019-02-22","No",""
"FOO","Mr Paul A Jones","Mr","Paul","A","Jones","Ticket","23.00","","No","hutjztuxhkbtwnesv2suqv26k6ttytxx",
"dummy@dummy.test","","","2019-02-22","No",""
""")
c = CSVCheckinList(event)
_, _, content = c.render({
'list': event.checkin_lists.first().pk,
'secrets': True,
'sort': 'name:family_name',
'_format': 'default',
'questions': []
})
assert clean(content.decode()) == clean(""""Order code","Attendee name","Attendee name: Title",
"Attendee name: First name","Attendee name: Middle name","Attendee name: Family name","Product","Price",
"Checked in","Automatically checked in","Secret","E-mail","Company","Voucher code","Order date","Requires special
attention","Comment"
"FOO","Mr Paul A Jones","Mr","Paul","A","Jones","Ticket","23.00","","No","hutjztuxhkbtwnesv2suqv26k6ttytxx",
"dummy@dummy.test","","","2019-02-22","No",""
"BAR","Mr Albert J Zulu","Mr","Albert","J","Zulu","Ticket","23.00","","No","hutjztuxhkbtwnesv2suqv26k6ttytyy",
"dummy@dummy.test","","","2019-02-22","No",""
""")