From 211e2dee6047d8981a7897391ae3d42ef251aec0 Mon Sep 17 00:00:00 2001
From: Julian Rother <julianr@fsmpi.rwth-aachen.de>
Date: Mon, 22 May 2017 02:11:15 +0200
Subject: [PATCH] Cleaned up course caching (?) mess in ical exporter

---
 icalexport.py | 18 +++++++-----------
 1 file changed, 7 insertions(+), 11 deletions(-)

diff --git a/icalexport.py b/icalexport.py
index 23ddb2e..95dc097 100644
--- a/icalexport.py
+++ b/icalexport.py
@@ -7,25 +7,18 @@ def export_lectures(lectures, name):
 	cal = icalendar.Calendar()
 	cal.add('prodid', '-//Video AG//rwth.video//')
 	cal.add('version', '1.0')
-
-	courses = {};
 	for l in lectures:
 		event = icalendar.Event()
-		if not l['course_id'] in courses:
-			courses[l['course_id']] = query('SELECT * from courses WHERE id = ?',l['course_id'])[0]
-		c = courses[l['course_id']]
-
-		event.add('summary', c['short']+' : '+l['title'])
+		event.add('summary', l['course']['short']+' : '+l['title'])
 		event.add('description', l['internal'])
 		event.add('uid', 'lecture_'+str(l['id'])+'@rwth.video')
 		event.add('comment', l['comment'])
 		event.add('dtstamp', datetime.utcnow())
-		event.add('categories', c['short'])
+		event.add('categories', l['course']['short'])
 		event.add('dtstart', l['time'])
 		event.add('location', l['place'])
 		event.add('dtend', l['time'] + timedelta(minutes=l['duration']))
 		cal.add_component(event)
-
 	H = Headers()
 	H.add_header("Content-Disposition", "inline", filename=name)
 	return Response(cal.to_ical(), mimetype="text/calendar", headers=H)
@@ -49,10 +42,13 @@ def calperm(func):
 @app.route('/internal/ical/all')
 @calperm
 def ical_all():
-	return export_lectures(query('''SELECT lectures.* FROM lectures JOIN courses ON courses.id = lectures.course_id
+	return export_lectures(query('''SELECT lectures.*, "course" AS sep, courses.*
+				FROM lectures JOIN courses ON courses.id = lectures.course_id
 				WHERE NOT norecording AND NOT external ORDER BY time DESC LIMIT 1000'''),'videoag_all.ics')
 
 @app.route('/internal/ical/course/<course>')
 @calperm
 def ical_course(course):
-	return export_lectures(query('SELECT lectures.* FROM lectures JOIN courses ON courses.id = lectures.course_id WHERE courses.handle = ? AND NOT norecording AND NOT external ORDER BY time DESC', course),'videoag_course_'+course+'.ics')
+	return export_lectures(query('''SELECT lectures.*, "course" AS sep, courses.*
+				FROM lectures JOIN courses ON courses.id = lectures.course_id
+				WHERE courses.handle = ? AND NOT norecording AND NOT external ORDER BY time DESC''', course),'videoag_course_'+course+'.ics')
-- 
GitLab