From 8042d9d3f446bbf342e6921a2512bfaed9c3ac8a Mon Sep 17 00:00:00 2001 From: Mira Weller Date: Tue, 30 Apr 2024 21:17:44 +0200 Subject: [PATCH] Scope time machine state per event --- src/pretix/base/timemachine.py | 4 ++-- src/pretix/presale/views/event.py | 8 ++++---- src/tests/presale/test_timemachine.py | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/pretix/base/timemachine.py b/src/pretix/base/timemachine.py index 1c4ab4f89f..e8848c8372 100644 --- a/src/pretix/base/timemachine.py +++ b/src/pretix/base/timemachine.py @@ -30,9 +30,9 @@ timemachine_now_var = contextvars.ContextVar('timemachine_now', default=None) @contextmanager def time_machine_now_assigned_from_request(request): - if hasattr(request, 'event') and 'timemachine_now_dt' in request.session and \ + if hasattr(request, 'event') and f'timemachine_now_dt:{request.event.pk}' in request.session and \ request.event.testmode and has_time_machine_permission(request, request.event): - request.now_dt = parse(request.session['timemachine_now_dt']) + request.now_dt = parse(request.session[f'timemachine_now_dt:{request.event.pk}']) request.now_dt_is_fake = True else: request.now_dt = now() diff --git a/src/pretix/presale/views/event.py b/src/pretix/presale/views/event.py index 578f348351..6ecbf19d7e 100644 --- a/src/pretix/presale/views/event.py +++ b/src/pretix/presale/views/event.py @@ -947,8 +947,8 @@ class EventTimeMachine(EventViewMixin, TemplateView): self.timemachine_form = TimemachineForm( data=request.method == 'POST' and request.POST or None, initial=( - {'now_dt': parser.parse(request.session.get('timemachine_now_dt', None))} - if request.session.get('timemachine_now_dt', None) else {} + {'now_dt': parser.parse(request.session.get(f'timemachine_now_dt:{request.event.pk}', None))} + if request.session.get(f'timemachine_now_dt:{request.event.pk}', None) else {} ) ) @@ -959,11 +959,11 @@ class EventTimeMachine(EventViewMixin, TemplateView): def post(self, request, *args, **kwargs): if request.POST.get("timemachine_disable"): - del request.session['timemachine_now_dt'] + del request.session[f'timemachine_now_dt:{request.event.pk}'] messages.success(self.request, _('Time machine disabled!')) return redirect(self.get_success_url()) elif self.timemachine_form.is_valid(): - request.session['timemachine_now_dt'] = str(self.timemachine_form.cleaned_data['now_dt']) + request.session[f'timemachine_now_dt:{request.event.pk}'] = str(self.timemachine_form.cleaned_data['now_dt']) return redirect(eventreverse(request.event, "presale:event.index")) else: return self.get(request) diff --git a/src/tests/presale/test_timemachine.py b/src/tests/presale/test_timemachine.py index 48a230f53d..0eed1de6de 100644 --- a/src/tests/presale/test_timemachine.py +++ b/src/tests/presale/test_timemachine.py @@ -35,7 +35,7 @@ class TimemachineTestMixin: def _set_time_machine_now(self, dt): session = self.client.session - session['timemachine_now_dt'] = str(dt) + session[f'timemachine_now_dt:{self.event.pk}'] = str(dt) session.save() def _enable_test_mode(self):