forked from CGM_Public/pretix_original
Scope time machine state per event
This commit is contained in:
@@ -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()
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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):
|
||||
|
||||
Reference in New Issue
Block a user