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" %}
+
+
+
+
+
+
+
+ | {% trans "Order code" %} |
+ {% trans "Product" %} |
+ {% trans "Attendee name" %} |
+ {% trans "Order date" %} |
+ {% trans "Status" %} |
+
+
+
+ {% for a in attendees %}
+
+ | {{ 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 %} |
+
+ {% endfor %}
+
+
+
+ {% 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