mirror of
https://github.com/pretix/pretix.git
synced 2026-05-14 16:44:06 +00:00
fix tests
This commit is contained in:
@@ -71,20 +71,18 @@ class RelativeDateWrapper:
|
||||
:param reference:
|
||||
:return:
|
||||
"""
|
||||
from .models import SubEvent, Event, Order
|
||||
from .models import Event, Order, SubEvent
|
||||
|
||||
if self.data.base_date_name in ORDER_CHOICES_KEYS:
|
||||
if not isinstance(reference, Order):
|
||||
raise ValueError('A order-based relative datetime choice must be used with an order object')
|
||||
event = reference.event
|
||||
base_date = getattr(order, self.data.base_date_name)
|
||||
base_date = getattr(reference, self.data.base_date_name)
|
||||
elif isinstance(reference, SubEvent):
|
||||
event = reference.event
|
||||
base_date = (
|
||||
getattr(reference, self.data.base_date_name)
|
||||
or getattr(reference.event, self.data.base_date_name)
|
||||
or reference.date_from
|
||||
)
|
||||
base_date = (getattr(reference, self.data.base_date_name) or
|
||||
getattr(reference.event, self.data.base_date_name) or
|
||||
reference.date_from)
|
||||
elif isinstance(reference, Event):
|
||||
event = reference
|
||||
base_date = getattr(reference, self.data.base_date_name) or event.date_from
|
||||
@@ -188,7 +186,7 @@ class RelativeDateWrapper:
|
||||
minutes=None,
|
||||
is_after=len(parts) > 4 and parts[4] == "after",
|
||||
)
|
||||
if data.base_date_name in [k[0] for k in ORDER_CHOICES] and parts[4] == "before":
|
||||
if data.base_date_name in [k[0] for k in ORDER_CHOICES] and parts[4] != "after":
|
||||
raise ValueError('ORDER_CHOICE: {} cannot be combined with "before"'.format(data.base_date_name))
|
||||
if data.base_date_name not in [k[0] for k in EVENT_CHOICES + ORDER_CHOICES]:
|
||||
raise ValueError('{} is not a valid base date'.format(data.base_date_name))
|
||||
@@ -569,7 +567,6 @@ class RelativeDateField(RelativeDateTimeField):
|
||||
elif data.status == 'relative' and data.rel_days_relationto in ORDER_CHOICES_KEYS and data.rel_days_relation == 'before':
|
||||
raise ValidationError(_('A relative date in relation to an order can only be after the order has been placed'))
|
||||
|
||||
|
||||
return forms.MultiValueField.clean(self, value)
|
||||
|
||||
|
||||
|
||||
@@ -25,7 +25,7 @@ from zoneinfo import ZoneInfo
|
||||
import pytest
|
||||
from django_scopes import scope
|
||||
|
||||
from pretix.base.models import Event, Organizer, Order
|
||||
from pretix.base.models import Event, Order, Organizer
|
||||
from pretix.base.reldate import RelativeDate, RelativeDateWrapper
|
||||
|
||||
TOKYO = ZoneInfo('Asia/Tokyo')
|
||||
@@ -46,7 +46,6 @@ def event():
|
||||
return event
|
||||
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
def test_absolute_date(event):
|
||||
d = datetime(2017, 12, 25, 5, 0, 0, tzinfo=TOKYO)
|
||||
@@ -149,6 +148,7 @@ def test_unserialize():
|
||||
rdw = RelativeDateWrapper.from_string('RELDATE/minutes/60/date_from/')
|
||||
assert rdw.data == RelativeDate(days=0, time=None, base_date_name='date_from', minutes=60)
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
def test_relative_to_order(event):
|
||||
with scope(organizer=event.organizer):
|
||||
@@ -166,6 +166,9 @@ def test_relative_to_order(event):
|
||||
rdw = RelativeDateWrapper(RelativeDate(days=1, time=None, base_date_name='datetime', minutes=None))
|
||||
assert rdw.datetime(order).astimezone(TOKYO) == datetime(2020, 3, 28, 18, 0, 0, tzinfo=TOKYO)
|
||||
assert rdw.to_string() == 'RELDATE/1/-/datetime/'
|
||||
# this is expressible as a RelativeDate but the Wrapper should catch it as invalid when parsing
|
||||
with pytest.raises(ValueError):
|
||||
rdw.from_string(rdw.to_string())
|
||||
|
||||
rdw = RelativeDateWrapper(RelativeDate(days=1, time=None, base_date_name='datetime', minutes=None, is_after=True))
|
||||
assert rdw.datetime(order).astimezone(TOKYO) == datetime(2020, 3, 30, 18, 0, 0, tzinfo=TOKYO)
|
||||
|
||||
Reference in New Issue
Block a user