forked from CGM_Public/pretix_original
change to pages instead of tabs
This commit is contained in:
@@ -4,7 +4,7 @@
|
||||
{% if request.organizer.settings.customer_accounts %}
|
||||
<nav class="loginstatus" aria-label="{% trans "customer account" %}">
|
||||
{% if request.customer %}
|
||||
<a href="{% abseventurl request.organizer "presale:organizer.customer.profile" %}"
|
||||
<a href="{% abseventurl request.organizer "presale:organizer.customer.index" %}"
|
||||
aria-label="{% trans "View customer account" %}" data-placement="bottom"
|
||||
title="{% trans "View user profile" %}" data-toggle="tooltip">
|
||||
<span class="fa fa-user" aria-hidden="true"></span>
|
||||
|
||||
@@ -9,48 +9,63 @@
|
||||
<h2>
|
||||
{% trans "Your account" %}
|
||||
</h2>
|
||||
<div class="row">
|
||||
<dl>
|
||||
<div class="col-sm-6">
|
||||
<dt>{{ customer.name }}</dt>
|
||||
<dd>{{ customer.email }}</dd>
|
||||
{% if customer.phone %}
|
||||
<dd><spani class="fa fa-phone" aria-hidden="true"></span> {{ customer.phone }}</dd>
|
||||
{% endif %}
|
||||
<dd>
|
||||
<ul class="list-inline">
|
||||
<li><a href="{% eventurl request.organizer "presale:organizer.customer.change" %}">
|
||||
<span class="fa fa-edit" aria-hidden=true></span> {% trans "Change account information" %}</a></li>
|
||||
<li><a href="{% eventurl request.organizer "presale:organizer.customer.password" %}">
|
||||
<span class="fa fa-key" aria-hidden=true></span> {% trans "Change password" %}</a></li>
|
||||
</ul>
|
||||
</dd>
|
||||
<dd>
|
||||
</dd>
|
||||
</div>
|
||||
<div class="col-sm-6 text-right">
|
||||
<dt>{% trans "Customer ID" %}</dt>
|
||||
<dd>#{{ customer.identifier }}</dd>
|
||||
</div>
|
||||
</dl>
|
||||
</div>
|
||||
<div class="row">
|
||||
<dl>
|
||||
<div class="col-sm-6">
|
||||
<dt>{{ customer.name }}</dt>
|
||||
<dd>{{ customer.email }}</dd>
|
||||
{% if customer.phone %}
|
||||
<dd><spani class="fa fa-phone" aria-hidden="true"></span> {{ customer.phone }}</dd>
|
||||
{% endif %}
|
||||
<dd>
|
||||
<ul class="list-inline">
|
||||
<li><a href="{% eventurl request.organizer "presale:organizer.customer.change" %}">
|
||||
<span class="fa fa-edit" aria-hidden=true></span> {% trans "Change account information" %}</a></li>
|
||||
<li><a href="{% eventurl request.organizer "presale:organizer.customer.password" %}">
|
||||
<span class="fa fa-key" aria-hidden=true></span> {% trans "Change password" %}</a></li>
|
||||
</ul>
|
||||
</dd>
|
||||
<dd>
|
||||
</dd>
|
||||
</div>
|
||||
<div class="col-sm-6 text-right">
|
||||
<dt>{% trans "Customer ID" %}</dt>
|
||||
<dd>#{{ customer.identifier }}</dd>
|
||||
</div> </dl>
|
||||
<nav class="row" aria-label="{% trans "customer account information" %}">
|
||||
<ul class="list-inline blank-after col-xs-12">
|
||||
<li>
|
||||
<a href="{% eventurl request.organizer "presale:organizer.customer.index" %}">
|
||||
<span class="fa fa-shopping-cart" aria-hidden="true"></span>{% trans "Orders" %}
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="{% eventurl request.organizer "presale:organizer.customer.memberships" %}">
|
||||
<span class="fa fa-unlock-alt" aria-hidden="true"></span>{% trans "Memberships" %}
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="{% eventurl request.organizer "presale:organizer.customer.addresses" %}">
|
||||
<span class="fa fa-address-card-o" aria-hidden="true"></span>{% trans "Addresses" %}
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="{% eventurl request.organizer "presale:organizer.customer.profiles" %}">
|
||||
<span class="fa fa-users" aria-hidden="true"></span>{% trans "Attendee profiles" %}
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
<div>
|
||||
<ul class="nav nav-tabs" role="tablist">
|
||||
<li role="presentation" class="active">
|
||||
<a href="#orders" aria-controls="orders" role="tab" data-toggle="tab">{% trans "Orders" %} ({{ page_obj.paginator.count }})</a>
|
||||
</li>
|
||||
<li role="presentation">
|
||||
<a href="#memberships" aria-controls="memberships" role="tab" data-toggle="tab">{% trans "Memberships" %} ({{ memberships|length }})</a>
|
||||
</li>
|
||||
<li role="presentation">
|
||||
<a href="#addresses" aria-controls="addresses" role="tab" data-toggle="tab">{% trans "Addresses" %} ({{ invoice_addresses|length }})</a>
|
||||
</li>
|
||||
<li role="presentation">
|
||||
<a href="#profiles" aria-controls="profiles" role="tab" data-toggle="tab">{% trans "Attendee profiles" %} ({{ attendee_profiles|length }})</a>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="tab-content">
|
||||
<div role="tabpanel" class="tab-pane active" id="orders">
|
||||
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<h3 class="panel-title">
|
||||
<span class="fa fa-shopping-cart" aria-hidden="true"></span> <b>{% trans "Orders" %}</b> ({{ page_obj.paginator.count }})
|
||||
</h3>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
{% if orders %}
|
||||
<ol class="event-list list-unstyled">
|
||||
{% for o in orders %}
|
||||
@@ -112,7 +127,10 @@
|
||||
{% else %}
|
||||
<p class="text-center">{% trans "You don’t have any orders in your account yet." %}</p>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% include "pretixcontrol/pagination.html" %}
|
||||
|
||||
<div role="tabpanel" class="tab-pane" id="memberships">
|
||||
<table class="panel-body table table-hover">
|
||||
<caption class="sr-only">{% trans "Memberships" %}</caption>
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
<div class="row">
|
||||
<div class="col-md-4 col-sm-6">
|
||||
<a class="btn btn-block btn-default btn-lg"
|
||||
href="{% abseventurl request.organizer "presale:organizer.customer.profile" %}">
|
||||
href="{% abseventurl request.organizer "presale:organizer.customer.index" %}">
|
||||
{% trans "Go back" %}
|
||||
</a>
|
||||
</div>
|
||||
|
||||
@@ -210,10 +210,14 @@ organizer_patterns = [
|
||||
re_path(r'^account/password$', pretix.presale.views.customer.ChangePasswordView.as_view(), name='organizer.customer.password'),
|
||||
re_path(r'^account/change$', pretix.presale.views.customer.ChangeInformationView.as_view(), name='organizer.customer.change'),
|
||||
re_path(r'^account/confirmchange$', pretix.presale.views.customer.ConfirmChangeView.as_view(), name='organizer.customer.change.confirm'),
|
||||
re_path(r'^account/membership/(?P<id>\d+)/$', pretix.presale.views.customer.MembershipUsageView.as_view(), name='organizer.customer.membership'),
|
||||
re_path(r'^account/memberships$', pretix.presale.views.customer.MembershipView.as_view(), name='organizer.customer.memberships'),
|
||||
re_path(r'^account/memberships/(?P<id>\d+)/$', pretix.presale.views.customer.MembershipUsageView.as_view(), name='organizer.customer.membership'),
|
||||
re_path(r'^account/addresses$', pretix.presale.views.customer.AddressView.as_view(), name='organizer.customer.addresses'),
|
||||
re_path(r'^account/addresses/(?P<id>\d+)/delete$', pretix.presale.views.customer.AddressDeleteView.as_view(), name='organizer.customer.address.delete'),
|
||||
re_path(r'^account/profiles$', pretix.presale.views.customer.ProfileView.as_view(), name='organizer.customer.profiles'),
|
||||
re_path(r'^account/profiles/(?P<id>\d+)/delete$', pretix.presale.views.customer.ProfileDeleteView.as_view(), name='organizer.customer.profile.delete'),
|
||||
re_path(r'^account/$', pretix.presale.views.customer.ProfileView.as_view(), name='organizer.customer.profile'),
|
||||
re_path(r'^account/$', pretix.presale.views.customer.IndexView.as_view(), name='organizer.customer.index'),
|
||||
#re_path(r'^account/$', pretix.presale.views.customer.ProfileView.as_view(), name='organizer.customer.profile'),
|
||||
|
||||
re_path(r'^oauth2/v1/authorize$', pretix.presale.views.oidc_op.AuthorizeView.as_view(),
|
||||
name='organizer.oauth2.v1.authorize'),
|
||||
|
||||
@@ -134,7 +134,7 @@ class LoginView(RedirectBackMixin, FormView):
|
||||
url = self.get_redirect_url()
|
||||
|
||||
if not url:
|
||||
return eventreverse(self.request.organizer, 'presale:organizer.customer.profile', kwargs={})
|
||||
return eventreverse(self.request.organizer, 'presale:organizer.customer.index', kwargs={})
|
||||
|
||||
if self.request.GET.get("request_cross_domain_customer_auth") == "true":
|
||||
otpstore = SessionStore()
|
||||
@@ -350,7 +350,7 @@ class CustomerRequiredMixin:
|
||||
return super().dispatch(request, *args, **kwargs)
|
||||
|
||||
|
||||
class ProfileView(CustomerRequiredMixin, ListView):
|
||||
class IndexView(CustomerRequiredMixin, ListView):
|
||||
template_name = 'pretixpresale/organizers/customer_profile.html'
|
||||
context_object_name = 'orders'
|
||||
paginate_by = 20
|
||||
@@ -405,6 +405,12 @@ class ProfileView(CustomerRequiredMixin, ListView):
|
||||
return ctx
|
||||
|
||||
|
||||
class MembershipView(CustomerRequiredMixin, ListView):
|
||||
template_name = 'pretixpresale/organizers/customer_memberships.html'
|
||||
context_object_name = 'membership'
|
||||
paginate_by = 20
|
||||
|
||||
|
||||
class MembershipUsageView(CustomerRequiredMixin, ListView):
|
||||
template_name = 'pretixpresale/organizers/customer_membership.html'
|
||||
context_object_name = 'usages'
|
||||
@@ -429,6 +435,12 @@ class MembershipUsageView(CustomerRequiredMixin, ListView):
|
||||
return ctx
|
||||
|
||||
|
||||
class AddressView(CustomerRequiredMixin, ListView):
|
||||
template_name = 'pretixpresale/organizers/customer_addresses.html'
|
||||
context_object_name = 'address'
|
||||
paginate_by = 20
|
||||
|
||||
|
||||
class AddressDeleteView(CustomerRequiredMixin, CompatDeleteView):
|
||||
template_name = 'pretixpresale/organizers/customer_address_delete.html'
|
||||
context_object_name = 'address'
|
||||
@@ -437,7 +449,13 @@ class AddressDeleteView(CustomerRequiredMixin, CompatDeleteView):
|
||||
return get_object_or_404(InvoiceAddress.profiles, customer=self.request.customer, pk=self.kwargs.get('id'))
|
||||
|
||||
def get_success_url(self):
|
||||
return eventreverse(self.request.organizer, 'presale:organizer.customer.profile', kwargs={})
|
||||
return eventreverse(self.request.organizer, 'presale:organizer.customer.addresses', kwargs={})
|
||||
|
||||
|
||||
class ProfileView(CustomerRequiredMixin, ListView):
|
||||
template_name = 'pretixpresale/organizers/customer_profiles.html'
|
||||
context_object_name = 'profile'
|
||||
paginate_by = 20
|
||||
|
||||
|
||||
class ProfileDeleteView(CustomerRequiredMixin, CompatDeleteView):
|
||||
@@ -448,7 +466,7 @@ class ProfileDeleteView(CustomerRequiredMixin, CompatDeleteView):
|
||||
return get_object_or_404(self.request.customer.attendee_profiles, pk=self.kwargs.get('id'))
|
||||
|
||||
def get_success_url(self):
|
||||
return eventreverse(self.request.organizer, 'presale:organizer.customer.profile', kwargs={})
|
||||
return eventreverse(self.request.organizer, 'presale:organizer.customer.profiles', kwargs={})
|
||||
|
||||
|
||||
class ChangePasswordView(CustomerRequiredMixin, FormView):
|
||||
@@ -466,7 +484,7 @@ class ChangePasswordView(CustomerRequiredMixin, FormView):
|
||||
return super().dispatch(request, *args, **kwargs)
|
||||
|
||||
def get_success_url(self):
|
||||
return eventreverse(self.request.organizer, 'presale:organizer.customer.profile', kwargs={})
|
||||
return eventreverse(self.request.organizer, 'presale:organizer.customer.index', kwargs={})
|
||||
|
||||
@transaction.atomic()
|
||||
def form_valid(self, form):
|
||||
@@ -499,7 +517,7 @@ class ChangeInformationView(CustomerRequiredMixin, FormView):
|
||||
return super().dispatch(request, *args, **kwargs)
|
||||
|
||||
def get_success_url(self):
|
||||
return eventreverse(self.request.organizer, 'presale:organizer.customer.profile', kwargs={})
|
||||
return eventreverse(self.request.organizer, 'presale:organizer.customer.index', kwargs={})
|
||||
|
||||
def form_valid(self, form):
|
||||
if form.cleaned_data['email'] != self.initial_email and not self.request.customer.provider:
|
||||
@@ -582,7 +600,7 @@ class ConfirmChangeView(View):
|
||||
return HttpResponseRedirect(self.get_success_url())
|
||||
|
||||
def get_success_url(self):
|
||||
return eventreverse(self.request.organizer, 'presale:organizer.customer.profile', kwargs={})
|
||||
return eventreverse(self.request.organizer, 'presale:organizer.customer.index', kwargs={})
|
||||
|
||||
|
||||
class SSOLoginView(RedirectBackMixin, View):
|
||||
@@ -642,7 +660,7 @@ class SSOLoginView(RedirectBackMixin, View):
|
||||
url = self.get_redirect_url()
|
||||
|
||||
if not url:
|
||||
return eventreverse(self.request.organizer, 'presale:organizer.customer.profile', kwargs={})
|
||||
return eventreverse(self.request.organizer, 'presale:organizer.customer.index', kwargs={})
|
||||
return url
|
||||
|
||||
|
||||
@@ -865,7 +883,7 @@ class SSOLoginReturnView(RedirectBackMixin, View):
|
||||
url = self.get_redirect_url(redirect_to)
|
||||
|
||||
if not url:
|
||||
return eventreverse(self.request.organizer, 'presale:organizer.customer.profile', kwargs={})
|
||||
return eventreverse(self.request.organizer, 'presale:organizer.customer.index', kwargs={})
|
||||
else:
|
||||
if self.request.session.get(f'pretix_customerauth_{self.provider.pk}_cross_domain_requested'):
|
||||
otpstore = SessionStore()
|
||||
|
||||
Reference in New Issue
Block a user