diff --git a/server.py b/server.py index 8ece609dd1667136ed89aacbfa86ace040b85048..d2a585c0724c67f41414eb3f73b2d127cb43b79b 100644 --- a/server.py +++ b/server.py @@ -206,7 +206,11 @@ def index(): @register_navbar('Videos', icon='film') def courses(): courses = query('SELECT * FROM courses WHERE (? OR (visible AND listed)) ORDER BY lower(semester), lower(title)', ismod()) + chapters = {} + for i in query('SELECT lectures.course_id AS id, COUNT(chapters.id) AS c FROM chapters JOIN lectures ON chapters.lecture_id = lectures.id WHERE NOT chapters.visible GROUP BY lectures.course_id'): + chapters[i['id']] = i['c'] for course in courses: + course['chapter_count'] = chapters.get(course['id'], 0) if course['semester'] == '': course['semester'] = 'zeitlos' groupedby = request.args.get('groupedby') @@ -224,11 +228,15 @@ def course(id=None, handle=None): course = query('SELECT * FROM courses WHERE handle = ? AND (? OR visible)', handle, ismod())[0] course['perm'] = query('SELECT * FROM perm WHERE (NOT perm.deleted) AND course_id = ? ORDER BY type', course['id']) perms = query('SELECT perm.* FROM perm JOIN lectures ON (perm.lecture_id = lectures.id) WHERE (NOT perm.deleted) AND lectures.course_id = ? ORDER BY perm.type', course['id']) + chapters = {} + for i in query('SELECT lectures.id AS id, COUNT(chapters.id) AS c FROM chapters JOIN lectures ON chapters.lecture_id = lectures.id WHERE lectures.course_id = ? GROUP BY chapters.lecture_id;', course['id']): + chapters[i['id']] = i['c'] lectures = query('SELECT * FROM lectures WHERE course_id = ? AND (? OR visible) ORDER BY time, duration DESC', course['id'], ismod()) for lecture in lectures: lecture['perm'] = [] lecture['perm'] += course['perm'] lecture['course'] = course + lecture['chapter_count'] = chapters.get(lecture['id'], 0) for perm in perms: if perm['lecture_id'] == lecture['id']: lecture['perm'].append(perm) diff --git a/templates/courses.html b/templates/courses.html index 6b8ee827a37f921af04ce795dc4ae7d9ff97758c..9eb562f0905ef49a41c9730f0f68f13525bb3f16 100644 --- a/templates/courses.html +++ b/templates/courses.html @@ -71,7 +71,7 @@ {% if groupedby == 'semester' %} {{ course_list_item(i) }} {% else %} - {{ course_list_item(i,true) }} + {{ course_list_item(i, true) }} {% endif %} {% endfor %} </ul> diff --git a/templates/macros.html b/templates/macros.html index 49fb6633300d0a29a4403b963a71a3e60fb36baa..ea67c2a75544349d59f2664c1051fada3dac478e 100644 --- a/templates/macros.html +++ b/templates/macros.html @@ -155,6 +155,9 @@ $(function() { <a href="{{url_for('course', handle=course.handle)}}"> {{ course.title }}{% if ismod() %}<i> ({{course.id}})</i>{% endif %} </a> + {% if course.chapter_count|d(0) > 0 and ismod() %} + <span class="label label-info" data-toggle="tooltip" title="Nicht freigegebene Kapitel">{{ course.chapter_count }}</span> + {% endif %} </span> <span class="col-xs-8 col-md-3"> {{ course.organizer }} @@ -216,7 +219,13 @@ $('#embedcodebtn').popover( {% endif %} </div> <ul class="list-unstyled col-sm-3 col-xs-12"> - <li>{{ moderator_editor(['lectures',lecture.id,'title'], lecture.title) }}{{livelabel((lecture.live and lecture.time > datetime.now()-timedelta(days=1)), videos|selectattr("livehandle")|list|length)}}</li> + <li> + {{ moderator_editor(['lectures',lecture.id,'title'], lecture.title) }} + {{ livelabel((lecture.live and lecture.time > datetime.now()-timedelta(days=1)), videos|selectattr("livehandle")|list|length) }} + {% if lecture.chapter_count|d(0) > 0 and ismod() %} + <span class="label label-info" data-toggle="tooltip" title="Nicht freigegebene Kapitel">{{ lecture.chapter_count }}</span> + {% endif %} + </li> {% if lecture.speaker or ismod() %}<li>Gehalten von {{ moderator_editor(['lectures',lecture.id,'speaker'], lecture.speaker) }}</li>{% endif %} {% if ismod() %} <li>{{ moderator_editor(['lectures',lecture.id,'time'], lecture.time) }} </li> @@ -263,7 +272,13 @@ $('#embedcodebtn').popover( <div class="col-sm-2 col-xs-12"> </div> <ul class="list-unstyled col-sm-3 col-xs-12"> - <li>{{ moderator_editor(['lectures',lecture.id,'title'], lecture.title) }}{{livelabel((lecture.live and lecture.time > datetime.now()-timedelta(days=1)), videos|selectattr("livehandle")|list|length)}}</li> + <li> + {{ moderator_editor(['lectures',lecture.id,'title'], lecture.title) }} + {{livelabel((lecture.live and lecture.time > datetime.now()-timedelta(days=1)), videos|selectattr("livehandle")|list|length)}} + {% if lecture.chapter_count|d(0) > 0 and ismod() %} + <span class="label label-info" data-toggle="tooltip" title="Nicht freigegebene Kapitel">{{ lecture.chapter_count }}</span> + {% endif %} + </li> </ul> <ul class="list-unstyled col-sm-3 col-xs-12"> {% if ismod() %}