forked from CGM_Public/pretix_original
fix tests
This commit is contained in:
@@ -71,20 +71,18 @@ class RelativeDateWrapper:
|
|||||||
:param reference:
|
:param reference:
|
||||||
:return:
|
:return:
|
||||||
"""
|
"""
|
||||||
from .models import SubEvent, Event, Order
|
from .models import Event, Order, SubEvent
|
||||||
|
|
||||||
if self.data.base_date_name in ORDER_CHOICES_KEYS:
|
if self.data.base_date_name in ORDER_CHOICES_KEYS:
|
||||||
if not isinstance(reference, Order):
|
if not isinstance(reference, Order):
|
||||||
raise ValueError('A order-based relative datetime choice must be used with an order object')
|
raise ValueError('A order-based relative datetime choice must be used with an order object')
|
||||||
event = reference.event
|
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):
|
elif isinstance(reference, SubEvent):
|
||||||
event = reference.event
|
event = reference.event
|
||||||
base_date = (
|
base_date = (getattr(reference, self.data.base_date_name) or
|
||||||
getattr(reference, self.data.base_date_name)
|
getattr(reference.event, self.data.base_date_name) or
|
||||||
or getattr(reference.event, self.data.base_date_name)
|
reference.date_from)
|
||||||
or reference.date_from
|
|
||||||
)
|
|
||||||
elif isinstance(reference, Event):
|
elif isinstance(reference, Event):
|
||||||
event = reference
|
event = reference
|
||||||
base_date = getattr(reference, self.data.base_date_name) or event.date_from
|
base_date = getattr(reference, self.data.base_date_name) or event.date_from
|
||||||
@@ -188,7 +186,7 @@ class RelativeDateWrapper:
|
|||||||
minutes=None,
|
minutes=None,
|
||||||
is_after=len(parts) > 4 and parts[4] == "after",
|
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))
|
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]:
|
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))
|
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':
|
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'))
|
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)
|
return forms.MultiValueField.clean(self, value)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ from zoneinfo import ZoneInfo
|
|||||||
import pytest
|
import pytest
|
||||||
from django_scopes import scope
|
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
|
from pretix.base.reldate import RelativeDate, RelativeDateWrapper
|
||||||
|
|
||||||
TOKYO = ZoneInfo('Asia/Tokyo')
|
TOKYO = ZoneInfo('Asia/Tokyo')
|
||||||
@@ -46,7 +46,6 @@ def event():
|
|||||||
return event
|
return event
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.django_db
|
@pytest.mark.django_db
|
||||||
def test_absolute_date(event):
|
def test_absolute_date(event):
|
||||||
d = datetime(2017, 12, 25, 5, 0, 0, tzinfo=TOKYO)
|
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/')
|
rdw = RelativeDateWrapper.from_string('RELDATE/minutes/60/date_from/')
|
||||||
assert rdw.data == RelativeDate(days=0, time=None, base_date_name='date_from', minutes=60)
|
assert rdw.data == RelativeDate(days=0, time=None, base_date_name='date_from', minutes=60)
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.django_db
|
@pytest.mark.django_db
|
||||||
def test_relative_to_order(event):
|
def test_relative_to_order(event):
|
||||||
with scope(organizer=event.organizer):
|
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))
|
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.datetime(order).astimezone(TOKYO) == datetime(2020, 3, 28, 18, 0, 0, tzinfo=TOKYO)
|
||||||
assert rdw.to_string() == 'RELDATE/1/-/datetime/'
|
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))
|
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)
|
assert rdw.datetime(order).astimezone(TOKYO) == datetime(2020, 3, 30, 18, 0, 0, tzinfo=TOKYO)
|
||||||
|
|||||||
Reference in New Issue
Block a user