mirror of
https://github.com/pretix/pretix.git
synced 2026-05-06 15:24:02 +00:00
Added multi-domain capabilities
This commit is contained in:
@@ -1,7 +1,6 @@
|
||||
from django.conf import settings
|
||||
from django.contrib import messages
|
||||
from django.core.exceptions import ValidationError
|
||||
from django.core.urlresolvers import reverse
|
||||
from django.core.validators import EmailValidator
|
||||
from django.db.models import Q, Sum
|
||||
from django.http import HttpResponseNotAllowed
|
||||
@@ -14,6 +13,7 @@ from django.views.generic.base import TemplateResponseMixin
|
||||
from pretix.base.models import CartPosition, Order
|
||||
from pretix.base.services.orders import OrderError, perform_order
|
||||
from pretix.base.signals import register_payment_providers
|
||||
from pretix.multidomain.urlreverse import eventreverse
|
||||
from pretix.presale.forms.checkout import ContactForm
|
||||
from pretix.presale.signals import checkout_flow_steps
|
||||
from pretix.presale.views import CartMixin
|
||||
@@ -59,32 +59,19 @@ class BaseCheckoutFlowStep:
|
||||
return HttpResponseNotAllowed([])
|
||||
|
||||
def get_step_url(self):
|
||||
return reverse(
|
||||
'presale:event.checkout',
|
||||
kwargs={
|
||||
'event': self.event.slug,
|
||||
'organizer': self.event.organizer.slug,
|
||||
'step': self.identifier
|
||||
}
|
||||
)
|
||||
return eventreverse(self.event, 'presale:event.checkout', kwargs={'step': self.identifier})
|
||||
|
||||
def get_prev_url(self, request):
|
||||
prev = self.get_prev_applicable(request)
|
||||
if not prev:
|
||||
return reverse('presale:event.index', kwargs={
|
||||
'event': self.request.event.slug,
|
||||
'organizer': self.request.event.organizer.slug
|
||||
})
|
||||
return eventreverse(self.event, 'presale:event.index')
|
||||
else:
|
||||
return prev.get_step_url()
|
||||
|
||||
def get_next_url(self, request):
|
||||
n = self.get_next_applicable(request)
|
||||
if not n:
|
||||
return reverse('presale:event.checkout.confirm', kwargs={
|
||||
'event': self.request.event.slug,
|
||||
'organizer': self.request.event.organizer.slug
|
||||
})
|
||||
return eventreverse(self.event, 'presale:event.checkout.confirm')
|
||||
else:
|
||||
return n.get_step_url()
|
||||
|
||||
@@ -342,9 +329,7 @@ class ConfirmStep(CartMixin, AsyncAction, TemplateFlowStep):
|
||||
return self.get_step_url()
|
||||
|
||||
def get_order_url(self, order):
|
||||
return reverse('presale:event.order.pay.complete', kwargs={
|
||||
'event': self.request.event.slug,
|
||||
'organizer': self.request.event.organizer.slug,
|
||||
return eventreverse(self.request.event, 'presale:event.order.pay.complete', kwargs={
|
||||
'order': order.code,
|
||||
'secret': order.secret
|
||||
})
|
||||
|
||||
@@ -1,8 +1,12 @@
|
||||
from urllib.parse import urljoin
|
||||
|
||||
from django.core.urlresolvers import resolve
|
||||
from django.http import Http404
|
||||
from django.shortcuts import redirect
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
|
||||
from pretix.base.models import Event
|
||||
from pretix.multidomain.urlreverse import get_domain
|
||||
|
||||
|
||||
class EventMiddleware:
|
||||
@@ -15,10 +19,36 @@ class EventMiddleware:
|
||||
|
||||
if 'event.' in url_name and 'event' in url.kwargs:
|
||||
try:
|
||||
request.event = Event.objects.current.filter(
|
||||
slug=url.kwargs['event'],
|
||||
organizer__slug=url.kwargs['organizer'],
|
||||
).select_related('organizer')[0]
|
||||
if hasattr(request, 'organizer'):
|
||||
# We are on an organizer's custom domain
|
||||
if 'organizer' in url.kwargs and url.kwargs['organizer']:
|
||||
if url.kwargs['organizer'] != request.organizer.slug:
|
||||
raise Http404(_('The selected event was not found.'))
|
||||
path = "/" + request.get_full_path().split("/", 2)[-1]
|
||||
return redirect(path)
|
||||
|
||||
request.event = Event.objects.current.filter(
|
||||
slug=url.kwargs['event'],
|
||||
organizer=request.organizer,
|
||||
).select_related('organizer')[0]
|
||||
else:
|
||||
# We are on our main domain
|
||||
if 'organizer' not in url.kwargs:
|
||||
raise Http404(_('The selected event was not found.'))
|
||||
|
||||
request.event = Event.objects.current.filter(
|
||||
slug=url.kwargs['event'],
|
||||
organizer__slug=url.kwargs['organizer']
|
||||
).select_related('organizer')[0]
|
||||
|
||||
# If this organizer has a custom domain, send the user there
|
||||
domain = get_domain(request.event)
|
||||
if domain:
|
||||
if request.port and request.port not in (80, 443):
|
||||
domain = '%s:%d' % (domain, request.port)
|
||||
path = request.get_full_path().split("/", 2)[-1]
|
||||
return redirect(urljoin('%s://%s' % (request.scheme, domain), path))
|
||||
|
||||
except IndexError:
|
||||
raise Http404(_('The selected event was not found.'))
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
{% load compress %}
|
||||
{% load staticfiles %}
|
||||
{% load i18n %}
|
||||
{% load eventurl %}
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
@@ -22,7 +23,7 @@
|
||||
<div class="container event">
|
||||
<div class="page-header">
|
||||
<h1 class="pull-left">
|
||||
<a href="{% url "presale:event.index" event=event.slug organizer=event.organizer.slug %}">{{ event.name }}</a>
|
||||
<a href="{% eventurl event "presale:event.index" %}">{{ event.name }}</a>
|
||||
<small>{{ event.date_from|date:"DATE_FORMAT" }}{% if event.settings.show_date_to %} – {{ event.date_to|date:"DATE_FORMAT" }}{% endif %}</small>
|
||||
</h1>
|
||||
<div class="pull-right loginbox">
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
{% extends "pretixpresale/event/base.html" %}
|
||||
{% load i18n %}
|
||||
{% load bootstrap3 %}
|
||||
{% load eventurl %}
|
||||
{% block title %}{% trans "Confirm order" %}{% endblock %}
|
||||
{% block content %}
|
||||
<h2>{% trans "Confirm order" %}</h2>
|
||||
@@ -11,7 +12,7 @@
|
||||
<div class="panel-heading">
|
||||
<div class="pull-right">
|
||||
<a href="
|
||||
{% url "presale:event.index" organizer=request.event.organizer.slug event=request.event.slug %}">
|
||||
{% eventurl request.event "presale:event.index" %}">
|
||||
<span class="fa fa-edit"></span>
|
||||
{% trans "Modify" %}
|
||||
</a>
|
||||
@@ -41,7 +42,7 @@
|
||||
<div class="panel-heading">
|
||||
{% if payment_provider.identifier != "free" %}
|
||||
<div class="pull-right">
|
||||
<a href="{% url "presale:event.checkout" step="payment" organizer=request.event.organizer.slug event=request.event.slug %}">
|
||||
<a href="{% eventurl request.event "presale:event.checkout" step="payment" %}">
|
||||
<span class="fa fa-edit"></span>
|
||||
{% trans "Modify" %}
|
||||
</a>
|
||||
@@ -59,7 +60,7 @@
|
||||
<div class="panel panel-primary panel-contact">
|
||||
<div class="panel-heading">
|
||||
<div class="pull-right">
|
||||
<a href="{% url "presale:event.checkout" step="questions" organizer=request.event.organizer.slug event=request.event.slug %}">
|
||||
<a href="{% eventurl request.event "presale:event.checkout" step="questions" %}">
|
||||
<span class="fa fa-edit"></span>
|
||||
{% trans "Modify" %}
|
||||
</a>
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
{% load i18n %}
|
||||
{% load eventurl %}
|
||||
{% for line in cart.positions %}
|
||||
<div class="row-fluid cart-row">
|
||||
<div class="col-md-4 col-xs-6">
|
||||
@@ -21,7 +22,7 @@
|
||||
</div>
|
||||
<div class="col-md-2 col-xs-6 count">
|
||||
{% if editable %}
|
||||
<form action="{% url "presale:event.cart.remove" event=event.slug organizer=event.organizer.slug %}"
|
||||
<form action="{% eventurl event "presale:event.cart.remove" %}"
|
||||
method="post">
|
||||
{% csrf_token %}
|
||||
{% if line.variation %}
|
||||
@@ -36,7 +37,7 @@
|
||||
{% endif %}
|
||||
{{ line.count }}
|
||||
{% if editable %}
|
||||
<form action="{% url "presale:event.cart.add" event=event.slug organizer=event.organizer.slug %}"
|
||||
<form action="{% eventurl event "presale:event.cart.add" %}"
|
||||
method="post" data-asynctask>
|
||||
{% csrf_token %}
|
||||
{% if line.variation %}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
{% extends "pretixpresale/event/base.html" %}
|
||||
{% load i18n %}
|
||||
{% load eventurl %}
|
||||
{% load thumbnail %}
|
||||
{% block title %}{% trans "Presale" %}{% endblock %}
|
||||
|
||||
@@ -23,7 +24,7 @@
|
||||
</div>
|
||||
<div class="col-md-4 col-md-offset-2 col-xs-12">
|
||||
<a class="btn btn-block btn-primary btn-lg"
|
||||
href="{% url "presale:event.checkout.start" organizer=request.event.organizer.slug event=request.event.slug %}">
|
||||
href="{% eventurl request.event "presale:event.checkout.start" %}">
|
||||
<i class="fa fa-shopping-cart"></i> {% trans "Proceed with checkout" %}
|
||||
</a>
|
||||
</div>
|
||||
@@ -51,7 +52,7 @@
|
||||
{% endif %}
|
||||
{% if event.presale_is_running or event.settings.show_items_outside_presale_period %}
|
||||
<form method="post" data-asynctask
|
||||
action="{% url "presale:event.cart.add" organizer=request.event.organizer.slug event=request.event.slug %}?next={{ request.path|urlencode }}">
|
||||
action="{% eventurl request.event "presale:event.cart.add" %}?next={{ request.path|urlencode }}">
|
||||
{% csrf_token %}
|
||||
{% for tup in items_by_category %}
|
||||
<section>
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
{% extends "pretixpresale/event/base.html" %}
|
||||
{% load i18n %}
|
||||
{% load bootstrap3 %}
|
||||
{% load eventurl %}
|
||||
{% block title %}{% trans "Order details" %}{% endblock %}
|
||||
{% block content %}
|
||||
{% if "thanks" in request.GET or "paid" in request.GET %}
|
||||
@@ -32,7 +33,7 @@
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
{% if can_retry %}
|
||||
<a href="{% url "presale:event.order.pay" organizer=request.event.organizer.slug event=request.event.slug secret=order.secret order=order.code %}"
|
||||
<a href="{% eventurl event "presale:event.order.pay" secret=order.secret order=order.code %}"
|
||||
class="btn btn-primary pull-right"><i class="fa fa-money"></i> {% trans "Complete payment" %}
|
||||
</a>
|
||||
{% endif %}
|
||||
@@ -59,7 +60,7 @@
|
||||
{% endblocktrans %}
|
||||
</p>
|
||||
{% for b in download_buttons %}
|
||||
<a href="{% url "presale:event.order.download" organizer=request.event.organizer.slug event=request.event.slug secret=order.secret order=order.code output=b.identifier %}"
|
||||
<a href="{% eventurl event "presale:event.order.download" secret=order.secret order=order.code output=b.identifier %}"
|
||||
class="btn btn-primary">
|
||||
<span class="fa {{ b.icon }}"></span> {{ b.text }}
|
||||
</a>
|
||||
@@ -76,7 +77,7 @@
|
||||
<div class="panel-heading">
|
||||
{% if order.can_modify_answers %}
|
||||
<div class="pull-right">
|
||||
<a href="{% url "presale:event.order.modify" organizer=request.event.organizer.slug event=request.event.slug secret=order.secret order=order.code %}">
|
||||
<a href="{% eventurl event "presale:event.order.modify" secret=order.secret order=order.code %}">
|
||||
<span class="fa fa-edit"></span>
|
||||
{% trans "Change details" %}
|
||||
</a>
|
||||
@@ -94,7 +95,7 @@
|
||||
<div class="row">
|
||||
<div class="col-md-12 text-right">
|
||||
<p>
|
||||
<a href="{% url 'presale:event.order.cancel' event=request.event.slug organizer=request.event.organizer.slug secret=order.secret order=order.code %}"
|
||||
<a href="{% eventurl event 'presale:event.order.cancel' secret=order.secret order=order.code %}"
|
||||
class="btn btn-danger">
|
||||
<span class="fa fa-remove"></span>
|
||||
{% trans "Cancel order" %}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
{% extends "pretixpresale/event/base.html" %}
|
||||
{% load i18n %}
|
||||
{% load eventurl %}
|
||||
{% block title %}{% trans "Cancel order" %}{% endblock %}
|
||||
{% block content %}
|
||||
<h2>
|
||||
@@ -16,7 +17,7 @@
|
||||
<div class="row checkout-button-row">
|
||||
<div class="col-md-4">
|
||||
<a class="btn btn-block btn-default btn-lg"
|
||||
href="{% url "presale:event.order" event=request.event.slug organizer=request.event.organizer.slug secret=order.secret order=order.code %}">
|
||||
href="{% eventurl request.event "presale:event.order" secret=order.secret order=order.code %}">
|
||||
{% trans "No, take me back" %}
|
||||
</a>
|
||||
</div>
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
{% extends "pretixpresale/event/base.html" %}
|
||||
{% load i18n %}
|
||||
{% load eventurl %}
|
||||
{% block title %}{% trans "Pay order" %}{% endblock %}
|
||||
{% block content %}
|
||||
<h2>
|
||||
@@ -16,7 +17,7 @@
|
||||
<div class="row checkout-button-row">
|
||||
<div class="col-md-4">
|
||||
<a class="btn btn-block btn-default btn-lg"
|
||||
href="{% url "presale:event.order" event=request.event.slug organizer=request.event.organizer.slug secret=order.secret order=order.code %}">
|
||||
href="{% eventurl request.event "presale:event.order" secret=order.secret order=order.code %}">
|
||||
{% trans "Cancel" %}
|
||||
</a>
|
||||
</div>
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
{% extends "pretixpresale/event/base.html" %}
|
||||
{% load i18n %}
|
||||
{% load eventurl %}
|
||||
{% block title %}{% trans "Pay order" %}{% endblock %}
|
||||
{% block content %}
|
||||
<h2>
|
||||
@@ -27,7 +28,7 @@
|
||||
<div class="row checkout-button-row">
|
||||
<div class="col-md-4">
|
||||
<a class="btn btn-block btn-default btn-lg"
|
||||
href="{% url "presale:event.order" event=request.event.slug organizer=request.event.organizer.slug secret=order.secret order=order.code %}">
|
||||
href="{% eventurl request.event "presale:event.order" secret=order.secret order=order.code %}">
|
||||
{% trans "Cancel" %}
|
||||
</a>
|
||||
</div>
|
||||
|
||||
@@ -6,33 +6,36 @@ import pretix.presale.views.event
|
||||
import pretix.presale.views.locale
|
||||
import pretix.presale.views.order
|
||||
|
||||
urlpatterns = [
|
||||
url(r'^(?P<organizer>[^/]+)/(?P<event>[^/]+)/', include([
|
||||
url(r'^$', pretix.presale.views.event.EventIndex.as_view(), name='event.index'),
|
||||
url(r'^cart/add$', pretix.presale.views.cart.CartAdd.as_view(), name='event.cart.add'),
|
||||
url(r'^cart/remove$', pretix.presale.views.cart.CartRemove.as_view(), name='event.cart.remove'),
|
||||
url(r'^checkout/$', pretix.presale.views.checkout.CheckoutView.as_view(), name='event.checkout.start'),
|
||||
url(r'^checkout/(?P<step>[^/]+)/$', pretix.presale.views.checkout.CheckoutView.as_view(),
|
||||
name='event.checkout'),
|
||||
url(r'^order/(?P<order>[^/]+)/(?P<secret>[A-Za-z0-9]+)/$', pretix.presale.views.order.OrderDetails.as_view(),
|
||||
name='event.order'),
|
||||
url(r'^order/(?P<order>[^/]+)/(?P<secret>[A-Za-z0-9]+)/cancel$',
|
||||
pretix.presale.views.order.OrderCancel.as_view(),
|
||||
name='event.order.cancel'),
|
||||
url(r'^order/(?P<order>[^/]+)/(?P<secret>[A-Za-z0-9]+)/modify$',
|
||||
pretix.presale.views.order.OrderModify.as_view(),
|
||||
name='event.order.modify'),
|
||||
url(r'^order/(?P<order>[^/]+)/(?P<secret>[A-Za-z0-9]+)/pay$', pretix.presale.views.order.OrderPay.as_view(),
|
||||
name='event.order.pay'),
|
||||
url(r'^order/(?P<order>[^/]+)/(?P<secret>[A-Za-z0-9]+)/pay/confirm$',
|
||||
pretix.presale.views.order.OrderPayDo.as_view(),
|
||||
name='event.order.pay.confirm'),
|
||||
url(r'^order/(?P<order>[^/]+)/(?P<secret>[A-Za-z0-9]+)/pay/complete$',
|
||||
pretix.presale.views.order.OrderPayComplete.as_view(),
|
||||
name='event.order.pay.complete'),
|
||||
url(r'^order/(?P<order>[^/]+)/(?P<secret>[A-Za-z0-9]+)/download/(?P<output>[^/]+)$',
|
||||
pretix.presale.views.order.OrderDownload.as_view(),
|
||||
name='event.order.download'),
|
||||
])),
|
||||
url(r'^locale/set$', pretix.presale.views.locale.LocaleSet.as_view(), name='locale.set'),
|
||||
eventurls = [
|
||||
url(r'^cart/add$', pretix.presale.views.cart.CartAdd.as_view(), name='event.cart.add'),
|
||||
url(r'^cart/remove$', pretix.presale.views.cart.CartRemove.as_view(), name='event.cart.remove'),
|
||||
url(r'^checkout/start$', pretix.presale.views.checkout.CheckoutView.as_view(), name='event.checkout.start'),
|
||||
url(r'^checkout/(?P<step>[^/]+)/$', pretix.presale.views.checkout.CheckoutView.as_view(),
|
||||
name='event.checkout'),
|
||||
url(r'^order/(?P<order>[^/]+)/(?P<secret>[A-Za-z0-9]+)/$', pretix.presale.views.order.OrderDetails.as_view(),
|
||||
name='event.order'),
|
||||
url(r'^order/(?P<order>[^/]+)/(?P<secret>[A-Za-z0-9]+)/cancel$',
|
||||
pretix.presale.views.order.OrderCancel.as_view(),
|
||||
name='event.order.cancel'),
|
||||
url(r'^order/(?P<order>[^/]+)/(?P<secret>[A-Za-z0-9]+)/modify$',
|
||||
pretix.presale.views.order.OrderModify.as_view(),
|
||||
name='event.order.modify'),
|
||||
url(r'^order/(?P<order>[^/]+)/(?P<secret>[A-Za-z0-9]+)/pay$', pretix.presale.views.order.OrderPay.as_view(),
|
||||
name='event.order.pay'),
|
||||
url(r'^order/(?P<order>[^/]+)/(?P<secret>[A-Za-z0-9]+)/pay/confirm$',
|
||||
pretix.presale.views.order.OrderPayDo.as_view(),
|
||||
name='event.order.pay.confirm'),
|
||||
url(r'^order/(?P<order>[^/]+)/(?P<secret>[A-Za-z0-9]+)/pay/complete$',
|
||||
pretix.presale.views.order.OrderPayComplete.as_view(),
|
||||
name='event.order.pay.complete'),
|
||||
url(r'^order/(?P<order>[^/]+)/(?P<secret>[A-Za-z0-9]+)/download/(?P<output>[^/]+)$',
|
||||
pretix.presale.views.order.OrderDownload.as_view(),
|
||||
name='event.order.download'),
|
||||
url(r'^$', pretix.presale.views.event.EventIndex.as_view(), name='event.index'),
|
||||
]
|
||||
|
||||
urlpatterns = [
|
||||
url(r'^locale/set$', pretix.presale.views.locale.LocaleSet.as_view(), name='locale.set'),
|
||||
url(r'^(?P<event>[^/]+)/', include(eventurls)),
|
||||
url(r'^(?P<organizer>[^/]+)/(?P<event>[^/]+)/', include(eventurls)),
|
||||
]
|
||||
|
||||
@@ -2,12 +2,12 @@ from datetime import timedelta
|
||||
from itertools import groupby
|
||||
|
||||
from django.contrib.auth.views import redirect_to_login
|
||||
from django.core.urlresolvers import reverse
|
||||
from django.utils.functional import cached_property
|
||||
from django.utils.timezone import now
|
||||
|
||||
from pretix.base.models import CartPosition
|
||||
from pretix.base.signals import register_payment_providers
|
||||
from pretix.multidomain.urlreverse import eventreverse
|
||||
|
||||
|
||||
def login_required(view_func):
|
||||
@@ -15,12 +15,7 @@ def login_required(view_func):
|
||||
if request.user.is_authenticated():
|
||||
return view_func(request, *args, **kwargs)
|
||||
path = request.path
|
||||
return redirect_to_login(
|
||||
path, reverse('presale:event.checkout.login', kwargs={
|
||||
'organizer': request.event.organizer.slug,
|
||||
'event': request.event.slug,
|
||||
}), 'next'
|
||||
)
|
||||
return redirect_to_login(path, eventreverse(request.event, 'presale:event.checkout.login'), 'next')
|
||||
|
||||
return _wrapped_view
|
||||
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
from django.contrib import messages
|
||||
from django.core.urlresolvers import reverse
|
||||
from django.http import JsonResponse
|
||||
from django.shortcuts import redirect
|
||||
from django.utils.translation import ugettext as _
|
||||
@@ -8,6 +7,7 @@ from django.views.generic import View
|
||||
from pretix.base.services.cart import (
|
||||
CartError, add_items_to_cart, remove_items_from_cart,
|
||||
)
|
||||
from pretix.multidomain.urlreverse import eventreverse
|
||||
from pretix.presale.views import EventViewMixin
|
||||
from pretix.presale.views.async import AsyncAction
|
||||
|
||||
@@ -18,10 +18,7 @@ class CartActionMixin:
|
||||
if "next" in self.request.GET and '://' not in self.request.GET:
|
||||
return self.request.GET.get('next')
|
||||
else:
|
||||
return reverse('presale:event.index', kwargs={
|
||||
'event': self.request.event.slug,
|
||||
'organizer': self.request.event.organizer.slug,
|
||||
})
|
||||
return eventreverse(self.request.event, 'presale:event.index')
|
||||
|
||||
def get_success_url(self, value=None):
|
||||
return self.get_next_url()
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
from django.contrib import messages
|
||||
from django.core.urlresolvers import reverse
|
||||
from django.http import Http404
|
||||
from django.shortcuts import redirect
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
from django.views.generic import View
|
||||
|
||||
from pretix.multidomain.urlreverse import eventreverse
|
||||
from pretix.presale.checkoutflow import get_checkout_flow
|
||||
from pretix.presale.views import CartMixin
|
||||
|
||||
@@ -14,10 +14,7 @@ class CheckoutView(CartMixin, View):
|
||||
self.request = request
|
||||
if not self.positions and "async_id" not in request.GET:
|
||||
messages.error(request, _("Your cart is empty"))
|
||||
return redirect(reverse('presale:event.index', kwargs={
|
||||
'organizer': self.request.event.organizer.slug,
|
||||
'event': self.request.event.slug
|
||||
}))
|
||||
return redirect(eventreverse(self.request.event, 'presale:event.index'))
|
||||
|
||||
flow = get_checkout_flow(self.request.event)
|
||||
for step in flow:
|
||||
|
||||
@@ -14,6 +14,7 @@ from pretix.base.services.tickets import generate
|
||||
from pretix.base.signals import (
|
||||
register_payment_providers, register_ticket_outputs,
|
||||
)
|
||||
from pretix.multidomain.urlreverse import eventreverse
|
||||
from pretix.presale.views import CartMixin, EventViewMixin
|
||||
from pretix.presale.views.questions import QuestionsViewMixin
|
||||
|
||||
@@ -36,9 +37,7 @@ class OrderDetailMixin:
|
||||
return provider
|
||||
|
||||
def get_order_url(self):
|
||||
return reverse('presale:event.order', kwargs={
|
||||
'event': self.request.event.slug,
|
||||
'organizer': self.request.event.organizer.slug,
|
||||
return eventreverse(self.request.event, 'presale:event.order', kwargs={
|
||||
'order': self.order.code,
|
||||
'secret': self.order.secret
|
||||
})
|
||||
@@ -132,9 +131,7 @@ class OrderPay(EventViewMixin, OrderDetailMixin, TemplateView):
|
||||
return self.payment_provider.payment_form_render(self.request)
|
||||
|
||||
def get_confirm_url(self):
|
||||
return reverse('presale:event.order.pay.confirm', kwargs={
|
||||
'event': self.request.event.slug,
|
||||
'organizer': self.request.event.organizer.slug,
|
||||
return eventreverse(self.request.event, 'presale:event.order.pay.confirm', kwargs={
|
||||
'order': self.order.code,
|
||||
'secret': self.order.secret
|
||||
})
|
||||
@@ -169,9 +166,7 @@ class OrderPayDo(EventViewMixin, OrderDetailMixin, TemplateView):
|
||||
return ctx
|
||||
|
||||
def get_payment_url(self):
|
||||
return reverse('presale:event.order.pay', kwargs={
|
||||
'event': self.request.event.slug,
|
||||
'organizer': self.request.event.organizer.slug,
|
||||
return eventreverse(self.request.event, 'presale:event.order.pay', kwargs={
|
||||
'order': self.order.code,
|
||||
'secret': self.order.secret
|
||||
})
|
||||
@@ -194,9 +189,7 @@ class OrderPayComplete(EventViewMixin, OrderDetailMixin, View):
|
||||
return redirect(resp or self.get_order_url() + '?paid=yes')
|
||||
|
||||
def get_payment_url(self):
|
||||
return reverse('presale:event.order.pay', kwargs={
|
||||
'event': self.request.event.slug,
|
||||
'organizer': self.request.event.organizer.slug,
|
||||
return eventreverse(self.request.event, 'presale:event.order.pay', kwargs={
|
||||
'order': self.order.code,
|
||||
'secret': self.order.secret
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user