mirror of
https://github.com/pretix/pretix.git
synced 2026-05-09 15:54:03 +00:00
Replace redirect() with redirect_to_url() if we don't need Django's resolution
This commit is contained in:
@@ -44,7 +44,7 @@ from django.contrib import messages
|
||||
from django.core.cache import caches
|
||||
from django.db.models import Q
|
||||
from django.http import FileResponse, Http404, JsonResponse
|
||||
from django.shortcuts import get_object_or_404, redirect, render
|
||||
from django.shortcuts import get_object_or_404, render
|
||||
from django.utils import translation
|
||||
from django.utils.crypto import get_random_string
|
||||
from django.utils.decorators import method_decorator
|
||||
@@ -430,7 +430,7 @@ class CartApplyVoucher(EventViewMixin, CartActionMixin, AsyncAction, View):
|
||||
'redirect': self.get_error_url()
|
||||
})
|
||||
else:
|
||||
return redirect(self.get_error_url())
|
||||
return redirect_to_url(self.get_error_url())
|
||||
|
||||
|
||||
@method_decorator(allow_frame_if_namespaced, 'dispatch')
|
||||
@@ -451,14 +451,14 @@ class CartRemove(EventViewMixin, CartActionMixin, AsyncAction, View):
|
||||
return self.do(self.request.event.id, int(request.POST.get('id')), get_or_create_cart_id(self.request),
|
||||
translation.get_language(), request.sales_channel.identifier)
|
||||
except ValueError:
|
||||
return redirect(self.get_error_url())
|
||||
return redirect_to_url(self.get_error_url())
|
||||
else:
|
||||
if 'ajax' in self.request.GET or 'ajax' in self.request.POST:
|
||||
return JsonResponse({
|
||||
'redirect': self.get_error_url()
|
||||
})
|
||||
else:
|
||||
return redirect(self.get_error_url())
|
||||
return redirect_to_url(self.get_error_url())
|
||||
|
||||
|
||||
@method_decorator(allow_frame_if_namespaced, 'dispatch')
|
||||
@@ -537,7 +537,7 @@ class CartAdd(EventViewMixin, CartActionMixin, AsyncAction, View):
|
||||
'message': str(error_messages['empty'])
|
||||
})
|
||||
else:
|
||||
return redirect(self.get_error_url())
|
||||
return redirect_to_url(self.get_error_url())
|
||||
|
||||
|
||||
@method_decorator(allow_frame_if_namespaced, 'dispatch')
|
||||
@@ -660,8 +660,12 @@ class RedeemView(NoSearchIndexViewMixin, EventViewMixin, CartMixin, TemplateView
|
||||
self.subevent = self.voucher.subevent
|
||||
|
||||
if not err and not self.subevent:
|
||||
return redirect(eventreverse(self.request.event, 'presale:event.index',
|
||||
kwargs={'cart_namespace': kwargs.get('cart_namespace') or ''}) + '?voucher=' + quote(self.voucher.code))
|
||||
return redirect_to_url(
|
||||
eventreverse(
|
||||
self.request.event, 'presale:event.index',
|
||||
kwargs={'cart_namespace': kwargs.get('cart_namespace') or ''}
|
||||
) + '?voucher=' + quote(self.voucher.code)
|
||||
)
|
||||
else:
|
||||
pass
|
||||
|
||||
@@ -678,7 +682,7 @@ class RedeemView(NoSearchIndexViewMixin, EventViewMixin, CartMixin, TemplateView
|
||||
|
||||
def get(self, request, *args, **kwargs):
|
||||
if 'iframe' in request.GET and 'require_cookie' not in request.GET:
|
||||
return redirect(request.get_full_path() + '&require_cookie=1')
|
||||
return redirect_to_url(request.get_full_path() + '&require_cookie=1')
|
||||
|
||||
if len(self.request.GET.get('widget_data', '{}')) > 3:
|
||||
# We've been passed data from a widget, we need to create a cart session to store it.
|
||||
|
||||
@@ -23,13 +23,13 @@ from urllib.parse import quote
|
||||
|
||||
from django.contrib import messages
|
||||
from django.http import Http404
|
||||
from django.shortcuts import redirect
|
||||
from django.utils.decorators import method_decorator
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
from django.views.generic import View
|
||||
|
||||
from pretix.base.services.cart import CartError
|
||||
from pretix.base.signals import validate_cart
|
||||
from pretix.helpers.http import redirect_to_url
|
||||
from pretix.multidomain.urlreverse import eventreverse
|
||||
from pretix.presale.checkoutflow import get_checkout_flow
|
||||
from pretix.presale.views import (
|
||||
@@ -94,4 +94,4 @@ class CheckoutView(View):
|
||||
def redirect(self, url):
|
||||
if 'cart_id' in self.request.GET:
|
||||
url += ('&' if '?' in url else '?') + 'cart_id=' + quote(self.request.GET.get('cart_id'))
|
||||
return redirect(url)
|
||||
return redirect_to_url(url)
|
||||
|
||||
@@ -35,7 +35,7 @@ from django.db.models import (
|
||||
Count, IntegerField, OuterRef, Prefetch, Q, Subquery,
|
||||
)
|
||||
from django.http import Http404, HttpResponseRedirect
|
||||
from django.shortcuts import get_object_or_404, redirect, render
|
||||
from django.shortcuts import get_object_or_404, render
|
||||
from django.utils.crypto import get_random_string
|
||||
from django.utils.decorators import method_decorator
|
||||
from django.utils.functional import cached_property
|
||||
@@ -343,7 +343,7 @@ class CustomerRequiredMixin:
|
||||
if not request.organizer.settings.customer_accounts:
|
||||
raise Http404('Feature not enabled')
|
||||
if not getattr(request, 'customer', None):
|
||||
return redirect(
|
||||
return redirect_to_url(
|
||||
eventreverse(self.request.organizer, 'presale:organizer.customer.login', kwargs={}) +
|
||||
'?next=' + quote(self.request.path_info + '?' + self.request.GET.urlencode())
|
||||
)
|
||||
@@ -848,7 +848,7 @@ class SSOLoginReturnView(RedirectBackMixin, View):
|
||||
self.request,
|
||||
message,
|
||||
)
|
||||
return redirect(eventreverse(self.request.organizer, 'presale:organizer.customer.login', kwargs={}))
|
||||
return redirect_to_url(eventreverse(self.request.organizer, 'presale:organizer.customer.login', kwargs={}))
|
||||
else:
|
||||
return render(self.request, 'pretixpresale/postmessage.html', {
|
||||
'message': {
|
||||
|
||||
@@ -49,7 +49,7 @@ from django.db.models import (
|
||||
Count, Exists, IntegerField, OuterRef, Prefetch, Q, Value,
|
||||
)
|
||||
from django.http import Http404, HttpResponse
|
||||
from django.shortcuts import get_object_or_404, redirect, render
|
||||
from django.shortcuts import get_object_or_404, render
|
||||
from django.utils.decorators import method_decorator
|
||||
from django.utils.formats import get_format
|
||||
from django.utils.functional import SimpleLazyObject
|
||||
@@ -78,6 +78,7 @@ from pretix.presale.views.organizer import (
|
||||
)
|
||||
|
||||
from ...helpers.formats.en.formats import SHORT_MONTH_DAY_FORMAT, WEEK_FORMAT
|
||||
from ...helpers.http import redirect_to_url
|
||||
from . import (
|
||||
CartMixin, EventViewMixin, allow_frame_if_namespaced, get_cart,
|
||||
iframe_entry_view_wrapper,
|
||||
@@ -456,14 +457,14 @@ class EventIndex(EventViewMixin, EventListMixin, CartMixin, TemplateView):
|
||||
if all(k in request.GET for k in keys):
|
||||
get_params = {k: v for k, v in request.GET.items() if k not in keys}
|
||||
get_params["date"] = "%s-%s" % (request.GET.get("year"), request.GET.get("month"))
|
||||
return redirect(self.request.path + "?" + urlencode(get_params))
|
||||
return redirect_to_url(self.request.path + "?" + urlencode(get_params))
|
||||
|
||||
# redirect old week-year-URLs to new date-URLs
|
||||
keys = ("week", "year")
|
||||
if all(k in request.GET for k in keys):
|
||||
get_params = {k: v for k, v in request.GET.items() if k not in keys}
|
||||
get_params["date"] = "%s-W%s" % (request.GET.get("year"), request.GET.get("week"))
|
||||
return redirect(self.request.path + "?" + urlencode(get_params))
|
||||
return redirect_to_url(self.request.path + "?" + urlencode(get_params))
|
||||
|
||||
from pretix.presale.views.cart import get_or_create_cart_id
|
||||
|
||||
@@ -471,11 +472,11 @@ class EventIndex(EventViewMixin, EventListMixin, CartMixin, TemplateView):
|
||||
if request.GET.get('src', '') == 'widget' and 'take_cart_id' in request.GET:
|
||||
# User has clicked "Open in a new tab" link in widget
|
||||
get_or_create_cart_id(request)
|
||||
return redirect(eventreverse(request.event, 'presale:event.index', kwargs=kwargs))
|
||||
return redirect_to_url(eventreverse(request.event, 'presale:event.index', kwargs=kwargs))
|
||||
elif request.GET.get('iframe', '') == '1' and 'take_cart_id' in request.GET:
|
||||
# Widget just opened, a cart already exists. Let's to a stupid redirect to check if cookies are disabled
|
||||
get_or_create_cart_id(request)
|
||||
return redirect(eventreverse(request.event, 'presale:event.index', kwargs=kwargs) + '?' + urllib.parse.urlencode({
|
||||
return redirect_to_url(eventreverse(request.event, 'presale:event.index', kwargs=kwargs) + '?' + urllib.parse.urlencode({
|
||||
'require_cookie': 'true',
|
||||
'cart_id': request.GET.get('take_cart_id'),
|
||||
**({"locale": request.GET.get('locale')} if request.GET.get('locale') else {}),
|
||||
@@ -510,7 +511,7 @@ class EventIndex(EventViewMixin, EventListMixin, CartMixin, TemplateView):
|
||||
return super().get(request, *args, **kwargs)
|
||||
else:
|
||||
if 'subevent' in kwargs:
|
||||
return redirect(self.get_index_url())
|
||||
return redirect_to_url(self.get_index_url())
|
||||
else:
|
||||
return super().get(request, *args, **kwargs)
|
||||
|
||||
@@ -787,11 +788,11 @@ class SeatingPlanView(EventViewMixin, TemplateView):
|
||||
if request.GET.get('src', '') == 'widget' and 'take_cart_id' in request.GET:
|
||||
# User has clicked "Open in a new tab" link in widget
|
||||
get_or_create_cart_id(request)
|
||||
return redirect(eventreverse(request.event, 'presale:event.seatingplan', kwargs=kwargs))
|
||||
return redirect_to_url(eventreverse(request.event, 'presale:event.seatingplan', kwargs=kwargs))
|
||||
elif request.GET.get('iframe', '') == '1' and 'take_cart_id' in request.GET:
|
||||
# Widget just opened, a cart already exists. Let's to a stupid redirect to check if cookies are disabled
|
||||
get_or_create_cart_id(request)
|
||||
return redirect(eventreverse(request.event, 'presale:event.seatingplan', kwargs=kwargs) + '?require_cookie=true&cart_id={}'.format(
|
||||
return redirect_to_url(eventreverse(request.event, 'presale:event.seatingplan', kwargs=kwargs) + '?require_cookie=true&cart_id={}'.format(
|
||||
request.GET.get('take_cart_id')
|
||||
))
|
||||
elif request.GET.get('iframe', '') == '1' and len(self.request.GET.get('widget_data', '{}')) > 3:
|
||||
@@ -890,4 +891,4 @@ class EventAuth(View):
|
||||
raise PermissionDenied(_('Please go back and try again.'))
|
||||
|
||||
request.session['pretix_event_access_{}'.format(request.event.pk)] = parent
|
||||
return redirect(eventreverse(request.event, 'presale:event.index'))
|
||||
return redirect_to_url(eventreverse(request.event, 'presale:event.index'))
|
||||
|
||||
@@ -44,6 +44,7 @@ from pretix.base.customersso.oidc import (
|
||||
from pretix.base.models.customers import (
|
||||
CustomerSSOAccessToken, CustomerSSOClient, CustomerSSOGrant,
|
||||
)
|
||||
from pretix.helpers.http import redirect_to_url
|
||||
from pretix.multidomain.middlewares import CsrfViewMiddleware
|
||||
from pretix.multidomain.urlreverse import build_absolute_uri
|
||||
from pretix.presale.forms.customer import AuthenticationForm
|
||||
@@ -106,7 +107,7 @@ class AuthorizeView(View):
|
||||
CsrfViewMiddleware(lambda: None)._check_token(request)
|
||||
except:
|
||||
# External request, we prefer GET and will redirect to prevent confusion with our login form
|
||||
return redirect(request.path + '?' + request.POST.urlencode())
|
||||
return redirect_to_url(request.path + '?' + request.POST.urlencode())
|
||||
return self._process_auth_request(request, request.GET)
|
||||
|
||||
def _final_error(self, error, error_description):
|
||||
|
||||
@@ -86,6 +86,7 @@ from pretix.base.signals import (
|
||||
from pretix.base.templatetags.money import money_filter
|
||||
from pretix.base.views.mixins import OrderQuestionsViewMixin
|
||||
from pretix.base.views.tasks import AsyncAction
|
||||
from pretix.helpers.http import redirect_to_url
|
||||
from pretix.helpers.safedownload import check_token
|
||||
from pretix.multidomain.urlreverse import build_absolute_uri, eventreverse
|
||||
from pretix.presale.forms.checkout import InvoiceAddressForm, QuestionsForm
|
||||
@@ -420,9 +421,9 @@ class OrderPaymentStart(EventViewMixin, OrderDetailMixin, TemplateView):
|
||||
if 'payment_change_{}'.format(self.order.pk) in request.session:
|
||||
del request.session['payment_change_{}'.format(self.order.pk)]
|
||||
if isinstance(resp, str):
|
||||
return redirect(resp)
|
||||
return redirect_to_url(resp)
|
||||
elif resp is True:
|
||||
return redirect(self.get_confirm_url())
|
||||
return redirect_to_url(self.get_confirm_url())
|
||||
else:
|
||||
return self.get(request, *args, **kwargs)
|
||||
|
||||
@@ -574,9 +575,9 @@ class OrderPaymentComplete(EventViewMixin, OrderDetailMixin, View):
|
||||
return redirect(self.get_order_url())
|
||||
|
||||
if self.order.status == Order.STATUS_PAID:
|
||||
return redirect(resp or self.get_order_url() + '?paid=yes')
|
||||
return redirect_to_url(resp or self.get_order_url() + '?paid=yes')
|
||||
else:
|
||||
return redirect(resp or self.get_order_url() + '?thanks=yes')
|
||||
return redirect_to_url(resp or self.get_order_url() + '?thanks=yes')
|
||||
|
||||
def get_payment_url(self):
|
||||
return eventreverse(self.request.event, 'presale:event.order.pay', kwargs={
|
||||
|
||||
@@ -48,7 +48,6 @@ from django.core.cache import caches
|
||||
from django.db.models import Exists, Max, Min, OuterRef, Prefetch, Q
|
||||
from django.db.models.functions import Coalesce, Greatest
|
||||
from django.http import Http404, HttpResponse, QueryDict
|
||||
from django.shortcuts import redirect
|
||||
from django.templatetags.static import static
|
||||
from django.utils.decorators import method_decorator
|
||||
from django.utils.formats import date_format, get_format
|
||||
@@ -68,6 +67,7 @@ from pretix.helpers.daterange import daterange
|
||||
from pretix.helpers.formats.en.formats import (
|
||||
SHORT_MONTH_DAY_FORMAT, WEEK_FORMAT,
|
||||
)
|
||||
from pretix.helpers.http import redirect_to_url
|
||||
from pretix.helpers.thumb import get_thumbnail
|
||||
from pretix.multidomain.urlreverse import eventreverse
|
||||
from pretix.presale.forms.organizer import EventListFilterForm
|
||||
@@ -655,7 +655,7 @@ class CalendarView(OrganizerViewMixin, EventListMixin, TemplateView):
|
||||
if all(k in request.GET for k in keys):
|
||||
get_params = {k: v for k, v in request.GET.items() if k not in keys}
|
||||
get_params["date"] = "%s-%s" % (request.GET.get("year"), request.GET.get("month"))
|
||||
return redirect(self.request.path + "?" + urlencode(get_params))
|
||||
return redirect_to_url(self.request.path + "?" + urlencode(get_params))
|
||||
|
||||
self._set_month_year()
|
||||
return super().get(request, *args, **kwargs)
|
||||
@@ -736,7 +736,7 @@ class WeekCalendarView(OrganizerViewMixin, EventListMixin, TemplateView):
|
||||
if all(k in request.GET for k in keys):
|
||||
get_params = {k: v for k, v in request.GET.items() if k not in keys}
|
||||
get_params["date"] = "%s-W%s" % (request.GET.get("year"), request.GET.get("week"))
|
||||
return redirect(self.request.path + "?" + urlencode(get_params))
|
||||
return redirect_to_url(self.request.path + "?" + urlencode(get_params))
|
||||
|
||||
self._set_week_year()
|
||||
return super().get(request, *args, **kwargs)
|
||||
@@ -1230,6 +1230,6 @@ class OrganizerIcalDownload(OrganizerViewMixin, View):
|
||||
class OrganizerFavicon(View):
|
||||
def get(self, *args, **kwargs):
|
||||
if self.request.organizer.settings.favicon:
|
||||
return redirect(get_thumbnail(self.request.organizer.settings.favicon, '32x32^').thumb.url)
|
||||
return redirect_to_url(get_thumbnail(self.request.organizer.settings.favicon, '32x32^').thumb.url)
|
||||
else:
|
||||
return redirect(static("pretixbase/img/favicon.ico"))
|
||||
return redirect_to_url(static("pretixbase/img/favicon.ico"))
|
||||
|
||||
@@ -36,7 +36,6 @@ import logging
|
||||
|
||||
from django.conf import settings
|
||||
from django.contrib import messages
|
||||
from django.shortcuts import redirect
|
||||
from django.utils.functional import cached_property
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
from django.views import View
|
||||
@@ -44,6 +43,7 @@ from django.views.generic import TemplateView
|
||||
|
||||
from pretix.base.email import get_email_context
|
||||
from pretix.base.services.mail import INVALID_ADDRESS, SendMailException, mail
|
||||
from pretix.helpers.http import redirect_to_url
|
||||
from pretix.multidomain.urlreverse import eventreverse
|
||||
from pretix.presale.forms.user import ResendLinkForm
|
||||
from pretix.presale.views import EventViewMixin
|
||||
@@ -71,7 +71,7 @@ class ResendLinkView(EventViewMixin, TemplateView):
|
||||
'already sent you an email with a link to your ticket in the past {number} hours. '
|
||||
'If the email did not arrive, please check your spam folder and also double check '
|
||||
'that you used the correct email address.').format(number=24))
|
||||
return redirect(eventreverse(self.request.event, 'presale:event.resend_link'))
|
||||
return redirect_to_url(eventreverse(self.request.event, 'presale:event.resend_link'))
|
||||
else:
|
||||
rc.setex('pretix_resend_{}_{}'.format(request.event.pk, user), 3600 * 24, '1')
|
||||
|
||||
@@ -92,7 +92,7 @@ class ResendLinkView(EventViewMixin, TemplateView):
|
||||
return self.get(request, *args, **kwargs)
|
||||
|
||||
messages.success(self.request, _('If there were any orders by this user, they will receive an email with their order codes.'))
|
||||
return redirect(eventreverse(self.request.event, 'presale:event.index'))
|
||||
return redirect_to_url(eventreverse(self.request.event, 'presale:event.index'))
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
context = super().get_context_data(**kwargs)
|
||||
@@ -107,4 +107,4 @@ class UnlockHashView(EventViewMixin, View):
|
||||
hashes = request.session.get('pretix_unlock_hashes', [])
|
||||
hashes.append(kwargs.get('hash'))
|
||||
request.session['pretix_unlock_hashes'] = hashes
|
||||
return redirect(eventreverse(self.request.event, 'presale:event.index'))
|
||||
return redirect_to_url(eventreverse(self.request.event, 'presale:event.index'))
|
||||
|
||||
Reference in New Issue
Block a user