Bump Django to 4.1.* (#2989)

This commit is contained in:
Raphael Michel
2023-06-05 09:56:31 +02:00
committed by GitHub
parent 3a8556bb78
commit bd32b33ba9
119 changed files with 742 additions and 613 deletions

View File

@@ -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)

View File

@@ -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'
)

View File

@@ -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)),

View File

@@ -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)

View File

@@ -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)

View File

@@ -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'

View File

@@ -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=[{

View File

@@ -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

View File

@@ -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():

View File

@@ -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)

View File

@@ -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):