Allow attendees to modify their data (Z#23152886) (#4138)

* Allow attendees to modify their data

* Allow attendees to change ticket information

* Update src/pretix/control/templates/pretixcontrol/event/settings.html

Co-authored-by: Mira <weller@rami.io>

* Update src/pretix/presale/views/order.py

Co-authored-by: Mira <weller@rami.io>

* Update src/pretix/base/services/placeholders.py

Co-authored-by: Mira <weller@rami.io>

* Tests fix

* Fix test

---------

Co-authored-by: Mira <weller@rami.io>
This commit is contained in:
Raphael Michel
2024-05-08 15:18:33 +02:00
committed by GitHub
parent aa55eb2de2
commit e8f7cea1bf
12 changed files with 347 additions and 28 deletions

View File

@@ -1263,22 +1263,34 @@ class OrderTestCase(BaseQuotaTestCase):
self.event.settings.set('invoice_address_asked', False)
self.event.settings.set('attendee_names_asked', True)
assert self.order.can_modify_answers
assert not self.op1.can_modify_answers
self.event.settings.set('allow_modifications', 'attendee')
assert self.op1.can_modify_answers
self.event.settings.set('attendee_names_asked', False)
assert not self.order.can_modify_answers
assert not self.op1.can_modify_answers
self.event.settings.set('invoice_address_asked', True)
assert self.order.can_modify_answers
assert not self.op1.can_modify_answers
self.event.settings.set('invoice_address_asked', False)
self.event.settings.set('invoice_name_required', True)
assert self.order.can_modify_answers
assert not self.op1.can_modify_answers
q = Question.objects.create(question='Foo', type=Question.TYPE_BOOLEAN, event=self.event)
self.item1.questions.add(q)
assert self.order.can_modify_answers
assert self.op1.can_modify_answers
self.order.status = Order.STATUS_CANCELED
assert not self.order.can_modify_answers
assert not self.op1.can_modify_answers
self.order.status = Order.STATUS_PAID
assert self.order.can_modify_answers
assert self.op1.can_modify_answers
self.event.settings.set('last_order_modification_date', now() - timedelta(days=1))
assert not self.order.can_modify_answers
assert not self.op1.can_modify_answers
@classscope(attr='o')
def test_can_modify_answers_subevent(self):