List of orders

This commit is contained in:
Raphael Michel
2015-03-20 17:11:58 +01:00
parent 63a3054b92
commit dbc3dff905
6 changed files with 99 additions and 3 deletions

View File

@@ -238,13 +238,14 @@ class User(AbstractBaseUser, PermissionsMixin):
* Given name
* Family name
* User name
* E-mail address
"""
if self.givenname:
return self.givenname
elif self.familyname:
return self.familyname
else:
return self.username
return self.get_local_name()
def get_full_name(self) -> str:
"""
@@ -254,6 +255,7 @@ class User(AbstractBaseUser, PermissionsMixin):
* Given name
* Family name
* User name
* E-mail address
"""
if self.givenname and not self.familyname:
return self.givenname
@@ -265,7 +267,18 @@ class User(AbstractBaseUser, PermissionsMixin):
'given': self.givenname
}
else:
return self.get_local_name()
def get_local_name(self) -> str:
"""
Returns the username for local users and the e-mail address for global
users.
"""
if self.username:
return self.username
if self.email:
return self.email
return self.identifier
class Organizer(Versionable):

View File

@@ -75,7 +75,8 @@
</ul>
</li>
<li>
<a href="#">
<a href="{% url 'control:event.orders' organizer=request.event.organizer.slug event=request.event.slug %}"
{% if "event.orders" in url_name %}class="active"{% endif %}>
<i class="fa fa-shopping-cart fa-fw"></i>
{% trans "Orders" %}
</a>

View File

@@ -0,0 +1,13 @@
{% load i18n %}
{% load bootstrap3 %}
{% if order.status == "n" %}
<span class="label label-warning {{ class }}">{% trans "Payment pending" %}</span>
{% elif order.status == "p" %}
<span class="label label-success {{ class }}">{% trans "Paid" %}</span>
{% elif order.status == "e" %}
<span class="label label-danger {{ class }}">{% trans "Payment pending" %}</span>
{% elif order.status == "c" %}
<span class="label label-danger {{ class }}">{% trans "Cancelled" %}</span>
{% elif order.status == "r" %}
<span class="label label-danger {{ class }}">{% trans "Refunded" %}</span>
{% endif %}

View File

@@ -0,0 +1,53 @@
{% extends "pretixcontrol/event/base.html" %}
{% load i18n %}
{% block title %}{% trans "Orders" %}{% endblock %}
{% block content %}
<h1>{% trans "Orders" %}</h1>
<table class="table table-condensed table-hover">
<thead>
<tr>
<th>{% trans "Order code" %}</th>
<th>{% trans "User" %}</th>
<th>{% trans "Order total" %}</th>
<th>{% trans "Order date" %}</th>
<th>{% trans "Status" %}</th>
</tr>
</thead>
<tbody>
{% for o in orders %}
<tr>
<td><strong><a href="">{{ o.code }}</a></strong></td>
<td>{{ o.user.get_short_name }}</td>
<td>{{ o.total|floatformat:2 }} {{ request.event.currency }}</td>
<td>{{ o.datetime|date }}</td>
<td>{% include "pretixcontrol/orders/fragment_order_status.html" with order=o %}</td>
</tr>
{% endfor %}
</tbody>
</table>
{% if is_paginated %}
<nav class="text-center">
<ul class="pagination">
{% if page_obj.has_previous %}
<li>
<a href="?page={{ page_obj.previous_page_number }}">
<span>&laquo;</span>
</a>
</li>
{% endif %}
<li class="page-current"><a>
{% blocktrans trimmed with page=page_obj.number of=page_obj.paginator.num_pages %}
Page {{ page }} of {{ of }}
{% endblocktrans %}
</a></li>
{% if page_obj.has_next %}
<li>
<a href="?page={{ page_obj.next_page_number }}">
<span>&raquo;</span>
</a>
</li>
{% endif %}
</ul>
</nav>
{% endif %}
{% endblock %}

View File

@@ -1,7 +1,7 @@
from django.conf.urls import url, include
from pretix.control.views import main, event, item, auth
from pretix.control.views import main, event, item, auth, orders
urlpatterns = [
url(r'^logout$', auth.logout, name='auth.logout'),
@@ -46,5 +46,6 @@ urlpatterns = [
url(r'^quotas/(?P<quota>[0-9a-f-]+)/delete$', item.QuotaDelete.as_view(),
name='event.items.quotas.delete'),
url(r'^quotas/add$', item.QuotaCreate.as_view(), name='event.items.quotas.add'),
url(r'^orders/$', orders.OrderList.as_view(), name='event.orders'),
])),
]

View File

@@ -0,0 +1,15 @@
from django.views.generic import ListView
from pretix.base.models import Order
class OrderList(ListView):
model = Order
context_object_name = 'orders'
template_name = 'pretixcontrol/orders/index.html'
paginate_by = 30
def get_queryset(self):
return Order.objects.current.filter(
event=self.request.event
).select_related("user")