diff --git a/src/pretix/base/models.py b/src/pretix/base/models.py index 150bff0e60..fc9c81e7f0 100644 --- a/src/pretix/base/models.py +++ b/src/pretix/base/models.py @@ -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): diff --git a/src/pretix/control/templates/pretixcontrol/event/base.html b/src/pretix/control/templates/pretixcontrol/event/base.html index 28e223d3a0..c4efdee71d 100644 --- a/src/pretix/control/templates/pretixcontrol/event/base.html +++ b/src/pretix/control/templates/pretixcontrol/event/base.html @@ -75,7 +75,8 @@
  • - + {% trans "Orders" %} diff --git a/src/pretix/control/templates/pretixcontrol/orders/fragment_order_status.html b/src/pretix/control/templates/pretixcontrol/orders/fragment_order_status.html new file mode 100644 index 0000000000..02c53427dd --- /dev/null +++ b/src/pretix/control/templates/pretixcontrol/orders/fragment_order_status.html @@ -0,0 +1,13 @@ +{% load i18n %} +{% load bootstrap3 %} +{% if order.status == "n" %} + {% trans "Payment pending" %} +{% elif order.status == "p" %} + {% trans "Paid" %} +{% elif order.status == "e" %} + {% trans "Payment pending" %} +{% elif order.status == "c" %} + {% trans "Cancelled" %} +{% elif order.status == "r" %} + {% trans "Refunded" %} +{% endif %} diff --git a/src/pretix/control/templates/pretixcontrol/orders/index.html b/src/pretix/control/templates/pretixcontrol/orders/index.html new file mode 100644 index 0000000000..121faaf5d4 --- /dev/null +++ b/src/pretix/control/templates/pretixcontrol/orders/index.html @@ -0,0 +1,53 @@ +{% extends "pretixcontrol/event/base.html" %} +{% load i18n %} +{% block title %}{% trans "Orders" %}{% endblock %} +{% block content %} +

    {% trans "Orders" %}

    + + + + + + + + + + + + {% for o in orders %} + + + + + + + + {% endfor %} + +
    {% trans "Order code" %}{% trans "User" %}{% trans "Order total" %}{% trans "Order date" %}{% trans "Status" %}
    {{ o.code }}{{ o.user.get_short_name }}{{ o.total|floatformat:2 }} {{ request.event.currency }}{{ o.datetime|date }}{% include "pretixcontrol/orders/fragment_order_status.html" with order=o %}
    + {% if is_paginated %} + + {% endif %} +{% endblock %} diff --git a/src/pretix/control/urls.py b/src/pretix/control/urls.py index 298c9a7a9f..20ac8c5cde 100644 --- a/src/pretix/control/urls.py +++ b/src/pretix/control/urls.py @@ -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[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'), ])), ] diff --git a/src/pretix/control/views/orders.py b/src/pretix/control/views/orders.py new file mode 100644 index 0000000000..dca64a2555 --- /dev/null +++ b/src/pretix/control/views/orders.py @@ -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")