mirror of
https://github.com/pretix/pretix.git
synced 2026-05-05 15:14:04 +00:00
Bump Django to 4.1.* (#2989)
This commit is contained in:
@@ -135,7 +135,7 @@ def test_checkin_blocked_position(position, clist):
|
||||
|
||||
@pytest.mark.django_db
|
||||
def test_checkin_valid_from(event, position, clist):
|
||||
position.valid_from = event.timezone.localize(datetime(2020, 1, 1, 12, 0, 0))
|
||||
position.valid_from = datetime(2020, 1, 1, 12, 0, 0, tzinfo=event.timezone)
|
||||
position.save()
|
||||
with freeze_time("2020-01-01 10:45:00"):
|
||||
with pytest.raises(CheckInError) as excinfo:
|
||||
@@ -153,7 +153,7 @@ def test_checkin_valid_from(event, position, clist):
|
||||
|
||||
@pytest.mark.django_db
|
||||
def test_checkin_valid_until(event, position, clist):
|
||||
position.valid_until = event.timezone.localize(datetime(2020, 1, 1, 9, 0, 0))
|
||||
position.valid_until = datetime(2020, 1, 1, 9, 0, 0, tzinfo=event.timezone)
|
||||
position.save()
|
||||
with freeze_time("2020-01-01 10:45:00"):
|
||||
with pytest.raises(CheckInError) as excinfo:
|
||||
@@ -712,7 +712,7 @@ def test_rules_scan_days(event, position, clist):
|
||||
def test_rules_time_isafter_tolerance(event, position, clist):
|
||||
# Ticket is valid starting 10 minutes before admission time
|
||||
event.settings.timezone = 'Europe/Berlin'
|
||||
event.date_admission = event.timezone.localize(datetime(2020, 1, 1, 12, 0, 0))
|
||||
event.date_admission = datetime(2020, 1, 1, 12, 0, 0, tzinfo=event.timezone)
|
||||
event.save()
|
||||
clist.rules = {"isAfter": [{"var": "now"}, {"buildTime": ["date_admission"]}, 10]}
|
||||
clist.save()
|
||||
@@ -732,7 +732,7 @@ def test_rules_time_isafter_tolerance(event, position, clist):
|
||||
def test_rules_time_isafter_no_tolerance(event, position, clist):
|
||||
# Ticket is valid only after admission time
|
||||
event.settings.timezone = 'Europe/Berlin'
|
||||
event.date_from = event.timezone.localize(datetime(2020, 1, 1, 12, 0, 0))
|
||||
event.date_from = datetime(2020, 1, 1, 12, 0, 0, tzinfo=event.timezone)
|
||||
# also tests that date_admission falls back to date_from
|
||||
event.save()
|
||||
clist.rules = {"isAfter": [{"var": "now"}, {"buildTime": ["date_admission"]}]}
|
||||
@@ -753,7 +753,7 @@ def test_rules_time_isafter_no_tolerance(event, position, clist):
|
||||
def test_rules_time_isbefore_with_tolerance(event, position, clist):
|
||||
# Ticket is valid until 10 minutes after end time
|
||||
event.settings.timezone = 'Europe/Berlin'
|
||||
event.date_to = event.timezone.localize(datetime(2020, 1, 1, 12, 0, 0))
|
||||
event.date_to = datetime(2020, 1, 1, 12, 0, 0, tzinfo=event.timezone)
|
||||
event.save()
|
||||
clist.rules = {"isBefore": [{"var": "now"}, {"buildTime": ["date_to"]}, 10]}
|
||||
clist.save()
|
||||
@@ -809,7 +809,7 @@ def test_rules_isafter_subevent(position, clist, event):
|
||||
event.has_subevents = True
|
||||
event.save()
|
||||
event.settings.timezone = 'Europe/Berlin'
|
||||
se1 = event.subevents.create(name="Foo", date_from=event.timezone.localize(datetime(2020, 2, 1, 12, 0, 0)))
|
||||
se1 = event.subevents.create(name="Foo", date_from=datetime(2020, 2, 1, 12, 0, 0, tzinfo=event.timezone))
|
||||
position.subevent = se1
|
||||
position.save()
|
||||
clist.rules = {"isAfter": [{"var": "now"}, {"buildTime": ["date_admission"]}]}
|
||||
@@ -949,7 +949,7 @@ def test_position_queries(django_assert_num_queries, position, clist):
|
||||
|
||||
@pytest.mark.django_db(transaction=True)
|
||||
def test_auto_checkout_at_correct_time(event, position, clist):
|
||||
clist.exit_all_at = event.timezone.localize(datetime(2020, 1, 2, 3, 0))
|
||||
clist.exit_all_at = datetime(2020, 1, 2, 3, 0, tzinfo=event.timezone)
|
||||
clist.save()
|
||||
with freeze_time("2020-01-01 10:00:00+01:00"):
|
||||
perform_checkin(position, clist, {})
|
||||
@@ -962,12 +962,12 @@ def test_auto_checkout_at_correct_time(event, position, clist):
|
||||
assert position.checkins.count() == 2
|
||||
assert position.checkins.first().type == Checkin.TYPE_EXIT
|
||||
clist.refresh_from_db()
|
||||
assert clist.exit_all_at == event.timezone.localize(datetime(2020, 1, 3, 3, 0))
|
||||
assert clist.exit_all_at == datetime(2020, 1, 3, 3, 0, tzinfo=event.timezone)
|
||||
|
||||
|
||||
@pytest.mark.django_db(transaction=True)
|
||||
def test_auto_check_out_only_if_checked_in(event, position, clist):
|
||||
clist.exit_all_at = event.timezone.localize(datetime(2020, 1, 2, 3, 0))
|
||||
clist.exit_all_at = datetime(2020, 1, 2, 3, 0, tzinfo=event.timezone)
|
||||
clist.save()
|
||||
with freeze_time("2020-01-02 03:05:00+01:00"):
|
||||
process_exit_all(sender=None)
|
||||
@@ -985,7 +985,7 @@ def test_auto_check_out_only_if_checked_in(event, position, clist):
|
||||
|
||||
@pytest.mark.django_db(transaction=True)
|
||||
def test_auto_check_out_only_if_checked_in_before_exit_all_at(event, position, clist):
|
||||
clist.exit_all_at = event.timezone.localize(datetime(2020, 1, 2, 3, 0))
|
||||
clist.exit_all_at = datetime(2020, 1, 2, 3, 0, tzinfo=event.timezone)
|
||||
clist.save()
|
||||
with freeze_time("2020-01-02 04:05:00+01:00"):
|
||||
perform_checkin(position, clist, {})
|
||||
@@ -999,37 +999,37 @@ def test_auto_check_out_dst(event, position, clist):
|
||||
event.settings.timezone = 'Europe/Berlin'
|
||||
|
||||
# Survive across a shift that doesn't affect the time in question
|
||||
clist.exit_all_at = event.timezone.localize(datetime(2021, 3, 28, 1, 0))
|
||||
clist.exit_all_at = datetime(2021, 3, 28, 1, 0, tzinfo=event.timezone)
|
||||
clist.save()
|
||||
with freeze_time(clist.exit_all_at + timedelta(minutes=5)):
|
||||
process_exit_all(sender=None)
|
||||
clist.refresh_from_db()
|
||||
assert clist.exit_all_at.astimezone(event.timezone) == event.timezone.localize(datetime(2021, 3, 29, 1, 0))
|
||||
assert clist.exit_all_at.astimezone(event.timezone) == datetime(2021, 3, 29, 1, 0, tzinfo=event.timezone)
|
||||
|
||||
# Survive across a shift that makes the time in question ambigous
|
||||
clist.exit_all_at = event.timezone.localize(datetime(2021, 10, 30, 2, 30))
|
||||
clist.exit_all_at = datetime(2021, 10, 30, 2, 30, tzinfo=event.timezone)
|
||||
clist.save()
|
||||
with freeze_time(clist.exit_all_at + timedelta(minutes=5)):
|
||||
process_exit_all(sender=None)
|
||||
clist.refresh_from_db()
|
||||
assert clist.exit_all_at.astimezone(event.timezone) == event.timezone.localize(datetime(2021, 10, 31, 2, 30))
|
||||
assert clist.exit_all_at.astimezone(event.timezone) == datetime(2021, 10, 31, 2, 30, tzinfo=event.timezone)
|
||||
with freeze_time(clist.exit_all_at + timedelta(minutes=5)):
|
||||
process_exit_all(sender=None)
|
||||
clist.refresh_from_db()
|
||||
assert clist.exit_all_at.astimezone(event.timezone) == event.timezone.localize(datetime(2021, 11, 1, 2, 30))
|
||||
assert clist.exit_all_at.astimezone(event.timezone) == datetime(2021, 11, 1, 2, 30, tzinfo=event.timezone)
|
||||
|
||||
# Doesn't survive across a shift that makes the time in question non-existant
|
||||
clist.exit_all_at = event.timezone.localize(datetime(2021, 3, 27, 2, 30))
|
||||
# Moves back after a shift that makes the time in question non-existant
|
||||
clist.exit_all_at = datetime(2021, 3, 27, 2, 30, tzinfo=event.timezone)
|
||||
clist.save()
|
||||
with freeze_time(clist.exit_all_at + timedelta(minutes=5)):
|
||||
process_exit_all(sender=None)
|
||||
clist.refresh_from_db()
|
||||
assert clist.exit_all_at.astimezone(event.timezone) == event.timezone.localize(datetime(2021, 3, 28, 2, 30))
|
||||
assert clist.exit_all_at.astimezone(event.timezone) == datetime(2021, 3, 28, 3, 30, tzinfo=event.timezone)
|
||||
with freeze_time(clist.exit_all_at + timedelta(minutes=5)):
|
||||
process_exit_all(sender=None)
|
||||
clist.refresh_from_db()
|
||||
assert clist.exit_all_at.astimezone(event.timezone) == event.timezone.localize(datetime(2021, 3, 29, 2, 30))
|
||||
assert clist.exit_all_at.astimezone(event.timezone) == datetime(2021, 3, 29, 2, 30, tzinfo=event.timezone)
|
||||
with freeze_time(clist.exit_all_at + timedelta(minutes=5)):
|
||||
process_exit_all(sender=None)
|
||||
clist.refresh_from_db()
|
||||
assert clist.exit_all_at.astimezone(event.timezone) == event.timezone.localize(datetime(2021, 3, 30, 2, 30))
|
||||
assert clist.exit_all_at.astimezone(event.timezone) == datetime(2021, 3, 30, 2, 30, tzinfo=event.timezone)
|
||||
|
||||
@@ -19,10 +19,9 @@
|
||||
# You should have received a copy of the GNU Affero General Public License along with this program. If not, see
|
||||
# <https://www.gnu.org/licenses/>.
|
||||
#
|
||||
from datetime import datetime, time, timedelta
|
||||
from datetime import datetime, time, timedelta, timezone
|
||||
|
||||
import pytest
|
||||
import pytz
|
||||
from django.core import mail as djmail
|
||||
from django.utils.timezone import now
|
||||
from django_scopes import scope
|
||||
@@ -39,7 +38,7 @@ def event():
|
||||
o = Organizer.objects.create(name='Dummy', slug='dummy')
|
||||
event = Event.objects.create(
|
||||
organizer=o, name='Dummy', slug='dummy',
|
||||
date_from=datetime(2023, 1, 19, 2, 30, 0, tzinfo=pytz.UTC),
|
||||
date_from=datetime(2023, 1, 19, 2, 30, 0, tzinfo=timezone.utc),
|
||||
plugins='pretix.plugins.banktransfer'
|
||||
)
|
||||
o.settings.timezone = "Europe/Berlin"
|
||||
@@ -70,7 +69,7 @@ def test_event_run_sets_new_time(event, user):
|
||||
|
||||
run_scheduled_exports(None)
|
||||
s.refresh_from_db()
|
||||
assert s.schedule_next_run == event.timezone.localize(datetime(2023, 1, 19, 2, 30, 0))
|
||||
assert s.schedule_next_run == datetime(2023, 1, 19, 2, 30, 0, tzinfo=event.timezone)
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
@@ -79,13 +78,13 @@ def test_event_not_run_when_failed_5_times(event, user):
|
||||
s = ScheduledEventExport(event=event, owner=user)
|
||||
s.schedule_rrule = "DTSTART:20230118T000000\nRRULE:FREQ=DAILY;INTERVAL=1;WKST=MO"
|
||||
s.schedule_rrule_time = time(2, 30, 0)
|
||||
s.schedule_next_run = event.timezone.localize(datetime(2023, 1, 18, 2, 30, 0))
|
||||
s.schedule_next_run = datetime(2023, 1, 18, 2, 30, 0, tzinfo=event.timezone)
|
||||
s.error_counter = 5
|
||||
s.save()
|
||||
|
||||
run_scheduled_exports(None)
|
||||
s.refresh_from_db()
|
||||
assert s.schedule_next_run == event.timezone.localize(datetime(2023, 1, 18, 2, 30, 0))
|
||||
assert s.schedule_next_run == datetime(2023, 1, 18, 2, 30, 0, tzinfo=event.timezone)
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
@@ -200,7 +199,7 @@ def test_organizer_run_sets_new_time(event, user):
|
||||
|
||||
run_scheduled_exports(None)
|
||||
s.refresh_from_db()
|
||||
assert s.schedule_next_run == event.timezone.localize(datetime(2023, 1, 19, 2, 30, 0))
|
||||
assert s.schedule_next_run == datetime(2023, 1, 19, 2, 30, 0, tzinfo=event.timezone)
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
@@ -209,13 +208,13 @@ def test_organizer_not_run_when_failed_5_times(event, user):
|
||||
s = ScheduledOrganizerExport(organizer=event.organizer, owner=user)
|
||||
s.schedule_rrule = "DTSTART:20230118T000000\nRRULE:FREQ=DAILY;INTERVAL=1;WKST=MO"
|
||||
s.schedule_rrule_time = time(2, 30, 0)
|
||||
s.schedule_next_run = event.timezone.localize(datetime(2023, 1, 18, 2, 30, 0))
|
||||
s.schedule_next_run = datetime(2023, 1, 18, 2, 30, 0, tzinfo=event.timezone)
|
||||
s.error_counter = 5
|
||||
s.save()
|
||||
|
||||
run_scheduled_exports(None)
|
||||
s.refresh_from_db()
|
||||
assert s.schedule_next_run == event.timezone.localize(datetime(2023, 1, 18, 2, 30, 0))
|
||||
assert s.schedule_next_run == datetime(2023, 1, 18, 2, 30, 0, tzinfo=event.timezone)
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
@@ -304,7 +303,7 @@ def test_organizer_limited_to_events(event, user, team):
|
||||
|
||||
event2 = Event.objects.create(
|
||||
organizer=event.organizer, name='Dummy', slug='dummy2',
|
||||
date_from=datetime(2023, 1, 19, 2, 30, 0, tzinfo=pytz.UTC),
|
||||
date_from=datetime(2023, 1, 19, 2, 30, 0, tzinfo=timezone.utc),
|
||||
plugins='pretix.plugins.banktransfer'
|
||||
)
|
||||
team.all_events = False
|
||||
@@ -344,7 +343,7 @@ def test_organizer_ok(event, user, team):
|
||||
|
||||
Event.objects.create(
|
||||
organizer=event.organizer, name='Dummy', slug='dummy2',
|
||||
date_from=datetime(2023, 1, 19, 2, 30, 0, tzinfo=pytz.UTC),
|
||||
date_from=datetime(2023, 1, 19, 2, 30, 0, tzinfo=timezone.utc),
|
||||
plugins='pretix.plugins.banktransfer'
|
||||
)
|
||||
|
||||
|
||||
@@ -20,17 +20,17 @@
|
||||
# <https://www.gnu.org/licenses/>.
|
||||
#
|
||||
from datetime import datetime
|
||||
from zoneinfo import ZoneInfo
|
||||
|
||||
import pytest
|
||||
import pytz
|
||||
|
||||
from pretix.base.models import Item
|
||||
|
||||
tz = pytz.timezone("Europe/Berlin")
|
||||
tz = ZoneInfo("Europe/Berlin")
|
||||
|
||||
|
||||
def dt(*args, is_dst=None, **kwargs):
|
||||
return tz.localize(datetime(*args, **kwargs), is_dst=is_dst)
|
||||
def dt(*args, **kwargs):
|
||||
return datetime(*args, **kwargs, tzinfo=tz)
|
||||
|
||||
|
||||
@pytest.mark.parametrize("minutes,hours,days,months,start,expected_end", [
|
||||
@@ -62,7 +62,7 @@ def dt(*args, is_dst=None, **kwargs):
|
||||
(30, 2, 1, 0, dt(2023, 3, 25, 10, 30, 0), dt(2023, 3, 26, 3, 29, 59)),
|
||||
|
||||
# Day + hour with ambiguous end time during DST change
|
||||
(30, 2, 1, 0, dt(2023, 10, 28, 10, 30, 0), dt(2023, 10, 29, 2, 29, 59, is_dst=True)),
|
||||
(30, 2, 1, 0, dt(2023, 10, 28, 10, 30, 0), dt(2023, 10, 29, 2, 29, 59, fold=1)),
|
||||
|
||||
# Month with short month following
|
||||
(0, 0, 0, 1, dt(2023, 1, 31, 10, 30, 0), dt(2023, 2, 28, 23, 59, 59)),
|
||||
|
||||
@@ -21,9 +21,9 @@
|
||||
#
|
||||
from datetime import datetime, timedelta
|
||||
from decimal import Decimal
|
||||
from zoneinfo import ZoneInfo
|
||||
|
||||
import pytest
|
||||
import pytz
|
||||
from django.conf import settings
|
||||
from django.core.exceptions import ValidationError
|
||||
from django.utils.timezone import now
|
||||
@@ -42,7 +42,7 @@ from pretix.base.services.orders import (
|
||||
)
|
||||
from pretix.plugins.banktransfer.payment import BankTransfer
|
||||
|
||||
TZ = pytz.timezone('Europe/Berlin')
|
||||
TZ = ZoneInfo('Europe/Berlin')
|
||||
|
||||
|
||||
@pytest.fixture(scope='function')
|
||||
@@ -51,9 +51,9 @@ def event():
|
||||
o.settings.customer_accounts = True
|
||||
event = Event.objects.create(
|
||||
organizer=o, name='Dummy', slug='dummy',
|
||||
date_from=TZ.localize(datetime(2021, 4, 27, 10, 0, 0, 0)),
|
||||
date_to=TZ.localize(datetime(2021, 4, 28, 10, 0, 0, 0)),
|
||||
presale_end=TZ.localize(datetime(2221, 4, 28, 10, 0, 0, 0)),
|
||||
date_from=datetime(2021, 4, 27, 10, 0, 0, 0, tzinfo=TZ),
|
||||
date_to=datetime(2021, 4, 28, 10, 0, 0, 0, tzinfo=TZ),
|
||||
presale_end=datetime(2221, 4, 28, 10, 0, 0, 0, tzinfo=TZ),
|
||||
plugins='pretix.plugins.banktransfer'
|
||||
)
|
||||
event.settings.timezone = 'Europe/Berlin'
|
||||
@@ -75,8 +75,8 @@ def membership_type(event):
|
||||
def membership(event, membership_type, customer):
|
||||
return customer.memberships.create(
|
||||
membership_type=membership_type,
|
||||
date_start=TZ.localize(datetime(2021, 4, 1, 0, 0, 0, 0)),
|
||||
date_end=TZ.localize(datetime(2021, 4, 30, 23, 59, 59, 999999)),
|
||||
date_start=datetime(2021, 4, 1, 0, 0, 0, 0, tzinfo=TZ),
|
||||
date_end=datetime(2021, 4, 30, 23, 59, 59, 999999, tzinfo=TZ),
|
||||
)
|
||||
|
||||
|
||||
@@ -107,7 +107,7 @@ def subevent(event):
|
||||
event.has_subevents = True
|
||||
return event.subevents.create(
|
||||
name='Foo',
|
||||
date_from=TZ.localize(datetime(2021, 4, 29, 10, 0, 0, 0)),
|
||||
date_from=datetime(2021, 4, 29, 10, 0, 0, 0, tzinfo=TZ),
|
||||
)
|
||||
|
||||
|
||||
@@ -115,8 +115,8 @@ def subevent(event):
|
||||
def test_validity_membership_duration_like_event(event, granting_ticket, membership_type):
|
||||
granting_ticket.grant_membership_duration_like_event = True
|
||||
assert membership_validity(granting_ticket, None, event) == (
|
||||
TZ.localize(datetime(2021, 4, 27, 10, 0, 0, 0)),
|
||||
TZ.localize(datetime(2021, 4, 28, 10, 0, 0, 0)),
|
||||
datetime(2021, 4, 27, 10, 0, 0, 0, tzinfo=TZ),
|
||||
datetime(2021, 4, 28, 10, 0, 0, 0, tzinfo=TZ),
|
||||
)
|
||||
|
||||
|
||||
@@ -124,8 +124,8 @@ def test_validity_membership_duration_like_event(event, granting_ticket, members
|
||||
def test_validity_membership_duration_like_subevent_without_end(event, granting_ticket, subevent, membership_type):
|
||||
granting_ticket.grant_membership_duration_like_event = True
|
||||
assert membership_validity(granting_ticket, subevent, event) == (
|
||||
TZ.localize(datetime(2021, 4, 29, 10, 0, 0, 0)),
|
||||
TZ.localize(datetime(2021, 4, 29, 23, 59, 59, 999999)),
|
||||
datetime(2021, 4, 29, 10, 0, 0, 0, tzinfo=TZ),
|
||||
datetime(2021, 4, 29, 23, 59, 59, 999999, tzinfo=TZ),
|
||||
)
|
||||
|
||||
|
||||
@@ -135,8 +135,8 @@ def test_validity_membership_duration_days(event, granting_ticket, membership_ty
|
||||
granting_ticket.grant_membership_duration_days = 3
|
||||
with freeze_time("2021-04-10T11:00:00+02:00"):
|
||||
assert membership_validity(granting_ticket, subevent, event) == (
|
||||
TZ.localize(datetime(2021, 4, 10, 0, 0, 0, 0)),
|
||||
TZ.localize(datetime(2021, 4, 12, 23, 59, 59, 999999)),
|
||||
datetime(2021, 4, 10, 0, 0, 0, 0, tzinfo=TZ),
|
||||
datetime(2021, 4, 12, 23, 59, 59, 999999, tzinfo=TZ),
|
||||
)
|
||||
|
||||
|
||||
@@ -146,13 +146,13 @@ def test_validity_membership_duration_months(event, granting_ticket, membership_
|
||||
granting_ticket.grant_membership_duration_months = 1
|
||||
with freeze_time("2021-02-01T11:00:00+01:00"):
|
||||
assert membership_validity(granting_ticket, subevent, event) == (
|
||||
TZ.localize(datetime(2021, 2, 1, 0, 0, 0, 0)),
|
||||
TZ.localize(datetime(2021, 2, 28, 23, 59, 59, 999999)),
|
||||
datetime(2021, 2, 1, 0, 0, 0, 0, tzinfo=TZ),
|
||||
datetime(2021, 2, 28, 23, 59, 59, 999999, tzinfo=TZ),
|
||||
)
|
||||
with freeze_time("2021-02-28T11:00:00+01:00"):
|
||||
assert membership_validity(granting_ticket, subevent, event) == (
|
||||
TZ.localize(datetime(2021, 2, 28, 0, 0, 0, 0)),
|
||||
TZ.localize(datetime(2021, 3, 27, 23, 59, 59, 999999)),
|
||||
datetime(2021, 2, 28, 0, 0, 0, 0, tzinfo=TZ),
|
||||
datetime(2021, 3, 27, 23, 59, 59, 999999, tzinfo=TZ),
|
||||
)
|
||||
|
||||
|
||||
@@ -163,13 +163,13 @@ def test_validity_membership_duration_months_plus_days(event, granting_ticket, m
|
||||
granting_ticket.grant_membership_duration_days = 2
|
||||
with freeze_time("2021-02-01T11:00:00+01:00"):
|
||||
assert membership_validity(granting_ticket, subevent, event) == (
|
||||
TZ.localize(datetime(2021, 2, 1, 0, 0, 0, 0)),
|
||||
TZ.localize(datetime(2021, 3, 2, 23, 59, 59, 999999)),
|
||||
datetime(2021, 2, 1, 0, 0, 0, 0, tzinfo=TZ),
|
||||
datetime(2021, 3, 2, 23, 59, 59, 999999, tzinfo=TZ),
|
||||
)
|
||||
with freeze_time("2021-02-28T11:00:00+01:00"):
|
||||
assert membership_validity(granting_ticket, subevent, event) == (
|
||||
TZ.localize(datetime(2021, 2, 28, 0, 0, 0, 0)),
|
||||
TZ.localize(datetime(2021, 3, 29, 23, 59, 59, 999999)),
|
||||
datetime(2021, 2, 28, 0, 0, 0, 0, tzinfo=TZ),
|
||||
datetime(2021, 3, 29, 23, 59, 59, 999999, tzinfo=TZ),
|
||||
)
|
||||
|
||||
|
||||
@@ -420,7 +420,7 @@ def test_validate_membership_max_usages(event, customer, membership, requiring_t
|
||||
def test_validate_membership_parallel(event, customer, membership, subevent, requiring_ticket, membership_type):
|
||||
se2 = event.subevents.create(
|
||||
name='Foo',
|
||||
date_from=TZ.localize(datetime(2021, 4, 28, 10, 0, 0, 0)),
|
||||
date_from=datetime(2021, 4, 28, 10, 0, 0, 0, tzinfo=TZ),
|
||||
)
|
||||
|
||||
membership_type.allow_parallel_usage = False
|
||||
@@ -585,5 +585,5 @@ def test_grant_when_paid_and_changed(event, customer, granting_ticket):
|
||||
m = customer.memberships.get()
|
||||
assert m.granted_in == order.positions.first()
|
||||
assert m.membership_type == granting_ticket.grant_membership_type
|
||||
assert m.date_start == TZ.localize(datetime(2021, 4, 27, 10, 0, 0, 0))
|
||||
assert m.date_end == TZ.localize(datetime(2021, 4, 28, 10, 0, 0, 0))
|
||||
assert m.date_start == datetime(2021, 4, 27, 10, 0, 0, 0, tzinfo=TZ)
|
||||
assert m.date_end == datetime(2021, 4, 28, 10, 0, 0, 0, tzinfo=TZ)
|
||||
|
||||
@@ -39,7 +39,6 @@ from datetime import date, timedelta
|
||||
from decimal import Decimal
|
||||
|
||||
import pytest
|
||||
import pytz
|
||||
from dateutil.tz import tzoffset
|
||||
from django.conf import settings
|
||||
from django.core.exceptions import ValidationError
|
||||
@@ -1204,13 +1203,13 @@ class OrderTestCase(BaseQuotaTestCase):
|
||||
@classscope(attr='o')
|
||||
def test_payment_term_last_relative(self):
|
||||
self.event.settings.set('payment_term_last', date(2017, 5, 3))
|
||||
assert self.order.payment_term_last == datetime.datetime(2017, 5, 3, 23, 59, 59, tzinfo=pytz.UTC)
|
||||
self.event.date_from = datetime.datetime(2017, 5, 3, 12, 0, 0, tzinfo=pytz.UTC)
|
||||
assert self.order.payment_term_last == datetime.datetime(2017, 5, 3, 23, 59, 59, tzinfo=datetime.timezone.utc)
|
||||
self.event.date_from = datetime.datetime(2017, 5, 3, 12, 0, 0, tzinfo=datetime.timezone.utc)
|
||||
self.event.save()
|
||||
self.event.settings.set('payment_term_last', RelativeDateWrapper(
|
||||
RelativeDate(days_before=2, time=None, base_date_name='date_from', minutes_before=None)
|
||||
))
|
||||
assert self.order.payment_term_last == datetime.datetime(2017, 5, 1, 23, 59, 59, tzinfo=pytz.UTC)
|
||||
assert self.order.payment_term_last == datetime.datetime(2017, 5, 1, 23, 59, 59, tzinfo=datetime.timezone.utc)
|
||||
|
||||
@classscope(attr='o')
|
||||
def test_payment_term_last_subevent(self):
|
||||
@@ -1235,14 +1234,14 @@ class OrderTestCase(BaseQuotaTestCase):
|
||||
|
||||
@classscope(attr='o')
|
||||
def test_ticket_download_date_relative(self):
|
||||
self.event.settings.set('ticket_download_date', datetime.datetime(2017, 5, 3, 12, 59, 59, tzinfo=pytz.UTC))
|
||||
assert self.order.ticket_download_date == datetime.datetime(2017, 5, 3, 12, 59, 59, tzinfo=pytz.UTC)
|
||||
self.event.date_from = datetime.datetime(2017, 5, 3, 12, 0, 0, tzinfo=pytz.UTC)
|
||||
self.event.settings.set('ticket_download_date', datetime.datetime(2017, 5, 3, 12, 59, 59, tzinfo=datetime.timezone.utc))
|
||||
assert self.order.ticket_download_date == datetime.datetime(2017, 5, 3, 12, 59, 59, tzinfo=datetime.timezone.utc)
|
||||
self.event.date_from = datetime.datetime(2017, 5, 3, 12, 0, 0, tzinfo=datetime.timezone.utc)
|
||||
self.event.save()
|
||||
self.event.settings.set('ticket_download_date', RelativeDateWrapper(
|
||||
RelativeDate(days_before=2, time=None, base_date_name='date_from', minutes_before=None)
|
||||
))
|
||||
assert self.order.ticket_download_date == datetime.datetime(2017, 5, 1, 12, 0, 0, tzinfo=pytz.UTC)
|
||||
assert self.order.ticket_download_date == datetime.datetime(2017, 5, 1, 12, 0, 0, tzinfo=datetime.timezone.utc)
|
||||
|
||||
@classscope(attr='o')
|
||||
def test_ticket_download_date_subevent(self):
|
||||
@@ -2150,7 +2149,7 @@ class EventTest(TestCase):
|
||||
|
||||
@classscope(attr='organizer')
|
||||
def test_presale_has_ended(self):
|
||||
event = Event(
|
||||
event = Event.objects.create(
|
||||
organizer=self.organizer, name='Download', slug='download',
|
||||
date_from=now()
|
||||
)
|
||||
@@ -2907,15 +2906,15 @@ class ScheduledExportTestCase(TestCase):
|
||||
|
||||
with freeze_time("2023-01-18 15:08:00+01:00"):
|
||||
s.compute_next_run()
|
||||
assert s.schedule_next_run == self.event.timezone.localize(datetime.datetime(2023, 1, 19, 6, 30, 0))
|
||||
assert s.schedule_next_run == datetime.datetime(2023, 1, 19, 6, 30, 0, tzinfo=self.event.timezone)
|
||||
|
||||
with freeze_time("2023-01-19 06:28:00+01:00"):
|
||||
s.compute_next_run()
|
||||
assert s.schedule_next_run == self.event.timezone.localize(datetime.datetime(2023, 1, 19, 6, 30, 0))
|
||||
assert s.schedule_next_run == datetime.datetime(2023, 1, 19, 6, 30, 0, tzinfo=self.event.timezone)
|
||||
|
||||
with freeze_time("2023-01-19 06:30:00+01:00"):
|
||||
s.compute_next_run()
|
||||
assert s.schedule_next_run == self.event.timezone.localize(datetime.datetime(2023, 1, 24, 6, 30, 0))
|
||||
assert s.schedule_next_run == datetime.datetime(2023, 1, 24, 6, 30, 0, tzinfo=self.event.timezone)
|
||||
|
||||
with freeze_time("2024-01-18 15:08:00+01:00"):
|
||||
s.compute_next_run()
|
||||
@@ -2928,10 +2927,10 @@ class ScheduledExportTestCase(TestCase):
|
||||
s.schedule_rrule_time = datetime.time(2, 30, 0)
|
||||
with freeze_time("2023-03-25 18:00:00+01:00"):
|
||||
s.compute_next_run()
|
||||
assert s.schedule_next_run == self.event.timezone.localize(datetime.datetime(2023, 3, 26, 3, 30, 0))
|
||||
assert s.schedule_next_run == datetime.datetime(2023, 3, 26, 3, 30, 0, tzinfo=self.event.timezone)
|
||||
with freeze_time("2023-03-26 18:00:00+01:00"):
|
||||
s.compute_next_run()
|
||||
assert s.schedule_next_run == self.event.timezone.localize(datetime.datetime(2023, 3, 27, 2, 30, 0))
|
||||
assert s.schedule_next_run == datetime.datetime(2023, 3, 27, 2, 30, 0, tzinfo=self.event.timezone)
|
||||
with freeze_time("2023-10-28 18:00:00+01:00"):
|
||||
s.compute_next_run()
|
||||
assert s.schedule_next_run == self.event.timezone.localize(datetime.datetime(2023, 10, 29, 2, 30, 0, fold=0))
|
||||
assert s.schedule_next_run == datetime.datetime(2023, 10, 29, 2, 30, 0, fold=0, tzinfo=self.event.timezone)
|
||||
|
||||
@@ -747,7 +747,7 @@ def test_import_subevent_by_date(user, event, item):
|
||||
event.has_subevents = True
|
||||
event.save()
|
||||
event.settings.timezone = 'Europe/Berlin'
|
||||
s = event.subevents.create(name='Test', date_from=event.timezone.localize(datetime.datetime(2021, 6, 28, 11, 0, 0, 0)), active=True)
|
||||
s = event.subevents.create(name='Test', date_from=datetime.datetime(2021, 6, 28, 11, 0, 0, 0, tzinfo=event.timezone), active=True)
|
||||
settings['item'] = 'static:{}'.format(item.pk)
|
||||
settings['subevent'] = 'csv:J'
|
||||
|
||||
|
||||
@@ -22,9 +22,9 @@
|
||||
import json
|
||||
from datetime import datetime, timedelta
|
||||
from decimal import Decimal
|
||||
from zoneinfo import ZoneInfo
|
||||
|
||||
import pytest
|
||||
import pytz
|
||||
from django.core import mail as djmail
|
||||
from django.db.models import F, Sum
|
||||
from django.test import TestCase
|
||||
@@ -256,9 +256,9 @@ def test_expiry_last_relative_subevents(event):
|
||||
@pytest.mark.django_db
|
||||
def test_expiry_dst(event):
|
||||
event.settings.set('timezone', 'Europe/Berlin')
|
||||
tz = pytz.timezone('Europe/Berlin')
|
||||
utc = pytz.timezone('UTC')
|
||||
today = tz.localize(datetime(2016, 10, 29, 12, 0, 0)).astimezone(utc)
|
||||
tz = ZoneInfo('Europe/Berlin')
|
||||
utc = ZoneInfo('UTC')
|
||||
today = datetime(2016, 10, 29, 12, 0, 0, tzinfo=tz).astimezone(utc)
|
||||
order = _create_order(event, email='dummy@example.org', positions=[],
|
||||
now_dt=today,
|
||||
payment_requests=[{
|
||||
@@ -3089,6 +3089,9 @@ def test_autocheckin(clist_autocheckin, event):
|
||||
clist_autocheckin.auto_checkin_sales_channels = []
|
||||
clist_autocheckin.save()
|
||||
|
||||
cp1 = CartPosition.objects.create(
|
||||
item=ticket, price=23, expires=now() + timedelta(days=1), event=event, cart_id="123"
|
||||
)
|
||||
order = _create_order(event, email='dummy@example.org', positions=[cp1],
|
||||
now_dt=today,
|
||||
payment_requests=[{
|
||||
@@ -3129,6 +3132,9 @@ def test_saleschannel_testmode_restriction(event):
|
||||
locale='de', sales_channel='web')[0]
|
||||
assert not order.testmode
|
||||
|
||||
cp1 = CartPosition.objects.create(
|
||||
item=ticket, price=23, expires=now() + timedelta(days=1), event=event, cart_id="123"
|
||||
)
|
||||
order = _create_order(event, email='dummy@example.org', positions=[cp1],
|
||||
now_dt=today,
|
||||
payment_requests=[{
|
||||
@@ -3143,6 +3149,9 @@ def test_saleschannel_testmode_restriction(event):
|
||||
locale='de', sales_channel=FoobazSalesChannel.identifier)[0]
|
||||
assert not order.testmode
|
||||
|
||||
cp1 = CartPosition.objects.create(
|
||||
item=ticket, price=23, expires=now() + timedelta(days=1), event=event, cart_id="123"
|
||||
)
|
||||
event.testmode = True
|
||||
order = _create_order(event, email='dummy@example.org', positions=[cp1],
|
||||
now_dt=today,
|
||||
@@ -3158,6 +3167,9 @@ def test_saleschannel_testmode_restriction(event):
|
||||
locale='de', sales_channel='web')[0]
|
||||
assert order.testmode
|
||||
|
||||
cp1 = CartPosition.objects.create(
|
||||
item=ticket, price=23, expires=now() + timedelta(days=1), event=event, cart_id="123"
|
||||
)
|
||||
order = _create_order(event, email='dummy@example.org', positions=[cp1],
|
||||
now_dt=today,
|
||||
payment_requests=[{
|
||||
|
||||
@@ -34,9 +34,9 @@
|
||||
|
||||
import datetime
|
||||
from decimal import Decimal
|
||||
from zoneinfo import ZoneInfo
|
||||
|
||||
import pytest
|
||||
import pytz
|
||||
from django.utils.timezone import now
|
||||
from django_scopes import scope
|
||||
from tests.testdummy.payment import DummyPaymentProvider
|
||||
@@ -112,18 +112,18 @@ def test_availability_date_not_available(event):
|
||||
@pytest.mark.django_db
|
||||
def test_availability_date_relative(event):
|
||||
event.settings.set('timezone', 'US/Pacific')
|
||||
tz = pytz.timezone('US/Pacific')
|
||||
event.date_from = tz.localize(datetime.datetime(2016, 12, 3, 12, 0, 0))
|
||||
tz = ZoneInfo('US/Pacific')
|
||||
event.date_from = datetime.datetime(2016, 12, 3, 12, 0, 0, tzinfo=tz)
|
||||
event.save()
|
||||
prov = DummyPaymentProvider(event)
|
||||
prov.settings.set('_availability_date', RelativeDateWrapper(
|
||||
RelativeDate(days_before=2, time=None, base_date_name='date_from', minutes_before=None)
|
||||
))
|
||||
|
||||
utc = pytz.timezone('UTC')
|
||||
assert prov._is_still_available(tz.localize(datetime.datetime(2016, 11, 30, 23, 0, 0)).astimezone(utc))
|
||||
assert prov._is_still_available(tz.localize(datetime.datetime(2016, 12, 1, 23, 59, 0)).astimezone(utc))
|
||||
assert not prov._is_still_available(tz.localize(datetime.datetime(2016, 12, 2, 0, 0, 1)).astimezone(utc))
|
||||
utc = datetime.timezone.utc
|
||||
assert prov._is_still_available(datetime.datetime(2016, 11, 30, 23, 0, 0, tzinfo=tz).astimezone(utc))
|
||||
assert prov._is_still_available(datetime.datetime(2016, 12, 1, 23, 59, 0, tzinfo=tz).astimezone(utc))
|
||||
assert not prov._is_still_available(datetime.datetime(2016, 12, 2, 0, 0, 1, tzinfo=tz).astimezone(utc))
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
@@ -132,11 +132,11 @@ def test_availability_date_timezones(event):
|
||||
prov = DummyPaymentProvider(event)
|
||||
prov.settings.set('_availability_date', '2016-12-01')
|
||||
|
||||
tz = pytz.timezone('US/Pacific')
|
||||
utc = pytz.timezone('UTC')
|
||||
assert prov._is_still_available(tz.localize(datetime.datetime(2016, 11, 30, 23, 0, 0)).astimezone(utc))
|
||||
assert prov._is_still_available(tz.localize(datetime.datetime(2016, 12, 1, 23, 59, 0)).astimezone(utc))
|
||||
assert not prov._is_still_available(tz.localize(datetime.datetime(2016, 12, 2, 0, 0, 1)).astimezone(utc))
|
||||
tz = ZoneInfo('US/Pacific')
|
||||
utc = ZoneInfo('UTC')
|
||||
assert prov._is_still_available(datetime.datetime(2016, 11, 30, 23, 0, 0, tzinfo=tz).astimezone(utc))
|
||||
assert prov._is_still_available(datetime.datetime(2016, 12, 1, 23, 59, 0, tzinfo=tz).astimezone(utc))
|
||||
assert not prov._is_still_available(datetime.datetime(2016, 12, 2, 0, 0, 1, tzinfo=tz).astimezone(utc))
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
|
||||
@@ -20,16 +20,16 @@
|
||||
# <https://www.gnu.org/licenses/>.
|
||||
#
|
||||
from datetime import datetime, time
|
||||
from zoneinfo import ZoneInfo
|
||||
|
||||
import pytest
|
||||
import pytz
|
||||
from django_scopes import scope
|
||||
|
||||
from pretix.base.models import Event, Organizer
|
||||
from pretix.base.reldate import RelativeDate, RelativeDateWrapper
|
||||
|
||||
TOKYO = pytz.timezone('Asia/Tokyo')
|
||||
BERLIN = pytz.timezone('Europe/Berlin')
|
||||
TOKYO = ZoneInfo('Asia/Tokyo')
|
||||
BERLIN = ZoneInfo('Europe/Berlin')
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
@@ -37,8 +37,8 @@ def event():
|
||||
o = Organizer.objects.create(name='Dummy', slug='dummy')
|
||||
event = Event.objects.create(
|
||||
organizer=o, name='Dummy', slug='dummy',
|
||||
date_from=TOKYO.localize(datetime(2017, 12, 27, 5, 0, 0)),
|
||||
presale_start=TOKYO.localize(datetime(2017, 12, 1, 5, 0, 0)),
|
||||
date_from=datetime(2017, 12, 27, 5, 0, 0, tzinfo=TOKYO),
|
||||
presale_start=datetime(2017, 12, 1, 5, 0, 0, tzinfo=TOKYO),
|
||||
plugins='pretix.plugins.banktransfer'
|
||||
|
||||
)
|
||||
@@ -57,7 +57,7 @@ def test_absolute_date(event):
|
||||
@pytest.mark.django_db
|
||||
def test_relative_date_without_time(event):
|
||||
rdw = RelativeDateWrapper(RelativeDate(days_before=1, time=None, base_date_name='date_from', minutes_before=None))
|
||||
assert rdw.datetime(event).astimezone(TOKYO) == TOKYO.localize(datetime(2017, 12, 26, 5, 0, 0))
|
||||
assert rdw.datetime(event).astimezone(TOKYO) == datetime(2017, 12, 26, 5, 0, 0, tzinfo=TOKYO)
|
||||
assert rdw.to_string() == 'RELDATE/1/-/date_from/'
|
||||
|
||||
|
||||
@@ -65,64 +65,64 @@ def test_relative_date_without_time(event):
|
||||
def test_relative_date_other_base_point(event):
|
||||
with scope(organizer=event.organizer):
|
||||
rdw = RelativeDateWrapper(RelativeDate(days_before=1, time=None, base_date_name='presale_start', minutes_before=None))
|
||||
assert rdw.datetime(event) == TOKYO.localize(datetime(2017, 11, 30, 5, 0, 0))
|
||||
assert rdw.datetime(event) == datetime(2017, 11, 30, 5, 0, 0, tzinfo=TOKYO)
|
||||
assert rdw.to_string() == 'RELDATE/1/-/presale_start/'
|
||||
|
||||
# presale_end is unset, defaults to date_from
|
||||
rdw = RelativeDateWrapper(RelativeDate(days_before=1, time=None, base_date_name='presale_end', minutes_before=None))
|
||||
assert rdw.datetime(event) == TOKYO.localize(datetime(2017, 12, 26, 5, 0, 0))
|
||||
assert rdw.datetime(event) == datetime(2017, 12, 26, 5, 0, 0, tzinfo=TOKYO)
|
||||
assert rdw.to_string() == 'RELDATE/1/-/presale_end/'
|
||||
|
||||
# subevent base
|
||||
se = event.subevents.create(name="SE1", date_from=TOKYO.localize(datetime(2017, 11, 27, 5, 0, 0)))
|
||||
se = event.subevents.create(name="SE1", date_from=datetime(2017, 11, 27, 5, 0, 0, tzinfo=TOKYO))
|
||||
rdw = RelativeDateWrapper(RelativeDate(days_before=1, time=None, base_date_name='date_from', minutes_before=None))
|
||||
assert rdw.datetime(se) == TOKYO.localize(datetime(2017, 11, 26, 5, 0, 0))
|
||||
assert rdw.datetime(se) == datetime(2017, 11, 26, 5, 0, 0, tzinfo=TOKYO)
|
||||
|
||||
# presale_start is unset on subevent, default to event
|
||||
rdw = RelativeDateWrapper(RelativeDate(days_before=1, time=None, base_date_name='presale_start', minutes_before=None))
|
||||
assert rdw.datetime(se) == TOKYO.localize(datetime(2017, 11, 30, 5, 0, 0))
|
||||
assert rdw.datetime(se) == datetime(2017, 11, 30, 5, 0, 0, tzinfo=TOKYO)
|
||||
|
||||
# presale_end is unset on all, default to date_from of subevent
|
||||
rdw = RelativeDateWrapper(RelativeDate(days_before=1, time=None, base_date_name='presale_end', minutes_before=None))
|
||||
assert rdw.datetime(se) == TOKYO.localize(datetime(2017, 11, 26, 5, 0, 0))
|
||||
assert rdw.datetime(se) == datetime(2017, 11, 26, 5, 0, 0, tzinfo=TOKYO)
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
def test_relative_date_in_minutes(event):
|
||||
rdw = RelativeDateWrapper(RelativeDate(days_before=0, time=None, base_date_name='date_from', minutes_before=60))
|
||||
assert rdw.to_string() == 'RELDATE/minutes/60/date_from/'
|
||||
assert rdw.datetime(event) == TOKYO.localize(datetime(2017, 12, 27, 4, 0, 0))
|
||||
assert rdw.datetime(event) == datetime(2017, 12, 27, 4, 0, 0, tzinfo=TOKYO)
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
def test_relative_date_with_time(event):
|
||||
rdw = RelativeDateWrapper(RelativeDate(days_before=1, time=time(8, 5, 13), base_date_name='date_from', minutes_before=None))
|
||||
assert rdw.to_string() == 'RELDATE/1/08:05:13/date_from/'
|
||||
assert rdw.datetime(event) == TOKYO.localize(datetime(2017, 12, 26, 8, 5, 13))
|
||||
assert rdw.datetime(event) == datetime(2017, 12, 26, 8, 5, 13, tzinfo=TOKYO)
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
def test_relative_date_with_time_around_dst(event):
|
||||
event.settings.timezone = "Europe/Berlin"
|
||||
event.date_from = BERLIN.localize(datetime(2020, 3, 29, 18, 0, 0))
|
||||
event.date_from = datetime(2020, 3, 29, 18, 0, 0, tzinfo=BERLIN)
|
||||
|
||||
rdw = RelativeDateWrapper(RelativeDate(days_before=1, time=time(18, 0, 0), base_date_name='date_from', minutes_before=None))
|
||||
assert rdw.to_string() == 'RELDATE/1/18:00:00/date_from/'
|
||||
assert rdw.datetime(event) == BERLIN.localize(datetime(2020, 3, 28, 18, 0, 0))
|
||||
assert rdw.datetime(event) == datetime(2020, 3, 28, 18, 0, 0, tzinfo=BERLIN)
|
||||
|
||||
rdw = RelativeDateWrapper(RelativeDate(days_before=0, time=time(2, 30, 0), base_date_name='date_from', minutes_before=None))
|
||||
assert rdw.to_string() == 'RELDATE/0/02:30:00/date_from/'
|
||||
assert rdw.datetime(event) == BERLIN.localize(datetime(2020, 3, 29, 2, 30, 0))
|
||||
assert rdw.datetime(event) == datetime(2020, 3, 29, 2, 30, 0, tzinfo=BERLIN)
|
||||
|
||||
event.date_from = BERLIN.localize(datetime(2020, 10, 25, 18, 0, 0))
|
||||
event.date_from = datetime(2020, 10, 25, 18, 0, 0, tzinfo=BERLIN)
|
||||
|
||||
rdw = RelativeDateWrapper(RelativeDate(days_before=1, time=time(18, 0, 0), base_date_name='date_from', minutes_before=None))
|
||||
assert rdw.to_string() == 'RELDATE/1/18:00:00/date_from/'
|
||||
assert rdw.datetime(event) == BERLIN.localize(datetime(2020, 10, 24, 18, 0, 0))
|
||||
assert rdw.datetime(event) == datetime(2020, 10, 24, 18, 0, 0, tzinfo=BERLIN)
|
||||
|
||||
rdw = RelativeDateWrapper(RelativeDate(days_before=0, time=time(2, 30, 0), base_date_name='date_from', minutes_before=None))
|
||||
assert rdw.to_string() == 'RELDATE/0/02:30:00/date_from/'
|
||||
assert rdw.datetime(event) == BERLIN.localize(datetime(2020, 10, 25, 2, 30, 0))
|
||||
assert rdw.datetime(event) == datetime(2020, 10, 25, 2, 30, 0, tzinfo=BERLIN)
|
||||
|
||||
|
||||
def test_unserialize():
|
||||
|
||||
@@ -21,20 +21,20 @@
|
||||
#
|
||||
|
||||
from datetime import date, datetime
|
||||
from zoneinfo import ZoneInfo
|
||||
|
||||
import pytest
|
||||
import pytz
|
||||
|
||||
from pretix.base.timeframes import (
|
||||
REPORTING_DATE_TIMEFRAMES, resolve_timeframe_to_dates_inclusive,
|
||||
resolve_timeframe_to_datetime_start_inclusive_end_exclusive,
|
||||
)
|
||||
|
||||
tz = pytz.timezone("Europe/Berlin")
|
||||
tz = ZoneInfo("Europe/Berlin")
|
||||
|
||||
|
||||
def dt(*args):
|
||||
return tz.localize(datetime(*args))
|
||||
return datetime(*args, tzinfo=tz)
|
||||
|
||||
|
||||
ref_date = date(2023, 3, 28)
|
||||
|
||||
@@ -21,16 +21,16 @@
|
||||
#
|
||||
from datetime import datetime
|
||||
from decimal import Decimal
|
||||
from zoneinfo import ZoneInfo
|
||||
|
||||
import pytest
|
||||
import pytz
|
||||
from django_scopes import scope
|
||||
|
||||
from pretix.base.i18n import language
|
||||
from pretix.base.models import Event, Organizer
|
||||
from pretix.base.timeline import timeline_for_event
|
||||
|
||||
tz = pytz.timezone('Europe/Berlin')
|
||||
tz = ZoneInfo('Europe/Berlin')
|
||||
|
||||
|
||||
def one(iterable):
|
||||
|
||||
Reference in New Issue
Block a user