mirror of
https://github.com/pretix/pretix.git
synced 2026-05-04 15:04:03 +00:00
SubEvent: Automatically bump all orders when date is changed
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
import datetime
|
||||
import sys
|
||||
import time
|
||||
from datetime import date, timedelta
|
||||
from decimal import Decimal
|
||||
|
||||
@@ -2566,3 +2567,38 @@ def test_question_answer_validation_multiple_choice():
|
||||
assert q.clean_answer([o1.pk, o3.pk + 1000]) == [o1]
|
||||
with pytest.raises(ValidationError):
|
||||
assert q.clean_answer([o1.pk, 'FOO']) == [o1]
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
def test_subevent_date_updates_order_date():
|
||||
# When the date of a subevent changes, all orders need to get a bumped modification date to hold
|
||||
# a required invariant of the libpretixsync synchronization approach.
|
||||
organizer = Organizer.objects.create(name='Dummy', slug='dummy')
|
||||
with scope(organizer=organizer):
|
||||
event = Event.objects.create(
|
||||
organizer=organizer, name='Dummy', slug='dummy',
|
||||
date_from=now(), date_to=now() - timedelta(hours=1), has_subevents=True
|
||||
)
|
||||
item1 = Item.objects.create(event=event, name="Ticket", default_price=23, admission=True)
|
||||
se1 = event.subevents.create(date_from=now(), name="SE 1")
|
||||
se2 = event.subevents.create(date_from=now(), name="SE 2")
|
||||
|
||||
order1 = Order.objects.create(event=event, status=Order.STATUS_PAID, expires=now() + timedelta(days=3), total=6)
|
||||
OrderPosition.objects.create(order=order1, item=item1, subevent=se1, price=2)
|
||||
order2 = Order.objects.create(event=event, status=Order.STATUS_PAID, expires=now() + timedelta(days=3), total=6)
|
||||
OrderPosition.objects.create(order=order2, item=item1, subevent=se2, price=2)
|
||||
|
||||
o1lm = order1.last_modified
|
||||
o2lm = order2.last_modified
|
||||
|
||||
time.sleep(1)
|
||||
se1.date_from += timedelta(days=2)
|
||||
se1.save()
|
||||
se2.name = "foo"
|
||||
se2.save()
|
||||
|
||||
order1.refresh_from_db()
|
||||
order2.refresh_from_db()
|
||||
|
||||
assert order1.last_modified > o1lm
|
||||
assert order2.last_modified == o2lm
|
||||
|
||||
Reference in New Issue
Block a user