mirror of
https://github.com/pretix/pretix.git
synced 2026-05-06 15:24:02 +00:00
Merge branch 'django110'
This commit is contained in:
@@ -6,6 +6,7 @@ from django.core.urlresolvers import get_script_prefix
|
||||
from django.http import HttpRequest, HttpResponse
|
||||
from django.utils import timezone, translation
|
||||
from django.utils.cache import patch_vary_headers
|
||||
from django.utils.deprecation import MiddlewareMixin
|
||||
from django.utils.translation import LANGUAGE_SESSION_KEY
|
||||
from django.utils.translation.trans_real import (
|
||||
check_for_language, get_supported_language_variant, language_code_re,
|
||||
@@ -15,7 +16,7 @@ from django.utils.translation.trans_real import (
|
||||
_supported = None
|
||||
|
||||
|
||||
class LocaleMiddleware:
|
||||
class LocaleMiddleware(MiddlewareMixin):
|
||||
|
||||
"""
|
||||
This middleware sets the correct locale and timezone
|
||||
@@ -42,7 +43,7 @@ class LocaleMiddleware:
|
||||
request.LANGUAGE_CODE = translation.get_language()
|
||||
|
||||
tzname = None
|
||||
if request.user.is_authenticated():
|
||||
if request.user.is_authenticated:
|
||||
tzname = request.user.timezone
|
||||
if hasattr(request, 'event'):
|
||||
tzname = request.event.settings.timezone
|
||||
@@ -64,7 +65,7 @@ class LocaleMiddleware:
|
||||
|
||||
|
||||
def get_language_from_user_settings(request: HttpRequest) -> str:
|
||||
if request.user.is_authenticated():
|
||||
if request.user.is_authenticated:
|
||||
lang_code = request.user.locale
|
||||
if lang_code in _supported and lang_code is not None and check_for_language(lang_code):
|
||||
return lang_code
|
||||
@@ -134,7 +135,7 @@ def get_language_from_request(request: HttpRequest) -> str:
|
||||
)
|
||||
|
||||
|
||||
class SecurityMiddleware:
|
||||
class SecurityMiddleware(MiddlewareMixin):
|
||||
|
||||
def _parse_csp(self, header):
|
||||
h = {}
|
||||
|
||||
@@ -5,13 +5,14 @@ from django.contrib.auth import REDIRECT_FIELD_NAME
|
||||
from django.core.urlresolvers import get_script_prefix, resolve
|
||||
from django.http import Http404
|
||||
from django.shortcuts import redirect, resolve_url
|
||||
from django.utils.deprecation import MiddlewareMixin
|
||||
from django.utils.encoding import force_str
|
||||
from django.utils.translation import ugettext as _
|
||||
|
||||
from pretix.base.models import Event, EventPermission, Organizer
|
||||
|
||||
|
||||
class PermissionMiddleware:
|
||||
class PermissionMiddleware(MiddlewareMixin):
|
||||
"""
|
||||
This middleware enforces all requests to the control app to require login.
|
||||
Additionally, it enforces all requests to "control:event." URLs
|
||||
@@ -36,7 +37,7 @@ class PermissionMiddleware:
|
||||
return redirect(urljoin(settings.SITE_URL, request.get_full_path()))
|
||||
if url_name in self.EXCEPTIONS:
|
||||
return
|
||||
if not request.user.is_authenticated():
|
||||
if not request.user.is_authenticated:
|
||||
# Taken from django/contrib/auth/decorators.py
|
||||
path = request.build_absolute_uri()
|
||||
# urlparse chokes on lazy objects in Python 3, force to str
|
||||
|
||||
@@ -11,7 +11,7 @@ def event_permission_required(permission):
|
||||
"""
|
||||
def decorator(function):
|
||||
def wrapper(request, *args, **kw):
|
||||
if not request.user.is_authenticated(): # NOQA
|
||||
if not request.user.is_authenticated: # NOQA
|
||||
# just a double check, should not ever happen
|
||||
raise PermissionDenied()
|
||||
try:
|
||||
@@ -55,7 +55,7 @@ def organizer_permission_required(permission):
|
||||
"""
|
||||
def decorator(function):
|
||||
def wrapper(request, *args, **kw):
|
||||
if not request.user.is_authenticated(): # NOQA
|
||||
if not request.user.is_authenticated: # NOQA
|
||||
# just a double check, should not ever happen
|
||||
raise PermissionDenied()
|
||||
try:
|
||||
|
||||
@@ -24,7 +24,7 @@ def login(request):
|
||||
parameter "next" for redirection after successful login
|
||||
"""
|
||||
ctx = {}
|
||||
if request.user.is_authenticated():
|
||||
if request.user.is_authenticated:
|
||||
return redirect(request.GET.get("next", 'control:index'))
|
||||
if request.method == 'POST':
|
||||
form = LoginForm(data=request.POST)
|
||||
@@ -56,7 +56,7 @@ def register(request):
|
||||
if not settings.PRETIX_REGISTRATION:
|
||||
raise PermissionDenied('Registration is disabled')
|
||||
ctx = {}
|
||||
if request.user.is_authenticated():
|
||||
if request.user.is_authenticated:
|
||||
return redirect(request.GET.get("next", 'control:index'))
|
||||
if request.method == 'POST':
|
||||
form = RegistrationForm(data=request.POST)
|
||||
@@ -85,7 +85,7 @@ class Forgot(TemplateView):
|
||||
return super().dispatch(request, *args, **kwargs)
|
||||
|
||||
def get(self, request, *args, **kwargs):
|
||||
if request.user.is_authenticated():
|
||||
if request.user.is_authenticated:
|
||||
return redirect(request.GET.get("next", 'control:index'))
|
||||
return super().get(request, *args, **kwargs)
|
||||
|
||||
@@ -149,7 +149,7 @@ class Recover(TemplateView):
|
||||
return super().dispatch(request, *args, **kwargs)
|
||||
|
||||
def get(self, request, *args, **kwargs):
|
||||
if request.user.is_authenticated():
|
||||
if request.user.is_authenticated:
|
||||
return redirect(request.GET.get("next", 'control:index'))
|
||||
try:
|
||||
user = User.objects.get(id=self.request.GET.get('id'))
|
||||
|
||||
@@ -394,7 +394,8 @@ class QuestionView(EventPermissionRequiredMixin, QuestionMixin, ChartContainingV
|
||||
if self.request.GET.get("status", "") != "":
|
||||
s = self.request.GET.get("status", "")
|
||||
if s == 'o':
|
||||
qs = qs.filter(orderposition__order__status=Order.STATUS_PENDING, expires__lt=now().date())
|
||||
qs = qs.filter(orderposition__order__status=Order.STATUS_PENDING,
|
||||
expires__lt=now().replace(hour=0, minute=0, second=0))
|
||||
elif s == 'ne':
|
||||
qs = qs.filter(orderposition__order__status__in=[Order.STATUS_PENDING, Order.STATUS_EXPIRED])
|
||||
else:
|
||||
|
||||
@@ -59,7 +59,7 @@ class OrderList(EventPermissionRequiredMixin, ListView):
|
||||
if self.request.GET.get("status", "") != "":
|
||||
s = self.request.GET.get("status", "")
|
||||
if s == 'o':
|
||||
qs = qs.filter(status=Order.STATUS_PENDING, expires__lt=now().date())
|
||||
qs = qs.filter(status=Order.STATUS_PENDING, expires__lt=now().replace(hour=0, minute=0, second=0))
|
||||
elif s == 'ne':
|
||||
qs = qs.filter(status__in=[Order.STATUS_PENDING, Order.STATUS_EXPIRED])
|
||||
else:
|
||||
|
||||
6
src/pretix/helpers/debug.py
Normal file
6
src/pretix/helpers/debug.py
Normal file
@@ -0,0 +1,6 @@
|
||||
from debug_toolbar.middleware import DebugToolbarMiddleware
|
||||
from django.utils.deprecation import MiddlewareMixin
|
||||
|
||||
|
||||
class DebugMiddlewareCompatibilityShim(MiddlewareMixin, DebugToolbarMiddleware):
|
||||
pass
|
||||
@@ -11,11 +11,11 @@ from pretix.presale.urls import (
|
||||
from pretix.urls import common_patterns
|
||||
|
||||
presale_patterns_main = [
|
||||
url(r'', include(locale_patterns + [
|
||||
url(r'', include((locale_patterns + [
|
||||
url(r'^(?P<organizer>[^/]+)/(?P<event>[^/]+)/', include(event_patterns)),
|
||||
url(r'^(?P<organizer>[^/]+)/', include(organizer_patterns)),
|
||||
url(r'^$', TemplateView.as_view(template_name='pretixpresale/index.html'))
|
||||
], namespace='presale'))
|
||||
], 'presale')))
|
||||
]
|
||||
|
||||
raw_plugin_patterns = []
|
||||
@@ -30,7 +30,7 @@ for app in apps.get_app_configs():
|
||||
single_plugin_patterns.append(url(r'^(?P<organizer>[^/]+)/(?P<event>[^/]+)/',
|
||||
include(urlmod.event_patterns)))
|
||||
raw_plugin_patterns.append(
|
||||
url(r'', include(single_plugin_patterns, namespace=app.label))
|
||||
url(r'', include((single_plugin_patterns, app.label)))
|
||||
)
|
||||
elif importlib.util.find_spec(app.name + '.maindomain_urls'): # noqa
|
||||
warnings.warn('Please put your config in an \'urls\' module using the urlpatterns and event_patterns '
|
||||
@@ -38,11 +38,11 @@ for app in apps.get_app_configs():
|
||||
DeprecationWarning)
|
||||
urlmod = importlib.import_module(app.name + '.maindomain_urls')
|
||||
raw_plugin_patterns.append(
|
||||
url(r'', include(urlmod, namespace=app.label))
|
||||
url(r'', include((urlmod, app.label)))
|
||||
)
|
||||
|
||||
plugin_patterns = [
|
||||
url(r'', include(raw_plugin_patterns, namespace='plugins'))
|
||||
url(r'', include((raw_plugin_patterns, 'plugins')))
|
||||
]
|
||||
|
||||
# The presale namespace comes last, because it contains a wildcard catch
|
||||
|
||||
@@ -9,6 +9,7 @@ from django.core.urlresolvers import set_urlconf
|
||||
from django.http.request import split_domain_port
|
||||
from django.middleware.csrf import CsrfViewMiddleware as BaseCsrfMiddleware
|
||||
from django.utils.cache import patch_vary_headers
|
||||
from django.utils.deprecation import MiddlewareMixin
|
||||
from django.utils.http import cookie_date
|
||||
|
||||
from pretix.multidomain.models import KnownDomain
|
||||
@@ -16,7 +17,7 @@ from pretix.multidomain.models import KnownDomain
|
||||
LOCAL_HOST_NAMES = ('testserver', 'localhost')
|
||||
|
||||
|
||||
class MultiDomainMiddleware:
|
||||
class MultiDomainMiddleware(MiddlewareMixin):
|
||||
def process_request(self, request):
|
||||
# We try three options, in order of decreasing preference.
|
||||
if settings.USE_X_FORWARDED_HOST and ('HTTP_X_FORWARDED_HOST' in request.META):
|
||||
|
||||
@@ -10,10 +10,10 @@ from pretix.presale.urls import (
|
||||
from pretix.urls import common_patterns
|
||||
|
||||
presale_patterns = [
|
||||
url(r'', include(locale_patterns + [
|
||||
url(r'', include((locale_patterns + [
|
||||
url(r'^(?P<event>[^/]+)/', include(event_patterns)),
|
||||
url(r'', include(organizer_patterns))
|
||||
], namespace='presale'))
|
||||
], 'presale')))
|
||||
]
|
||||
|
||||
raw_plugin_patterns = []
|
||||
@@ -23,7 +23,7 @@ for app in apps.get_app_configs():
|
||||
urlmod = importlib.import_module(app.name + '.urls')
|
||||
if hasattr(urlmod, 'event_patterns'):
|
||||
raw_plugin_patterns.append(
|
||||
url(r'^(?P<event>[^/]+)/', include(urlmod.event_patterns, namespace=app.label))
|
||||
url(r'^(?P<event>[^/]+)/', include((urlmod.event_patterns, app.label)))
|
||||
)
|
||||
elif importlib.util.find_spec(app.name + '.subdomain_urls'): # noqa
|
||||
warnings.warn('Please put your config in an \'urls\' module using the event_patterns '
|
||||
@@ -31,11 +31,11 @@ for app in apps.get_app_configs():
|
||||
DeprecationWarning)
|
||||
urlmod = importlib.import_module(app.name + '.subdomain_urls')
|
||||
raw_plugin_patterns.append(
|
||||
url(r'', include(urlmod, namespace=app.label))
|
||||
url(r'', include((urlmod, app.label)))
|
||||
)
|
||||
|
||||
plugin_patterns = [
|
||||
url(r'', include(raw_plugin_patterns, namespace='plugins'))
|
||||
url(r'', include((raw_plugin_patterns, 'plugins')))
|
||||
]
|
||||
|
||||
# The presale namespace comes last, because it contains a wildcard catch
|
||||
|
||||
@@ -1,11 +1,12 @@
|
||||
from django.core.urlresolvers import resolve
|
||||
from django.utils.deprecation import MiddlewareMixin
|
||||
|
||||
from pretix.presale.signals import process_response
|
||||
|
||||
from .utils import _detect_event
|
||||
|
||||
|
||||
class EventMiddleware:
|
||||
class EventMiddleware(MiddlewareMixin):
|
||||
def process_request(self, request):
|
||||
url = resolve(request.path_info)
|
||||
request._namespace = url.namespace
|
||||
|
||||
@@ -60,7 +60,7 @@ def _detect_event(request):
|
||||
LocaleMiddleware().process_request(request)
|
||||
|
||||
if not request.event.live:
|
||||
if not request.user.is_authenticated() or not EventPermission.objects.filter(
|
||||
if not request.user.is_authenticated or not EventPermission.objects.filter(
|
||||
event=request.event, user=request.user).exists():
|
||||
raise PermissionDenied(_('The selected ticket shop is currently not available.'))
|
||||
|
||||
|
||||
@@ -15,7 +15,7 @@ class LocaleSet(View):
|
||||
|
||||
locale = request.GET.get('locale')
|
||||
if locale in [lc for lc, ll in settings.LANGUAGES]:
|
||||
if request.user.is_authenticated():
|
||||
if request.user.is_authenticated:
|
||||
request.user.locale = locale
|
||||
request.user.save()
|
||||
|
||||
|
||||
@@ -193,7 +193,7 @@ CORE_MODULES = {
|
||||
("pretix", "control")
|
||||
}
|
||||
|
||||
MIDDLEWARE_CLASSES = [
|
||||
MIDDLEWARE = [
|
||||
'pretix.multidomain.middlewares.MultiDomainMiddleware',
|
||||
'pretix.multidomain.middlewares.SessionMiddleware',
|
||||
'django.middleware.common.CommonMiddleware',
|
||||
@@ -212,7 +212,7 @@ try:
|
||||
import debug_toolbar # noqa
|
||||
if DEBUG:
|
||||
INSTALLED_APPS.append('debug_toolbar.apps.DebugToolbarConfig')
|
||||
MIDDLEWARE_CLASSES.append('debug_toolbar.middleware.DebugToolbarMiddleware')
|
||||
MIDDLEWARE.append('pretix.helpers.debug.DebugMiddlewareCompatibilityShim')
|
||||
except ImportError:
|
||||
pass
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@ base_patterns = [
|
||||
]
|
||||
|
||||
control_patterns = [
|
||||
url(r'^control/', include(pretix.control.urls, namespace='control')),
|
||||
url(r'^control/', include((pretix.control.urls, 'control'))),
|
||||
]
|
||||
|
||||
debug_patterns = []
|
||||
|
||||
Reference in New Issue
Block a user