mirror of
https://github.com/pretix/pretix.git
synced 2026-09-25 18:14:41 +00:00
Compare commits
2
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
212967b412 | ||
|
|
2791d5e49e |
@@ -21,9 +21,11 @@
|
||||
#
|
||||
import contextvars
|
||||
from contextlib import contextmanager
|
||||
from datetime import datetime
|
||||
|
||||
from dateutil.parser import parse
|
||||
from django.contrib import messages
|
||||
from django.utils.timezone import now
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
|
||||
from pretix.base.auth import has_event_access_permission
|
||||
|
||||
@@ -34,8 +36,17 @@ timemachine_now_var = contextvars.ContextVar('timemachine_now', default=None)
|
||||
def time_machine_now_assigned_from_request(request):
|
||||
if hasattr(request, 'event') and f'timemachine_now_dt:{request.event.pk}' in request.session and \
|
||||
request.event.testmode and has_event_access_permission(request):
|
||||
request.now_dt = parse(request.session[f'timemachine_now_dt:{request.event.pk}'])
|
||||
request.now_dt_is_fake = True
|
||||
try:
|
||||
request.now_dt = datetime.fromisoformat(request.session[f'timemachine_now_dt:{request.event.pk}'])
|
||||
request.now_dt_is_fake = True
|
||||
except ValueError:
|
||||
del request.session[f'timemachine_now_dt:{request.event.pk}']
|
||||
messages.error(
|
||||
request, _('Invalid date.')
|
||||
)
|
||||
request.now_dt = now()
|
||||
request.now_dt_is_fake = False
|
||||
|
||||
else:
|
||||
request.now_dt = now()
|
||||
request.now_dt_is_fake = False
|
||||
|
||||
@@ -20,6 +20,7 @@
|
||||
# <https://www.gnu.org/licenses/>.
|
||||
#
|
||||
import logging
|
||||
import multiprocessing
|
||||
import os
|
||||
|
||||
from celery import Celery, signals
|
||||
@@ -54,6 +55,21 @@ def on_task_received(sender, request, **kwargs):
|
||||
logger.info(f"Task {request.id} has trace {trace}")
|
||||
|
||||
|
||||
@receiver(signals.after_setup_task_logger)
|
||||
def on_after_setup_task_logger(sender, logger, loglevel, logfile, format, colorize, **kwargs):
|
||||
# This hack seems to be required to get celery to log internal events from eg billiard/pool.py such as
|
||||
# "worker killed because it used too much memory"
|
||||
# You can test that it is working by starting a celery worker with a low value like
|
||||
# --max-memory-per-child 300000
|
||||
# and then trigger a task. Result should look like this:
|
||||
# [2026-09-23 10:42:26,234: WARNING/ForkPoolWorker-16]: [???:???] child process exiting after exceeding memory limit (394540KiB / 300000KiB)
|
||||
# The ???:??? are likely because by copying the handlers, we are also copying the format, but I was unable to find
|
||||
# a better compatible way.
|
||||
multi_logger = multiprocessing.get_logger()
|
||||
multi_logger.setLevel(logging.WARNING)
|
||||
multi_logger.handlers = logger.handlers
|
||||
|
||||
|
||||
@receiver(signals.task_prerun)
|
||||
def on_task_prerun(sender, task_id, task, **kwargs):
|
||||
from pretix.helpers.logs import local
|
||||
|
||||
@@ -41,7 +41,6 @@ from importlib import import_module
|
||||
from urllib.parse import urlencode
|
||||
|
||||
import isoweek
|
||||
from dateutil import parser
|
||||
from django import forms
|
||||
from django.conf import settings
|
||||
from django.contrib import messages
|
||||
@@ -603,12 +602,17 @@ class EventTimeMachine(EventViewMixin, TemplateView):
|
||||
raise PermissionDenied(_('You are not allowed to access time machine mode.'))
|
||||
if not request.event.testmode:
|
||||
raise PermissionDenied(_('This feature is only available in test mode.'))
|
||||
|
||||
initial = {}
|
||||
if request.session.get(f'timemachine_now_dt:{request.event.pk}', None):
|
||||
try:
|
||||
initial['now_dt'] = datetime.fromisoformat(request.session.get(f'timemachine_now_dt:{request.event.pk}', None))
|
||||
except ValueError:
|
||||
pass
|
||||
|
||||
self.timemachine_form = TimemachineForm(
|
||||
data=request.method == 'POST' and request.POST or None,
|
||||
initial=(
|
||||
{'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 {}
|
||||
)
|
||||
initial=initial
|
||||
)
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
@@ -622,7 +626,7 @@ class EventTimeMachine(EventViewMixin, TemplateView):
|
||||
messages.success(self.request, _('Time machine disabled!'))
|
||||
return redirect(self.get_success_url())
|
||||
elif self.timemachine_form.is_valid():
|
||||
request.session[f'timemachine_now_dt:{request.event.pk}'] = str(self.timemachine_form.cleaned_data['now_dt'])
|
||||
request.session[f'timemachine_now_dt:{request.event.pk}'] = self.timemachine_form.cleaned_data['now_dt'].isoformat()
|
||||
return redirect(eventreverse(request.event, "presale:event.index"))
|
||||
else:
|
||||
return self.get(request)
|
||||
|
||||
@@ -448,7 +448,6 @@ var editor = {
|
||||
var d = data[i], o
|
||||
editor._add_from_data(d)
|
||||
}
|
||||
editor.fabric.discardActiveObject()
|
||||
editor.fabric.renderAll()
|
||||
editor._update_toolbox_values()
|
||||
},
|
||||
@@ -957,7 +956,6 @@ var editor = {
|
||||
mtr: true
|
||||
})
|
||||
editor.fabric.add(text)
|
||||
editor.fabric.setActiveObject(text)
|
||||
editor._create_savepoint()
|
||||
return text
|
||||
},
|
||||
@@ -974,7 +972,6 @@ var editor = {
|
||||
rect.scaleToHeight(126)
|
||||
rect.setControlsVisibility({ mtr: false, mb: false, mt: false, mr: false, ml: false })
|
||||
editor.fabric.add(rect)
|
||||
editor.fabric.setActiveObject(rect)
|
||||
editor._create_savepoint()
|
||||
return rect
|
||||
},
|
||||
@@ -1012,7 +1009,6 @@ var editor = {
|
||||
mtr: true
|
||||
})
|
||||
editor.fabric.add(rect)
|
||||
editor.fabric.setActiveObject(rect)
|
||||
editor._create_savepoint()
|
||||
$('#version-notice').show()
|
||||
return rect
|
||||
@@ -1030,7 +1026,6 @@ var editor = {
|
||||
})
|
||||
rect.setControlsVisibility({ mtr: false })
|
||||
editor.fabric.add(rect)
|
||||
editor.fabric.setActiveObject(rect)
|
||||
editor._create_savepoint()
|
||||
return rect
|
||||
},
|
||||
@@ -1049,7 +1044,6 @@ var editor = {
|
||||
})
|
||||
rect.setControlsVisibility({ mtr: false, mb: false, mt: false, mr: false, ml: false })
|
||||
editor.fabric.add(rect)
|
||||
editor.fabric.setActiveObject(rect)
|
||||
editor._create_savepoint()
|
||||
return rect
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user