From 594a9213bb5acd28b15d39648faa2ebcde5e6449 Mon Sep 17 00:00:00 2001
From: Andreas Valder <andreasv@fsmpi.rwth-aachen.de>
Date: Tue, 6 Sep 2016 23:49:44 +0200
Subject: [PATCH] added upcomming lectures

---
 server.py              | 33 +++++++++++++++++++++++----------
 templates/course.html  | 19 +++++++++++++------
 templates/courses.html |  4 ++--
 templates/index.html   | 20 ++++++++++++++++++++
 4 files changed, 58 insertions(+), 18 deletions(-)

diff --git a/server.py b/server.py
index 7e85c5a..5a579c0 100755
--- a/server.py
+++ b/server.py
@@ -111,6 +111,10 @@ def human_semester(s, long=False):
 def human_date(d):
 	return d.strftime('%d.%m.%Y')
 
+@app.template_filter(name='time')
+def human_date(d):
+	return d.strftime('%H:%M')
+
 @app.template_filter()
 def rfc3339(d):
 	return d.strftime('%Y-%m-%dT%H:%M:%S+02:00')
@@ -118,16 +122,25 @@ def rfc3339(d):
 @app.route('/')
 @register_navbar('Home', icon='home')
 def index():
-	return render_template('index.html', latestvideos=query('''
-				SELECT lectures.*, max(videos.time_updated) AS lastvidtime, courses.short, courses.downloadable, courses.title AS coursetitle
-				FROM lectures
-				LEFT JOIN videos ON (videos.lecture_id = lectures.id)
-				LEFT JOIN courses on (courses.id = lectures.course_id)
-				WHERE (? OR (courses.visible AND courses.listed AND lectures.visible AND videos.visible))
-				GROUP BY videos.lecture_id
-				ORDER BY lastvidtime DESC
-				LIMIT 6
-			''', ismod()))
+	upcomming = query ('''
+		SELECT lectures.*,courses.short, courses.title AS course_title
+		FROM lectures
+		JOIN courses ON (lectures.course_id = courses.id)
+		WHERE (time > ?)
+		ORDER BY time ASC LIMIT 7''',datetime.today())
+	for i in upcomming:
+		i['date'] = i['time'].date()
+		i['time'] = i['time'].time()
+	latestvideos=query('''
+		SELECT lectures.*, max(videos.time_updated) AS lastvidtime, courses.short, courses.downloadable, courses.title AS coursetitle
+		FROM lectures
+		LEFT JOIN videos ON (videos.lecture_id = lectures.id)
+		LEFT JOIN courses on (courses.id = lectures.course_id)
+		WHERE (? OR (courses.visible AND courses.listed AND lectures.visible AND videos.visible))
+		GROUP BY videos.lecture_id
+		ORDER BY lastvidtime DESC
+		LIMIT 6	''',ismod())
+	return render_template('index.html', latestvideos=latestvideos, upcomming=upcomming)
 
 @app.route('/course')
 @register_navbar('Videos', icon='film')
diff --git a/templates/course.html b/templates/course.html
index 6417296..1bcfc6e 100644
--- a/templates/course.html
+++ b/templates/course.html
@@ -1,32 +1,39 @@
 {% from 'macros.html' import lecture_list_item %}
 {% from 'macros.html' import valueeditor %}
+{% from 'macros.html' import valuedeletebtn %}
 {% from 'macros.html' import valuecheckbox %}
 {% from 'macros.html' import preview %}
 {% extends "base.html" %}
 {% block content %}
 <div class="panel panel-default">
 	<div class="panel-heading">
-		<h1 class="panel-title">{{ valueeditor(['courses',course.id,'title'], course.title)}}</h1>
+		<h1 class="panel-title">{{ valueeditor(['courses',course.id,'title'], course.title)}}<span class="pull-right">{{ valuedeletebtn(['courses',course.id,'deleted']) }}</span></h1>
 	</div>
 	<div class="row panel-body">
-		<div class="col-xs-12">
-			<table class="table-condensed">
+		<div class="col-xs-12" class="table-condensed">
+			<table>
 				<tbody>
 					<tr><td>Semester:</td><td>{{ valueeditor(['courses',course.id,'semester'], course.semester) }}</td></tr>
 					<tr><td>Veranstalter:</td><td>{{ valueeditor(['courses',course.id,'organizer'], course.organizer) }}</td></tr>
 					<tr><td>Bemerkungen:</td><td>{{ valueeditor(['courses',course.id,'description'], course.description) }}</td></tr>
-					{% if ismod() %}
+				</tbody>
+			</table>
+		</div>
+		{% if ismod() %}
+		<div class="col-xs-12" style="margin-top: 20px">
+			<table class="table-condensed">
+				<tbody>
 					<tr><td>Sichtbar:</td><td>{{ valuecheckbox(['courses',course.id,'visible'], course.visible) }}</td></tr>
 					<tr><td>Gelistet:</td><td>{{ valuecheckbox(['courses',course.id,'listed'], course.listed) }}</td></tr>
+					<tr><td>Downloadable:</td><td>{{ valuecheckbox(['courses',course.id,'downloadable'], course.downloadable) }}</td></tr>
 					<tr><td>Short:</td><td>{{ valueeditor(['courses',course.id,'short'], course.short) }}</td></tr>
 					<tr><td>Handle:</td><td>{{ valueeditor(['courses',course.id,'handle'], course.handle) }}</td></tr>
-					<tr><td>Downloadable:</td><td>{{ valuecheckbox(['courses',course.id,'downloadable'], course.downloadable) }}</td></tr>
 					<tr><td>Thema:</td><td>{{ valueeditor(['courses',course.id,'subject'], course.subject) }}</td></tr>
 					<tr><td>Zuständig:</td><td>{{ valueeditor(['courses',course.id,'responsible'], course.responsible) }}</td></tr>
-					{% endif %}
 				</tbody>
 			</table>
 		</div>
+		{% endif %}
 	</div>
 </div>
 <div class="panel panel-default">
diff --git a/templates/courses.html b/templates/courses.html
index 980bdfd..a6243d7 100644
--- a/templates/courses.html
+++ b/templates/courses.html
@@ -2,7 +2,7 @@
 {% extends "base.html" %}
 {% block content %}
 <div clss="row">
-	<div class="row-xs-12">
+	<div class="col-xs-12" style="padding: 0px;">
 		<ul class="list-inline pull-right">
 			<li>
 				 <a class="fa fa-rss-square btn btn-default" aria-hidden="true" href="{{url_for('courses_feed')}}"></a>
@@ -12,7 +12,7 @@
 				<a class="btn btn-default" href="{{ url_for('new_course', ref=request.url) }}">Neue Veranstaltung</a>
 			</li>
 			{% endif %}
-			<li class="dropdown">
+			<li class="dropdown" style="padding-right: 0px">
 				<button class="btn btn-primary dropdown-toggle" type="button" data-toggle="dropdown">Gruppierung
 					<span class="caret"></span>
 				</button>
diff --git a/templates/index.html b/templates/index.html
index 7940115..368708a 100644
--- a/templates/index.html
+++ b/templates/index.html
@@ -29,6 +29,26 @@
 		</div>
 	</div>
 	<div class="col-md-6">
+		<div class="panel panel-default">
+			<div class="panel-heading">
+				<h1 class="panel-title">Nächste Aufnahmen</h1">
+			</div>
+			<ul class="list-group">
+				{% for g in upcomming|groupby('date') %}
+					<li class="list-group-item">
+						<ul class="list-group" style="margin: 0px;">
+							<strong>{{ g.grouper|date }}</strong>
+							{% for i in g.list %}
+							<li class="list-group-item list-group-item-condensed">
+								{{i.time|time}} {{i.place}} <a href="{{url_for('course', id=i.course_id)}}">{{i.course_title}}</a>: <a href="{{url_for('course', id=i.course_id)}}#lecture-{{i.id}}">{{i.title}}</a>
+
+							</li>
+							{% endfor %}
+						</ul>
+					</li>
+				{% endfor %}
+			</ul>
+		</div>
 		<div class="panel panel-default">
 			<div class="panel-heading">
 				<h1 class="panel-title">Neueste Videos <a class="fa fa-rss-square pull-right" aria-hidden="true" href="{{url_for('feed')}}"></a></h1">
-- 
GitLab