diff --git a/server.py b/server.py index fe6bae47bb582d8cb95cfa4f57f7be0e6331025b..7e85c5a8b6816b6f4550ef74b48abb8783c045b8 100755 --- a/server.py +++ b/server.py @@ -143,13 +143,20 @@ def courses(): @app.route('/course/<handle>') @app.route('/course/<int:id>') -@handle_errors('course', 'Diese Veranstaltung existiert nicht!', 404, IndexError) +@handle_errors('courses', 'Diese Veranstaltung existiert nicht!', 404, IndexError) def course(id=None, handle=None): if id: - courses = query('SELECT * FROM courses WHERE id = ? AND (? OR visible)', id, ismod())[0] + course = query('SELECT * FROM courses WHERE id = ? AND (? OR visible)', id, ismod())[0] else: - courses = query('SELECT * FROM courses WHERE handle = ? AND (? OR visible)', handle, ismod())[0] - lectures = query('SELECT * FROM lectures WHERE course_id = ? AND (? OR visible)', courses['id'], ismod()) + course = query('SELECT * FROM courses WHERE handle = ? AND (? OR visible)', handle, ismod())[0] + course['auth'] = query('SELECT * FROM auth WHERE course_id = ?', course['id']) + auths = query('SELECT auth.* FROM auth JOIN lectures ON (auth.lecture_id = lectures.id) WHERE lectures.course_id = ?', course['id']) + lectures = query('SELECT * FROM lectures WHERE course_id = ? AND (? OR visible)', course['id'], ismod()) + for lecture in lectures: + lecture['auth'] = [] + for auth in auths: + if auth['lecture_id'] == lecture['id']: + lecture['auth'].append(auth) videos = query(''' SELECT videos.*, (videos.downloadable AND courses.downloadable) as downloadable, formats.description AS format_description FROM videos @@ -158,8 +165,8 @@ def course(id=None, handle=None): JOIN courses ON (lectures.course_id = courses.id) WHERE lectures.course_id= ? AND (? OR videos.visible) ORDER BY lectures.time, formats.prio DESC - ''', courses['id'], ismod()) - return render_template('course.html', course=courses, lectures=lectures, videos=videos) + ''', course['id'], ismod()) + return render_template('course.html', course=course, lectures=lectures, videos=videos) @app.route('/faq') @register_navbar('FAQ', icon='question-sign')