From 67f09b5ede07bae01beda54e0b860b82cc462ce1 Mon Sep 17 00:00:00 2001 From: Mira Weller Date: Mon, 18 Mar 2024 15:25:39 +0100 Subject: [PATCH] Enable time machine for membership and ticket validity dates --- src/pretix/base/models/orders.py | 5 +++-- src/pretix/base/services/memberships.py | 3 ++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/pretix/base/models/orders.py b/src/pretix/base/models/orders.py index e08b1d63de..c3327fa5c5 100644 --- a/src/pretix/base/models/orders.py +++ b/src/pretix/base/models/orders.py @@ -85,6 +85,7 @@ from ...helpers import OF_SELF from ...helpers.countries import CachedCountries, FastCountryField from ...helpers.format import format_map from ...helpers.names import build_name +from ...presale.timemachine import time_machine_now from ...testutils.middleware import debugflags_var from ._transactions import ( _fail, _transactions_mark_order_clean, _transactions_mark_order_dirty, @@ -3063,9 +3064,9 @@ class CartPosition(AbstractPosition): def predicted_validity(self): return self.item.compute_validity( requested_start=( - max(self.requested_valid_from, now()) + max(self.requested_valid_from, time_machine_now()) if self.requested_valid_from and self.item.validity_dynamic_start_choice - else now() + else time_machine_now() ), override_tz=self.event.timezone, ) diff --git a/src/pretix/base/services/memberships.py b/src/pretix/base/services/memberships.py index e85c728b41..ead03e37af 100644 --- a/src/pretix/base/services/memberships.py +++ b/src/pretix/base/services/memberships.py @@ -33,6 +33,7 @@ from pretix.base.models import ( OrderPosition, SubEvent, ) from pretix.helpers import OF_SELF +from pretix.presale.timemachine import time_machine_now def membership_validity(item: Item, subevent: Optional[SubEvent], event: Event): @@ -48,7 +49,7 @@ def membership_validity(item: Item, subevent: Optional[SubEvent], event: Event): else: # Always start at start of day - date_start = now().astimezone(tz).replace(hour=0, minute=0, second=0, microsecond=0) + date_start = time_machine_now().astimezone(tz).replace(hour=0, minute=0, second=0, microsecond=0) date_end = date_start if item.grant_membership_duration_months: