From b7cbf55db4f1efd99d95fb9fbf492e7a452fa1b6 Mon Sep 17 00:00:00 2001 From: Raphael Michel Date: Tue, 23 Jun 2015 19:17:09 +0200 Subject: [PATCH] Added filters to the list of orders --- src/locale/de/LC_MESSAGES/django.po | 65 ++++++++++++++----- .../orders/fragment_order_status.html | 6 +- .../templates/pretixcontrol/orders/index.html | 23 +++++++ src/pretix/control/urls.py | 1 + src/pretix/control/views/orders.py | 32 +++++++-- 5 files changed, 102 insertions(+), 25 deletions(-) diff --git a/src/locale/de/LC_MESSAGES/django.po b/src/locale/de/LC_MESSAGES/django.po index 00555045f..1f73ebb75 100644 --- a/src/locale/de/LC_MESSAGES/django.po +++ b/src/locale/de/LC_MESSAGES/django.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: 1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-06-23 08:09+0000\n" -"PO-Revision-Date: 2015-06-23 10:10+0100\n" +"POT-Creation-Date: 2015-06-23 17:16+0000\n" +"PO-Revision-Date: 2015-06-23 19:17+0100\n" "Last-Translator: Raphael Michel \n" "Language-Team: Raphael Michel \n" "Language: de\n" @@ -65,7 +65,7 @@ msgstr "Zeitzone" #: pretix/base/models.py:213 pretix/base/models.py:1509 #: pretix/base/models.py:1812 #: pretix/control/templates/pretixcontrol/event/permissions.html:13 -#: pretix/control/templates/pretixcontrol/orders/index.html:10 +#: pretix/control/templates/pretixcontrol/orders/index.html:33 #: pretix/control/views/event.py:273 tests/base/test_mail.py:71 msgid "User" msgstr "Benutzer" @@ -436,13 +436,14 @@ msgid "refunded" msgstr "erstattet" #: pretix/base/models.py:1495 -#: pretix/control/templates/pretixcontrol/orders/index.html:9 +#: pretix/control/templates/pretixcontrol/orders/index.html:10 +#: pretix/control/templates/pretixcontrol/orders/index.html:32 #: pretix/presale/templates/pretixpresale/event/orders.html:14 msgid "Order code" msgstr "Bestellnummer" #: pretix/base/models.py:1500 -#: pretix/control/templates/pretixcontrol/orders/index.html:13 +#: pretix/control/templates/pretixcontrol/orders/index.html:36 #: pretix/plugins/banktransfer/templates/pretixplugins/banktransfer/import_confirm.html:18 #: pretix/plugins/stripe/templates/pretixplugins/stripe/control.html:30 #: pretix/presale/templates/pretixpresale/event/orders.html:17 @@ -1017,6 +1018,7 @@ msgid "Categories" msgstr "Kategorien" #: pretix/control/templates/pretixcontrol/event/base.html:99 +#: pretix/control/templates/pretixcontrol/orders/index.html:18 msgid "All orders" msgstr "Alle Bestellungen" @@ -1548,36 +1550,53 @@ msgid "Yes, refund order" msgstr "Ja, Bestellung zurückerstatten" #: pretix/control/templates/pretixcontrol/orders/fragment_order_status.html:4 -#: pretix/control/templates/pretixcontrol/orders/fragment_order_status.html:8 -#: pretix/control/templates/pretixcontrol/orders/overview.html:11 -#: pretix/presale/templates/pretixpresale/event/fragment_order_status.html:4 -#: pretix/presale/templates/pretixpresale/event/fragment_order_status.html:8 -msgid "Payment pending" +#: pretix/control/templates/pretixcontrol/orders/index.html:20 +msgid "Pending" msgstr "Zahlung ausstehend" #: pretix/control/templates/pretixcontrol/orders/fragment_order_status.html:6 +#: pretix/control/templates/pretixcontrol/orders/index.html:19 #: pretix/control/templates/pretixcontrol/orders/overview.html:14 #: pretix/presale/templates/pretixpresale/event/fragment_order_status.html:6 msgid "Paid" msgstr "bezahlt" +#: pretix/control/templates/pretixcontrol/orders/fragment_order_status.html:8 +#: pretix/control/templates/pretixcontrol/orders/index.html:21 +msgid "Pending (expired)" +msgstr "Zahlung ausstehend (abgelaufen)" + #: pretix/control/templates/pretixcontrol/orders/fragment_order_status.html:10 +#: pretix/control/templates/pretixcontrol/orders/index.html:22 #: pretix/control/templates/pretixcontrol/orders/overview.html:12 #: pretix/presale/templates/pretixpresale/event/fragment_order_status.html:10 msgid "Cancelled" msgstr "storniert" #: pretix/control/templates/pretixcontrol/orders/fragment_order_status.html:12 +#: pretix/control/templates/pretixcontrol/orders/index.html:23 #: pretix/control/templates/pretixcontrol/orders/overview.html:13 #: pretix/presale/templates/pretixpresale/event/fragment_order_status.html:12 msgid "Refunded" msgstr "erstattet" -#: pretix/control/templates/pretixcontrol/orders/index.html:11 +#: pretix/control/templates/pretixcontrol/orders/index.html:12 +msgid "Go!" +msgstr "Los!" + +#: pretix/control/templates/pretixcontrol/orders/index.html:25 +msgid "Search user" +msgstr "Benutzer suchen" + +#: pretix/control/templates/pretixcontrol/orders/index.html:26 +msgid "Filter" +msgstr "Filter" + +#: pretix/control/templates/pretixcontrol/orders/index.html:34 msgid "Order total" msgstr "Gesamtbetrag" -#: pretix/control/templates/pretixcontrol/orders/index.html:12 +#: pretix/control/templates/pretixcontrol/orders/index.html:35 msgid "Order date" msgstr "Bestelldatum" @@ -1590,6 +1609,12 @@ msgstr "Bestellübersicht" msgid "Total orders" msgstr "Bestellungen gesamt" +#: pretix/control/templates/pretixcontrol/orders/overview.html:11 +#: pretix/presale/templates/pretixpresale/event/fragment_order_status.html:4 +#: pretix/presale/templates/pretixpresale/event/fragment_order_status.html:8 +msgid "Payment pending" +msgstr "Zahlung ausstehend" + #: pretix/control/templates/pretixcontrol/organizers/create.html:4 #: pretix/control/templates/pretixcontrol/organizers/create.html:6 #: pretix/control/templates/pretixcontrol/organizers/index.html:10 @@ -1708,30 +1733,34 @@ msgstr "Das ausgewählte Produkt existiert nicht." msgid "The new event has been created." msgstr "Eine neue Veranstaltung wurde erstellt." -#: pretix/control/views/orders.py:115 +#: pretix/control/views/orders.py:125 msgid "The order has been marked as paid." msgstr "Die Bestellung wurde als bezahlt markiert." -#: pretix/control/views/orders.py:120 +#: pretix/control/views/orders.py:130 msgid "The order has been cancelled." msgstr "Die Bestellung wurde storniert." -#: pretix/control/views/orders.py:126 +#: pretix/control/views/orders.py:136 msgid "The order has been marked as not paid." msgstr "Die Bestellung wurde als unbezahlt markiert." -#: pretix/control/views/orders.py:156 pretix/control/views/orders.py:182 +#: pretix/control/views/orders.py:166 pretix/control/views/orders.py:192 msgid "This action is only allowed for pending orders." msgstr "Diese Aktion ist nur für unbezahlte Bestellungen möglich." -#: pretix/control/views/orders.py:167 +#: pretix/control/views/orders.py:177 msgid "The payment term has been changed." msgstr "Die Zahlungsfrist wurde geändert." -#: pretix/control/views/orders.py:261 +#: pretix/control/views/orders.py:271 msgid "Uncategorized" msgstr "Unkategorisiert" +#: pretix/control/views/orders.py:311 +msgid "There is no order with the given order code." +msgstr "Es existiert keine Bestellung mit der eingegebenen Bestellnummer." + #: pretix/control/views/organizer.py:59 msgid "The new organizer has been created." msgstr "Ein neuer Veranstalter wurde erstellt." diff --git a/src/pretix/control/templates/pretixcontrol/orders/fragment_order_status.html b/src/pretix/control/templates/pretixcontrol/orders/fragment_order_status.html index 02c53427d..a312973cb 100644 --- a/src/pretix/control/templates/pretixcontrol/orders/fragment_order_status.html +++ b/src/pretix/control/templates/pretixcontrol/orders/fragment_order_status.html @@ -1,11 +1,11 @@ {% load i18n %} {% load bootstrap3 %} {% if order.status == "n" %} - {% trans "Payment pending" %} + {% trans "Pending" %} {% elif order.status == "p" %} {% trans "Paid" %} -{% elif order.status == "e" %} - {% trans "Payment pending" %} +{% elif order.status == "e" %} {# expired #} + {% trans "Pending (expired)" %} {% elif order.status == "c" %} {% trans "Cancelled" %} {% elif order.status == "r" %} diff --git a/src/pretix/control/templates/pretixcontrol/orders/index.html b/src/pretix/control/templates/pretixcontrol/orders/index.html index d850a76a6..dbf25eebf 100644 --- a/src/pretix/control/templates/pretixcontrol/orders/index.html +++ b/src/pretix/control/templates/pretixcontrol/orders/index.html @@ -3,6 +3,29 @@ {% block title %}{% trans "Orders" %}{% endblock %} {% block content %}

