From 561103825b803dfd7fca32a53f37eb8177e6a880 Mon Sep 17 00:00:00 2001
From: Magnus Hagander
Date: Sun, 18 Nov 2018 19:29:38 +0100
Subject: [PATCH] Add list of all previously attended events for user
Link this to the account homepage. Also consistently talk about events
on these pages, and fix a spelling error.
---
postgresqleu/urls.py | 1 +
postgresqleu/views.py | 15 +++++++++++++++
template/account/index.html | 9 +++++++--
template/events/attendee.html | 33 +++++++++++++++++++++++++++++++++
template/nav_account.html | 4 +++-
5 files changed, 59 insertions(+), 3 deletions(-)
create mode 100644 template/events/attendee.html
diff --git a/postgresqleu/urls.py b/postgresqleu/urls.py
index c2ece47..28143c8 100644
--- a/postgresqleu/urls.py
+++ b/postgresqleu/urls.py
@@ -40,6 +40,7 @@ urlpatterns = [
url(r'^events/past/$', postgresqleu.views.pastevents),
url(r'^(events/services)/$', postgresqleu.static.views.static_fallback),
url(r'^events/series/[^/]+-(\d+)/$', postgresqleu.views.eventseries),
+ url(r'^events/attendee/$', postgresqleu.views.attendee_events),
url(r'^news/archive/$', postgresqleu.newsevents.views.newsarchive),
url(r'news/[^/]+-(\d+)/$', postgresqleu.newsevents.views.newsitem),
diff --git a/postgresqleu/views.py b/postgresqleu/views.py
index 6fab407..bb542dc 100644
--- a/postgresqleu/views.py
+++ b/postgresqleu/views.py
@@ -1,6 +1,7 @@
# Index has a very special view that lives out here
from django.shortcuts import render, get_object_or_404
from django.template.defaultfilters import slugify
+from django.contrib.auth.decorators import login_required
from postgresqleu.newsevents.models import News
from postgresqleu.confreg.models import Conference, ConferenceSeries
@@ -91,6 +92,20 @@ def eventseries(request, id):
'past': [e for e in events if e.enddate < datetime.datetime.today().date()],
})
+# Handle a users list of previous events
+@login_required
+def attendee_events(request):
+ events = list(Conference.objects.filter(promoactive=True, enddate__gte=datetime.datetime.today()).order_by('startdate'))
+ series = ConferenceSeries.objects.filter(visible=True).extra(
+ where=["EXISTS (SELECT 1 FROM confreg_conference c WHERE c.series_id=confreg_conferenceseries.id AND c.promoactive)"]
+ )
+ attended = Conference.objects.only('urlname', 'conferencename', 'location').filter(conferenceregistration__attendee=request.user, conferenceregistration__payconfirmedat__isnull=False).distinct().order_by('-startdate')
+ return render(request, 'events/attendee.html', {
+ 'attended': attended,
+ 'events': events,
+ 'series': series,
+ })
+
# Handle CSRF failures
def csrf_failure(request, reason=''):
resp = render(request, 'csrf_failure.html', {
diff --git a/template/account/index.html b/template/account/index.html
index a98a84d..77b94c4 100644
--- a/template/account/index.html
+++ b/template/account/index.html
@@ -29,10 +29,15 @@
{%endif%}
-Speaker profile
+Events
+
+ You can view all previous events you
+ have attended or presented at.
+
+Speaker profile
Your shared PostgreSQL Europe speaker profile
- is used for all conferenced which are organized by PostgreSQL Europe.
+ is used for all events which are organized by PostgreSQL Europe.
{%endblock%}
diff --git a/template/events/attendee.html b/template/events/attendee.html
new file mode 100644
index 0000000..047d4dd
--- /dev/null
+++ b/template/events/attendee.html
@@ -0,0 +1,33 @@
+{%extends "nav_events.html"%}
+{%load markup%}
+{%block title%}Past events{%endblock%}
+{%block fullcontent%}
+
+
Past events
+
+You have attended the following events:
+
+
+
+{%for event in attended%}
+-
+ {{event.conferencedatestr}}
+ {{event.location}}
+
+{%endfor%}
+
+
+
+
+
+
Upcoming events
+{%include "events/compacteventlist.inc"%}
+
Our Event series
+
+
+
+{%endblock%}
diff --git a/template/nav_account.html b/template/nav_account.html
index 4d4b963..562b419 100644
--- a/template/nav_account.html
+++ b/template/nav_account.html
@@ -11,7 +11,9 @@
Meetings
{%endif%}
-Speaker
+Events
{%endblock%}
--
2.39.5