Fix #978 -- Allow to split names (#1049)

- [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:
Raphael Michel
2018-11-05 15:43:21 +01:00
committed by GitHub
parent 7039374588
commit 94be46ffdb
71 changed files with 1219 additions and 244 deletions

View File

@@ -121,7 +121,10 @@ def test_address_vat_id(env):
event, order = env
event.settings.set('invoice_language', 'en')
InvoiceAddress.objects.create(company='Acme Company', street='221B Baker Street',
name='Sherlock Holmes', zipcode='12345', city='London', country_old='UK',
name_parts={'full_name': 'Sherlock Holmes', '_scheme': 'full'},
zipcode='12345',
city='London',
country_old='UK',
country='', vat_id='UK1234567', order=order)
inv = generate_invoice(order)
assert inv.invoice_to == "Acme Company\nSherlock Holmes\n221B Baker Street\n12345 London\nUK\nVAT-ID: UK1234567"

View File

@@ -34,7 +34,7 @@ def order(event):
default_price=Decimal('23.00'), admission=True)
OrderPosition.objects.create(
order=o, item=ticket, variation=None,
price=Decimal("23.00"), attendee_name="Peter", positionid=1
price=Decimal("23.00"), attendee_name_parts={'full_name': "Peter"}, positionid=1
)
return o

View File

@@ -309,7 +309,7 @@ class PaymentReminderTests(TestCase):
default_price=Decimal('23.00'), admission=True)
self.op1 = OrderPosition.objects.create(
order=self.order, item=self.ticket, variation=None,
price=Decimal("23.00"), attendee_name="Peter", positionid=1
price=Decimal("23.00"), attendee_name_parts={'full_name': "Peter"}, positionid=1
)
djmail.outbox = []
@@ -357,7 +357,7 @@ class DownloadReminderTests(TestCase):
default_price=Decimal('23.00'), admission=True)
self.op1 = OrderPosition.objects.create(
order=self.order, item=self.ticket, variation=None,
price=Decimal("23.00"), attendee_name="Peter", positionid=1
price=Decimal("23.00"), attendee_name_parts={"full_name": "Peter"}, positionid=1
)
djmail.outbox = []
@@ -411,11 +411,11 @@ class OrderChangeManagerTests(TestCase):
default_price=Decimal('12.00'))
self.op1 = OrderPosition.objects.create(
order=self.order, item=self.ticket, variation=None,
price=Decimal("23.00"), attendee_name="Peter", positionid=1
price=Decimal("23.00"), attendee_name_parts={'full_name': "Peter"}, positionid=1
)
self.op2 = OrderPosition.objects.create(
order=self.order, item=self.ticket, variation=None,
price=Decimal("23.00"), attendee_name="Dieter", positionid=2
price=Decimal("23.00"), attendee_name_parts={'full_name': "Dieter"}, positionid=2
)
self.ocm = OrderChangeManager(self.order, None)
self.quota = self.event.quotas.create(name='Test', size=None)

View File

@@ -154,11 +154,11 @@ def test_availability_date_order_relative_subevents(event):
)
OrderPosition.objects.create(
order=order, item=ticket, variation=None, subevent=se1,
price=Decimal("23.00"), attendee_name="Peter", positionid=1
price=Decimal("23.00"), attendee_name_parts={'full_name': "Peter"}, positionid=1
)
OrderPosition.objects.create(
order=order, item=ticket, variation=None, subevent=se2,
price=Decimal("23.00"), attendee_name="Dieter", positionid=2
price=Decimal("23.00"), attendee_name_parts={'full_name': "Dieter"}, positionid=2
)
prov = DummyPaymentProvider(event)

View File

@@ -54,7 +54,7 @@ def order(event, item):
item=item,
variation=None,
price=Decimal("14"),
attendee_name="Peter",
attendee_name_parts={'full_name': "Peter", "_scheme": "full"},
attendee_email="foo@example.org"
)
return o
@@ -155,7 +155,7 @@ def test_attendee_name_shredder(event, order):
}
s.shred_data()
order.refresh_from_db()
assert order.positions.first().attendee_name is None
assert not order.positions.first().attendee_name
l1.refresh_from_db()
assert 'Hans' not in l1.data
assert 'Foo' in l1.data
@@ -186,6 +186,7 @@ def test_invoice_address_shredder(event, order):
'is_business': False,
'last_modified': ia.last_modified.isoformat().replace('+00:00', 'Z'),
'name': '',
'name_parts': {},
'street': '221B Baker Street',
'vat_id': '',
'vat_id_validated': False,