diff --git a/server.py b/server.py index 49c31f552ce017b9912b63ae15e9942f5c0ded3d..b6a695aff38ea657d10ee989abc29af75726a9d7 100755 --- a/server.py +++ b/server.py @@ -66,7 +66,7 @@ def index(): @app.route('/course') @register_navbar('Videos', icon='film') -def videos(): +def course(): courses = query('SELECT * FROM courses WHERE (? OR (visible AND listed))', ismod()) for course in courses: if course['semester'] == '': @@ -76,6 +76,24 @@ def videos(): groupedby = 'semester' return render_template('course.html', courses=courses, groupedby=groupedby) +@app.route('/course/<id>') +def course_id(id): + courses = query('SELECT * FROM courses WHERE ((handle = ?) or id = ?) AND (? OR visible)', id, id, ismod()) + if not courses: + flash('Diese Veranstaltung existiert nicht!') + return app.view_functions['videos'](), 404 + lectures = query('SELECT * FROM lectures WHERE course_id = ? AND (? OR visible)', courses[0]['id'], ismod()) + videos = query(''' + SELECT videos.*, (videos.downloadable AND courses.downloadable) as downloadable, formats.description AS format_description + FROM videos + JOIN lectures ON (videos.lecture_id = lectures.id) + JOIN formats ON (videos.video_format = formats.id) + JOIN courses ON (lectures.course_id = courses.id) + WHERE lectures.course_id= ? AND (? OR videos.visible) + ORDER BY lectures.time, formats.prio DESC + ''', courses[0]['id'], ismod()) + return render_template('course_id.html', course=courses[0], lectures=lectures, videos=videos) + @app.route('/faq') @register_navbar('FAQ', icon='question-sign') def faq(): @@ -109,24 +127,6 @@ def search(): 'WHERE (? OR (coursevisible AND listed AND visible)) GROUP BY id ORDER BY _score DESC, time DESC LIMIT 30', ismod()) return render_template('search.html', searchtext=request.args['q'], courses=courses, lectures=lectures) -@app.route('/course/<id>') -def course(id): - courses = query('SELECT * FROM courses WHERE ((handle = ?) or id = ?) AND (? OR visible)', id, id, ismod()) - if not courses: - flash('Diese Veranstaltung existiert nicht!') - return app.view_functions['videos'](), 404 - lectures = query('SELECT * FROM lectures WHERE course_id = ? AND (? OR visible)', courses[0]['id'], ismod()) - videos = query(''' - SELECT videos.*, (videos.downloadable AND courses.downloadable) as downloadable, formats.description AS format_description - FROM videos - JOIN lectures ON (videos.lecture_id = lectures.id) - JOIN formats ON (videos.video_format = formats.id) - JOIN courses ON (lectures.course_id = courses.id) - WHERE lectures.course_id= ? AND (? OR videos.visible) - ORDER BY lectures.time, formats.prio DESC - ''', courses[0]['id'], ismod()) - return render_template('course_id.html', course=courses[0], lectures=lectures, videos=videos) - @app.route('/login', methods=['GET', 'POST']) def login(): if request.method == 'GET': @@ -243,3 +243,9 @@ def schedule(): times.append(time(int(t/60),t%60)) return render_template('schedule.html',days=days,times=times) + +@app.route('/stats') +@register_navbar('Statistiken', 'stats') +@mod_required +def stats(): + return render_template('stats.html') diff --git a/templates/stats.html b/templates/stats.html new file mode 100644 index 0000000000000000000000000000000000000000..5a4da1bdd81d0b454c735d781ddf9bac970719a1 --- /dev/null +++ b/templates/stats.html @@ -0,0 +1,13 @@ +{% from 'macros.html' import preview %} +{% extends "base.html" %} +{% block content %} +<div class="panel-group"> + <div class="panel panel-default"> + <div class="panel-heading"> + <h1 class="panel-title">Statistiken</h1> + </div> + <div class="panel-body"> + </div> + </div> +</div> +{% endblock %}