mirror of
https://github.com/pretix/pretix.git
synced 2026-05-03 14:54:04 +00:00
- [x] attendee names - [x] Invoice address names - [x] Data migration - [x] API serializers - [x] orderposition - [x] cartposition - [x] invoiceaddress - [x] checkinlistposition - [x] position API search - [x] invoice API search - [x] business/individual required toggle - [x] Split columns in CSV exports - [x] ticket editor - [x] shredder - [x] ticket/invoice sample data - [x] order search - [x] Handle changed naming scheme - [x] tests - [x] make use in: - [x] Boabee - [x] Certificate download order - [x] Badge download order - [x] Ticket download order - [x] Document new MySQL requirement - [x] Plugins
This commit is contained in:
@@ -29,11 +29,11 @@ def env():
|
||||
shirt_red = ItemVariation.objects.create(item=shirt, default_price=14, value="Red")
|
||||
OrderPosition.objects.create(
|
||||
order=o1, item=shirt, variation=shirt_red,
|
||||
price=12, attendee_name=None, secret='1234'
|
||||
price=12, attendee_name_parts={}, secret='1234'
|
||||
)
|
||||
OrderPosition.objects.create(
|
||||
order=o1, item=shirt, variation=shirt_red,
|
||||
price=12, attendee_name=None, secret='5678'
|
||||
price=12, attendee_name_parts={}, secret='5678'
|
||||
)
|
||||
return event, o1, shirt
|
||||
|
||||
|
||||
@@ -36,11 +36,11 @@ def env():
|
||||
)
|
||||
op1 = OrderPosition.objects.create(
|
||||
order=o1, item=shirt, variation=shirt_red,
|
||||
price=12, attendee_name=None, secret='1234'
|
||||
price=12, attendee_name_parts={}, secret='1234'
|
||||
)
|
||||
op2 = OrderPosition.objects.create(
|
||||
order=o1, item=ticket,
|
||||
price=23, attendee_name="Peter", secret='5678910'
|
||||
price=23, attendee_name_parts={"full_name": "Peter", "_scheme": "full"}, secret='5678910'
|
||||
)
|
||||
cl1 = event.checkin_lists.create(name="Foo", all_products=True)
|
||||
cl2 = event.checkin_lists.create(name="Bar", all_products=True)
|
||||
@@ -273,7 +273,7 @@ def test_search_restricted(client, env):
|
||||
@pytest.mark.django_db
|
||||
def test_search_invoice_name(client, env):
|
||||
AppConfiguration.objects.create(event=env[0], key='abcdefg', list=env[5])
|
||||
InvoiceAddress.objects.create(order=env[2], name="John")
|
||||
InvoiceAddress.objects.create(order=env[2], name_parts={"full_name": "John", "_scheme": "full"})
|
||||
resp = client.get('/pretixdroid/api/%s/%s/search/?key=%s&query=%s' % (
|
||||
env[0].organizer.slug, env[0].slug, 'abcdefg', 'John'))
|
||||
jdata = json.loads(resp.content.decode("utf-8"))
|
||||
|
||||
@@ -39,11 +39,11 @@ def env():
|
||||
)
|
||||
op1 = OrderPosition.objects.create(
|
||||
order=o1, item=shirt, variation=shirt_red,
|
||||
price=12, attendee_name=None, secret='1234', subevent=se1
|
||||
price=12, attendee_name_parts={}, secret='1234', subevent=se1
|
||||
)
|
||||
op2 = OrderPosition.objects.create(
|
||||
order=o1, item=ticket,
|
||||
price=23, attendee_name="Peter", secret='5678910', subevent=se2
|
||||
price=23, attendee_name_parts={'full_name': "Peter"}, secret='5678910', subevent=se2
|
||||
)
|
||||
cl1 = event.checkin_lists.create(name="Foo", all_products=True, subevent=se1)
|
||||
cl2 = event.checkin_lists.create(name="Foo", all_products=True, subevent=se2)
|
||||
|
||||
108
src/tests/plugins/test_checkinlist.py
Normal file
108
src/tests/plugins/test_checkinlist.py
Normal file
@@ -0,0 +1,108 @@
|
||||
import datetime
|
||||
from decimal import Decimal
|
||||
|
||||
import pytest
|
||||
from django.utils.timezone import now
|
||||
|
||||
from pretix.base.models import Event, Item, Order, OrderPosition, Organizer
|
||||
from pretix.plugins.checkinlists.exporters import CSVCheckinList
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def event():
|
||||
"""Returns an event instance"""
|
||||
o = Organizer.objects.create(name='Dummy', slug='dummy')
|
||||
event = Event.objects.create(
|
||||
organizer=o, name='Dummy', slug='dummy',
|
||||
date_from=now(),
|
||||
plugins='pretix.plugins.checkinlists,tests.testdummy',
|
||||
)
|
||||
event.settings.set('attendee_names_asked', True)
|
||||
event.settings.set('name_scheme', 'title_given_middle_family')
|
||||
event.settings.set('locales', ['en', 'de'])
|
||||
event.checkin_lists.create(name="Default", all_products=True)
|
||||
|
||||
order_paid = Order.objects.create(
|
||||
code='FOO', event=event, email='dummy@dummy.test',
|
||||
status=Order.STATUS_PAID,
|
||||
datetime=now(), expires=now() + datetime.timedelta(days=10),
|
||||
total=33, locale='en'
|
||||
)
|
||||
item_ticket = Item.objects.create(event=event, name="Ticket", default_price=23, admission=True)
|
||||
OrderPosition.objects.create(
|
||||
order=order_paid,
|
||||
item=item_ticket,
|
||||
variation=None,
|
||||
price=Decimal("23"),
|
||||
attendee_name_parts={"title": "Mr", "given_name": "Peter", "middle_name": "A", "family_name": "Jones"},
|
||||
secret='hutjztuxhkbtwnesv2suqv26k6ttytxx'
|
||||
)
|
||||
OrderPosition.objects.create(
|
||||
order=order_paid,
|
||||
item=item_ticket,
|
||||
variation=None,
|
||||
price=Decimal("13"),
|
||||
attendee_name_parts={"title": "Mrs", "given_name": "Andrea", "middle_name": "J", "family_name": "Zulu"},
|
||||
secret='ggsngqtnmhx74jswjngw3fk8pfwz2a7k'
|
||||
)
|
||||
return event
|
||||
|
||||
|
||||
def clean(d):
|
||||
return d.replace("\r", "").replace("\n", "")
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
def test_csv_simple(event):
|
||||
c = CSVCheckinList(event)
|
||||
_, _, content = c.render({
|
||||
'list': event.checkin_lists.first().pk,
|
||||
'secrets': True,
|
||||
'sort': 'name',
|
||||
'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","Secret",
|
||||
"E-mail"
|
||||
"FOO","Mr Peter A Jones","Mr","Peter","A","Jones","Ticket","23.00","","hutjztuxhkbtwnesv2suqv26k6ttytxx",
|
||||
"dummy@dummy.test"
|
||||
"FOO","Mrs Andrea J Zulu","Mrs","Andrea","J","Zulu","Ticket","13.00","","ggsngqtnmhx74jswjngw3fk8pfwz2a7k",
|
||||
"dummy@dummy.test"
|
||||
""")
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
def test_csv_order_by_name_parts(event): # noqa
|
||||
from django.conf import settings
|
||||
if not settings.JSON_FIELD_AVAILABLE:
|
||||
raise pytest.skip("Not supported on this database")
|
||||
c = CSVCheckinList(event)
|
||||
_, _, content = c.render({
|
||||
'list': event.checkin_lists.first().pk,
|
||||
'secrets': True,
|
||||
'sort': 'name:given_name',
|
||||
'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","Secret","E-mail"
|
||||
"FOO","Mrs Andrea J Zulu","Mrs","Andrea","J","Zulu","Ticket","13.00","","ggsngqtnmhx74jswjngw3fk8pfwz2a7k",
|
||||
"dummy@dummy.test"
|
||||
"FOO","Mr Peter A Jones","Mr","Peter","A","Jones","Ticket","23.00","","hutjztuxhkbtwnesv2suqv26k6ttytxx",
|
||||
"dummy@dummy.test"
|
||||
""")
|
||||
c = CSVCheckinList(event)
|
||||
_, _, content = c.render({
|
||||
'list': event.checkin_lists.first().pk,
|
||||
'secrets': True,
|
||||
'sort': 'name:family_name',
|
||||
'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","Secret","E-mail"
|
||||
"FOO","Mr Peter A Jones","Mr","Peter","A","Jones","Ticket","23.00","","hutjztuxhkbtwnesv2suqv26k6ttytxx",
|
||||
"dummy@dummy.test"
|
||||
"FOO","Mrs Andrea J Zulu","Mrs","Andrea","J","Zulu","Ticket","13.00","","ggsngqtnmhx74jswjngw3fk8pfwz2a7k",
|
||||
"dummy@dummy.test"
|
||||
""")
|
||||
@@ -29,11 +29,11 @@ def env0():
|
||||
shirt_red = ItemVariation.objects.create(item=shirt, default_price=14, value="Red")
|
||||
OrderPosition.objects.create(
|
||||
order=o1, item=shirt, variation=shirt_red,
|
||||
price=12, attendee_name=None, secret='1234'
|
||||
price=12, attendee_name_parts={}, secret='1234'
|
||||
)
|
||||
OrderPosition.objects.create(
|
||||
order=o1, item=shirt, variation=shirt_red,
|
||||
price=12, attendee_name=None, secret='5678'
|
||||
price=12, attendee_name_parts={}, secret='5678'
|
||||
)
|
||||
return event, o1
|
||||
|
||||
|
||||
Reference in New Issue
Block a user