diff --git a/feeds.py b/feeds.py index 52aec6259b3e9a858f4786962ffd6785381d2730..c2520549db5c5ca9a4471d79129ca3da9e8a89a9 100644 --- a/feeds.py +++ b/feeds.py @@ -20,25 +20,22 @@ def feed(handle=None): course['atomid'] = gen_atomid('Video AG, courses['+str(course['id'])+']: '+course['handle']) id = course['id'] entries = query(''' - SELECT lectures.*, videos.file_size, videos.path, videos.id AS video_id, videos.hash, - videos.time_created AS video_created, videos.time_updated AS video_updated, - courses.title AS course_title, courses.handle AS course_handle, courses.semester, courses.organizer AS course_organizer, courses.short as course_short, - formats.description AS format_description, formats.prio + SELECT lectures.*, "video" AS sep, videos.*, formats.description AS format_description, formats.prio, "course" AS sep, courses.* FROM lectures JOIN courses ON (courses.id = lectures.course_id) JOIN videos ON (lectures.id = videos.lecture_id) JOIN formats ON (formats.id = videos.video_format) WHERE ((? IS NULL AND courses.listed) OR course_id = ?) AND courses.visible AND lectures.visible AND videos.visible - ORDER BY video_created DESC, prio ASC + ORDER BY videos.time_created DESC, prio ASC LIMIT 100''', course['id'], course['id']) updated = max(course['time_updated'], course['time_created'], key=fixdate) for entry in entries: - entry['updated'] = max(entry['video_created'], entry['video_updated'], entry['time_created'], entry['time_updated'], key=fixdate) - if len(entry['hash']) != 32: + entry['updated'] = max(entry['video']['time_created'], entry['video']['time_updated'], entry['time_created'], entry['time_updated'], key=fixdate) + if len(entry['video']['hash']) != 32: entry['atomid'] = gen_atomid('Video AG, videos['+str(entry['video_id'])+']') else: - entry['atomid'] = 'urn:md5:'+(entry['hash'].upper()) + entry['atomid'] = 'urn:md5:'+(entry['video']['hash'].upper()) updated = max(updated, entry['updated'], key=fixdate) course['updated'] = updated return Response(render_template('feed.atom', course=course, entries=entries), 200, {'Content-Type': 'application/atom+xml'}) diff --git a/server.py b/server.py index 15812dbfa3891a9f6567bad5c4b77096f8e33a53..34b44b34d3e35a3df3f5f5e300778b3d5e013ce9 100755 --- a/server.py +++ b/server.py @@ -129,8 +129,8 @@ def fixnl(s): def index(): start = date.today() - timedelta(days=1) end = start + timedelta(days=7) - upcomming = query (''' - SELECT lectures.*,courses.short, courses.title AS course_title + upcomming = query(''' + SELECT lectures.*, "course" AS sep, courses.* FROM lectures JOIN courses ON (lectures.course_id = courses.id) WHERE (time > ?) AND (time < ?) and lectures.visible and courses.visible and courses.listed @@ -138,13 +138,13 @@ def index(): for i in upcomming: i['date'] = i['time'].date() latestvideos=query(''' - SELECT lectures.*, max(videos.time_updated) AS lastvidtime, courses.short, courses.downloadable, courses.title AS coursetitle + SELECT lectures.*, "course" AS sep, courses.* 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 + ORDER BY MAX(videos.time_updated) DESC LIMIT 6 ''',ismod()) featured = query('SELECT * FROM featured WHERE NOT deleted AND (? OR visible)', ismod()) return render_template('index.html', latestvideos=latestvideos, upcomming=upcomming, featured=featured) diff --git a/templates/feed.atom b/templates/feed.atom index 8bd9ce8f82f4b67743638d3d5d1c5689bddeed73..0144dd00dfd3b104c564b96db86fd8ba6779082d 100644 --- a/templates/feed.atom +++ b/templates/feed.atom @@ -1,8 +1,8 @@ {% macro summary(entry) %} {% if not course.handle %} -Veranstaltung: <a href="{{ url_for('course', handle=entry.course_handle) }}">{{entry.course_title}}</a><br> - {% if entry.course_organizer %} -Veranstalter: {{ entry.course_organizer }}<br> +Veranstaltung: <a href="{{ url_for('course', handle=entry.course.handle) }}">{{entry.course.title}}</a><br> + {% if entry.course.organizer %} +Veranstalter: {{ entry.course.organizer }}<br> {% endif %} {% endif %} {% if entry.speaker %} @@ -42,10 +42,10 @@ Veranstalter: {{ course.organizer }}<br> {% for entry in entries %} <entry> - <title>{% if not course.handle %}{{ entry.course_short }} {% if entry.semester %}({{ entry.semester|semester }}){% endif %}, {% endif %}{{ entry.time|date }}: {{ entry.title }}</title> - {% if not course.handle and entry.course_organizer %} + <title>{% if not course.handle %}{{ entry.course.short }} {% if entry.course.semester %}({{ entry.course.semester|semester }}){% endif %}, {% endif %}{{ entry.time|date }}: {{ entry.title }}</title> + {% if not course.handle and entry.course.organizer %} <author> - <name>{{ entry.course_organizer }}</name> + <name>{{ entry.course.organizer }}</name> </author> {% endif %} {% if entry.speaker %} @@ -54,7 +54,7 @@ Veranstalter: {{ course.organizer }}<br> </author> {% endif %} <link rel="alternate" href="{{ url_for('lecture', id=entry.id, _external=True) }}"/> - <link rel="enclosure" href="{{ url_for('files', filename=entry.path, _external=True)}}" length="{{ entry.file_size }}"/> + <link rel="enclosure" href="{{ url_for('files', filename=entry.video.path, _external=True)}}" length="{{ entry.video.file_size }}"/> <id>{{ entry.atomid }}</id> <updated>{{ entry.updated|rfc3339 }}</updated> <summary type="html">{{ summary(entry)|e }}</summary> diff --git a/templates/index.html b/templates/index.html index abe3f37706bd7d30e4d106a10cd9cff83a734fb6..b5fa2c598d997d6b9211b3754c0c8bab7b9b6f59 100644 --- a/templates/index.html +++ b/templates/index.html @@ -77,7 +77,7 @@ <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> + {{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 %} diff --git a/templates/macros.html b/templates/macros.html index 7706485449fe05b2b264f6ef137f703b64685beb..38aca6b73d868bc645e6fdf34842b5ed18dbc3e9 100644 --- a/templates/macros.html +++ b/templates/macros.html @@ -1,10 +1,10 @@ {% macro preview(lecture) %} <li class="list-group-item"> - <a class="hidden-xs" href="{{url_for('lecture', id=lecture['id'])}}" title="{{ lecture['coursetitle'] }}" style="color: #000"> + <a class="hidden-xs" href="{{url_for('lecture', id=lecture['id'])}}" title="{{ lecture.course.title }}" style="color: #000"> <div class="row"> <img class="col-xs-4" style="max-height: 100px; width: auto;" src="{{ config.VIDEOPREFIX }}/{{ lecture['titlefile'] }}" alt="Vorschaubild" onerror="this.src='{{url_for('static',filename='no-thumbnail.png')}}'; this.onerror=''; "> <div class="col-xs-4"> - <span><strong>{{ lecture['short'] }}</strong></span><br> + <span><strong>{{ lecture.course.short }}</strong></span><br> <span>{{ lecture['time'] }}</span> {% if lecture['speaker'] %} <div class="small">Gehalten von {{ lecture['speaker'] }} </div> @@ -16,13 +16,13 @@ </div> </div> </a> - <a class="visible-xs" href="{{url_for('lecture', id=lecture['id'])}}" title="{{ lecture['coursetitle'] }}" style="color: #000"> + <a class="visible-xs" href="{{url_for('lecture', id=lecture['id'])}}" title="{{ lecture.course.title }}" style="color: #000"> <ul class="list-unstyled"> <li> <img style="width: 100%;" src="{{ config.VIDEOPREFIX }}/{{ lecture['titlefile'] }}" alt="Vorschaubild" onerror="this.src='{{url_for('static',filename='no-thumbnail.png')}}'; this.onerror=''; "> </li> <li> - <strong>{{ lecture['short'] }}</strong> {{ lecture['time'] }} + <strong>{{ lecture.course.short }}</strong> {{ lecture['time'] }} </li> {% if lecture['speaker'] %} <li>