From d658303da376003d7b93af5d6b16f9b8e86f81a3 Mon Sep 17 00:00:00 2001 From: Raphael Michel Date: Wed, 20 May 2015 18:17:08 +0200 Subject: [PATCH] Try to make pretix compatible with SCRIPT_NAME Remove unnecessary resolve() calls --- src/pretix/control/context.py | 4 ++-- src/pretix/control/middleware.py | 6 +++--- src/pretix/control/views/item.py | 27 +++++++++------------------ 3 files changed, 14 insertions(+), 23 deletions(-) diff --git a/src/pretix/control/context.py b/src/pretix/control/context.py index c34a9d679..aa3cbeb1d 100644 --- a/src/pretix/control/context.py +++ b/src/pretix/control/context.py @@ -1,5 +1,5 @@ from django.conf import settings -from django.core.urlresolvers import resolve +from django.core.urlresolvers import resolve, get_script_prefix from .signals import html_head, nav_event @@ -8,7 +8,7 @@ def contextprocessor(request): Adds data to all template contexts """ url = resolve(request.path_info) - if not request.path.startswith('/control'): + if not request.path.startswith(get_script_prefix() + 'control'): return {} ctx = { 'url_name': url.url_name, diff --git a/src/pretix/control/middleware.py b/src/pretix/control/middleware.py index 512ba5a6f..e5aea9e81 100644 --- a/src/pretix/control/middleware.py +++ b/src/pretix/control/middleware.py @@ -1,7 +1,7 @@ +from urllib.parse import urlparse from django.conf import settings -from django.core.urlresolvers import resolve +from django.core.urlresolvers import resolve, get_script_prefix from django.utils.encoding import force_str -from django.utils.six.moves.urllib.parse import urlparse from django.shortcuts import resolve_url from django.contrib.auth import REDIRECT_FIELD_NAME from django.http import HttpResponseNotFound @@ -25,7 +25,7 @@ class PermissionMiddleware: def process_request(self, request): url = resolve(request.path_info) url_name = url.url_name - if not request.path.startswith('/control') or url_name in self.EXCEPTIONS: + if not request.path.startswith(get_script_prefix() + 'control') or url_name in self.EXCEPTIONS: return if not request.user.is_authenticated(): # Taken from django/contrib/auth/decorators.py diff --git a/src/pretix/control/views/item.py b/src/pretix/control/views/item.py index 5d7d1cc9a..76415975b 100644 --- a/src/pretix/control/views/item.py +++ b/src/pretix/control/views/item.py @@ -52,9 +52,8 @@ class CategoryDelete(EventPermissionRequiredMixin, DeleteView): context_object_name = 'category' def get_object(self, queryset=None) -> ItemCategory: - url = resolve(self.request.path_info) return self.request.event.categories.current.get( - identity=url.kwargs['category'] + identity=self.kwargs['category'] ) def delete(self, request, *args, **kwargs): @@ -199,17 +198,15 @@ class PropertyUpdate(EventPermissionRequiredMixin, UpdateView): context_object_name = 'property' def get_object(self, queryset=None) -> Property: - url = resolve(self.request.path_info) return self.request.event.properties.current.get( - identity=url.kwargs['property'] + identity=self.kwargs['property'] ) def get_success_url(self) -> str: - url = resolve(self.request.path_info) return reverse('control:event.items.properties.edit', kwargs={ 'organizer': self.request.event.organizer.slug, 'event': self.request.event.slug, - 'property': url.kwargs['property'] + 'property': self.kwargs['property'] }) + '?success=true' def get_formset(self): @@ -322,9 +319,8 @@ class PropertyDelete(EventPermissionRequiredMixin, DeleteView): def get_object(self, queryset=None) -> Property: if not hasattr(self, 'object') or not self.object: - url = resolve(self.request.path_info) self.object = self.request.event.properties.current.get( - identity=url.kwargs['property'] + identity=self.kwargs['property'] ) return self.object @@ -371,9 +367,8 @@ class QuestionDelete(EventPermissionRequiredMixin, DeleteView): context_object_name = 'question' def get_object(self, queryset=None) -> Question: - url = resolve(self.request.path_info) return self.request.event.questions.current.get( - identity=url.kwargs['question'] + identity=self.kwargs['question'] ) def get_context_data(self, *args, **kwargs) -> dict: @@ -402,9 +397,8 @@ class QuestionUpdate(EventPermissionRequiredMixin, UpdateView): context_object_name = 'question' def get_object(self, queryset=None) -> Question: - url = resolve(self.request.path_info) return self.request.event.questions.current.get( - identity=url.kwargs['question'] + identity=self.kwargs['question'] ) def get_success_url(self) -> str: @@ -559,9 +553,8 @@ class QuotaUpdate(EventPermissionRequiredMixin, QuotaEditorMixin, UpdateView): context_object_name = 'quota' def get_object(self, queryset=None) -> Quota: - url = resolve(self.request.path_info) return self.request.event.quotas.current.get( - identity=url.kwargs['quota'] + identity=self.kwargs['quota'] ) def get_success_url(self) -> str: @@ -578,9 +571,8 @@ class QuotaDelete(EventPermissionRequiredMixin, DeleteView): context_object_name = 'quota' def get_object(self, queryset=None) -> Quota: - url = resolve(self.request.path_info) return self.request.event.quotas.current.get( - identity=url.kwargs['quota'] + identity=self.kwargs['quota'] ) def get_context_data(self, *args, **kwargs) -> dict: @@ -607,9 +599,8 @@ class ItemDetailMixin(SingleObjectMixin): def get_object(self, queryset=None) -> Item: if not hasattr(self, 'object') or not self.object: - url = resolve(self.request.path_info) self.item = self.request.event.items.current.get( - identity=url.kwargs['item'] + identity=self.kwargs['item'] ) self.object = self.item return self.object