Pass time_machine_now to async tasks

This commit is contained in:
Mira Weller
2024-04-30 21:49:58 +02:00
parent c5f4eeeb28
commit 9610e9c89f
6 changed files with 155 additions and 38 deletions
+14 -2
View File
@@ -33,6 +33,7 @@
# License for the specific language governing permissions and limitations under the License.
import threading
from contextlib import contextmanager
from dateutil.parser import parse
from django.utils.timezone import now
@@ -64,5 +65,16 @@ class TimeMachineMiddleware:
TimeMachineMiddleware.tls.now_dt = None
def time_machine_now(now_dt=None):
return getattr(TimeMachineMiddleware.tls, 'now_dt', None) or now_dt or now()
def time_machine_now(default=False):
if default is False:
default = now()
return getattr(TimeMachineMiddleware.tls, 'now_dt', None) or default
@contextmanager
def time_machine_now_assigned(now_dt):
try:
TimeMachineMiddleware.tls.now_dt = now_dt
yield
finally:
TimeMachineMiddleware.tls.now_dt = None