From 2f72fddd3d2701e353ccc8ed48dc47baf8d973f3 Mon Sep 17 00:00:00 2001 From: Raphael Michel Date: Wed, 9 Mar 2016 23:19:31 +0100 Subject: [PATCH] Added a basic attendee view --- .../pretixcontrol/attendees/index.html | 55 +++++++++++++++++++ .../templates/pretixcontrol/event/base.html | 6 ++ src/pretix/control/urls.py | 4 +- src/pretix/control/views/attendees.py | 29 ++++++++++ 4 files changed, 93 insertions(+), 1 deletion(-) create mode 100644 src/pretix/control/templates/pretixcontrol/attendees/index.html create mode 100644 src/pretix/control/views/attendees.py diff --git a/src/pretix/control/templates/pretixcontrol/attendees/index.html b/src/pretix/control/templates/pretixcontrol/attendees/index.html new file mode 100644 index 000000000..b23ccb771 --- /dev/null +++ b/src/pretix/control/templates/pretixcontrol/attendees/index.html @@ -0,0 +1,55 @@ +{% extends "pretixcontrol/event/base.html" %} +{% load i18n %} +{% block title %}{% trans "Attendees" %}{% endblock %} +{% block content %} +

{% trans "Attendees" %}

+

+

+ + + +
+

+
+ + + + + + + + + + + + {% for a in attendees %} + + + + + + + + {% endfor %} + +
{% trans "Order code" %}{% trans "Product" %}{% trans "Attendee name" %}{% trans "Order date" %}{% trans "Status" %}
{{ a.order.code }}{{ a.item.name }}{{ a.attendee_name|default:"" }}{{ a.order.datetime|date:"SHORT_DATETIME_FORMAT" }}{% include "pretixcontrol/orders/fragment_order_status.html" with order=a.order %}
+
+ {% include "pretixcontrol/pagination.html" %} +{% endblock %} diff --git a/src/pretix/control/templates/pretixcontrol/event/base.html b/src/pretix/control/templates/pretixcontrol/event/base.html index 2d7923be6..24ccf474a 100644 --- a/src/pretix/control/templates/pretixcontrol/event/base.html +++ b/src/pretix/control/templates/pretixcontrol/event/base.html @@ -123,6 +123,12 @@ +
  • + + + {% trans "Attendees" %} + +
  • {% endif %} {% if request.eventperm.can_change_vouchers %}
  • diff --git a/src/pretix/control/urls.py b/src/pretix/control/urls.py index 56c01510a..a6cd146ff 100644 --- a/src/pretix/control/urls.py +++ b/src/pretix/control/urls.py @@ -1,7 +1,8 @@ from django.conf.urls import include, url from pretix.control.views import ( - auth, dashboards, event, item, main, orders, organizer, user, vouchers, + auth, attendees, event, dashboards, item, main, orders, organizer, user, + vouchers, ) urlpatterns = [ @@ -73,5 +74,6 @@ urlpatterns = [ url(r'^orders/export/$', orders.ExportView.as_view(), name='event.orders.export'), url(r'^orders/go$', orders.OrderGo.as_view(), name='event.orders.go'), url(r'^orders/$', orders.OrderList.as_view(), name='event.orders'), + url(r'^attendees/$', attendees.AttendeeList.as_view(), name='event.attendees'), ])), ] diff --git a/src/pretix/control/views/attendees.py b/src/pretix/control/views/attendees.py new file mode 100644 index 000000000..faebcd329 --- /dev/null +++ b/src/pretix/control/views/attendees.py @@ -0,0 +1,29 @@ +from django.views.generic import ListView +from pretix.base.models import OrderPosition, Item +from pretix.control.permissions import EventPermissionRequiredMixin + + +class AttendeeList(EventPermissionRequiredMixin, ListView): + model = OrderPosition + context_object_name = 'attendees' + template_name = 'pretixcontrol/attendees/index.html' + paginate_by = 30 + permission = 'can_view_orders' + + def get_queryset(self): + qs = OrderPosition.objects.filter( + order__event=self.request.event, + item__admission=True + ).select_related('order') + if self.request.GET.get("status", "") != "": + s = self.request.GET.get("status", "") + qs = qs.filter(order__status=s) + if self.request.GET.get("item", "") != "": + i = self.request.GET.get("item", "") + qs = qs.filter(item_id__in=(i,)).distinct() + return qs + + def get_context_data(self, **kwargs): + ctx = super().get_context_data(**kwargs) + ctx['items'] = Item.objects.filter(event=self.request.event, admission=True) + return ctx