{% trans "Orders" %}

+

+

+
+ + + + +
+
+
+ + + +
+

diff --git a/src/pretix/control/urls.py b/src/pretix/control/urls.py index 859b0fa96..c80f2ada1 100644 --- a/src/pretix/control/urls.py +++ b/src/pretix/control/urls.py @@ -63,6 +63,7 @@ urlpatterns = [ name='event.order.extend'), url(r'^orders/(?P[0-9A-Z]+)/$', orders.OrderDetail.as_view(), name='event.order'), url(r'^orders/overview/$', orders.OverView.as_view(), name='event.orders.overview'), + url(r'^orders/go$', orders.OrderGo.as_view(), name='event.orders.go'), 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 index cdd5b430f..adc06de02 100644 --- a/src/pretix/control/views/orders.py +++ b/src/pretix/control/views/orders.py @@ -1,13 +1,13 @@ from itertools import groupby from django.contrib import messages -from django.db.models import Count +from django.db.models import Count, Q from django.utils.timezone import now from django.utils.translation import ugettext_lazy as _ from django.http import HttpResponse from django.shortcuts import redirect, render from django.utils.functional import cached_property -from django.views.generic import ListView, DetailView, TemplateView +from django.views.generic import ListView, DetailView, TemplateView, View from pretix.base.models import Order, Quota, OrderPosition, ItemCategory from pretix.base.services.orders import mark_order_paid from pretix.base.signals import register_payment_providers @@ -23,9 +23,19 @@ class OrderList(EventPermissionRequiredMixin, ListView): permission = 'can_view_orders' def get_queryset(self): - return Order.objects.current.filter( + qs = Order.objects.current.filter( event=self.request.event - ).select_related("user") + ) + if self.request.GET.get("user", "") != "": + u = self.request.GET.get("user", "") + qs = qs.filter( + Q(user__identifier__icontains=u) | Q(user__email__icontains=u) + | Q(user__givenname__icontains=u) | Q(user__familyname__icontains=u) + ) + if self.request.GET.get("status", "") != "": + s = self.request.GET.get("status", "") + qs = qs.filter(status=s) + return qs.select_related("user") class OrderView(EventPermissionRequiredMixin, DetailView): @@ -286,3 +296,17 @@ class OverView(EventPermissionRequiredMixin, TemplateView): } return ctx + + +class OrderGo(EventPermissionRequiredMixin, View): + permission = 'can_view_orders' + + def get(self, request, *args, **kwargs): + code = request.GET.get("code") + try: + order = Order.objects.current.get(code=code, event=request.event) + return redirect('control:event.order', event=request.event.slug, organizer=request.event.organizer.slug, + code=order.code) + except Order.DoesNotExist: + messages.error(request, _('There is no order with the given order code.')) + return redirect('control:event.orders', event=request.event.slug, organizer=request.event.organizer.slug)