diff --git a/db_schema.sql b/db_schema.sql index 58cef7e751703571adcf6256fe601f9bb7aa57d0..921b1daa1b871a8d58f2a915e9c1dda83e234714 100644 --- a/db_schema.sql +++ b/db_schema.sql @@ -28,6 +28,18 @@ CREATE TABLE IF NOT EXISTS `changelog` ( `value_new` text NOT NULL, `executed` text NOT NULL ); +CREATE TABLE IF NOT EXISTS `chapters` ( +`id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, + `lecture_id` INTEGER NOT NULL, + `time` INTEGER NOT NULL, + `text` text NOT NULL, + `visible` INTEGER NOT NULL DEFAULT 0, + `deleted` INTEGER NOT NULL DEFAULT 0, + `time_created` datetime NOT NULL, + `time_updated` datetime NOT NULL, + `created_by` INTEGER DEFAULT NULL, + `submitted_by` varchar(32) DEFAULT NULL +); CREATE TABLE IF NOT EXISTS `courses_data` ( `id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, `visible` INTEGER NOT NULL, diff --git a/server.py b/server.py index 947b896bc68552b8fccb083056436e07a3bc69ab..08ba7574c5e4a15b520b690e4d66558ec1fcc530 100755 --- a/server.py +++ b/server.py @@ -176,7 +176,8 @@ def lecture(id): courses = query('SELECT * FROM courses WHERE id = ? AND (? OR (visible AND listed))', lectures[0]['course_id'], ismod()) if not courses: return render_endpoint('course', 'Diese Veranstaltung existiert nicht!'), 404 - return render_template('lecture.html', course=courses[0], lecture=lectures[0], videos=videos) + chapters = query('SELECT * FROM chapters WHERE lecture_id = ? AND NOT deleted AND (? OR visible) ORDER BY time ASC', id, ismod()) + return render_template('lecture.html', course=courses[0], lecture=lectures[0], videos=videos, chapters=chapters) @app.route('/search') def search(): @@ -225,7 +226,8 @@ def edit(prefix="", ignore=[]): 'lectures': ('lectures_data', 'id', ['visible', 'title', 'comment', 'internal', 'speaker', 'place', 'time', 'duration', 'jumplist','deleted']), 'site_texts': ('site_texts', 'key', ['value']), - 'videos': ('videos_data', 'id', ['visible','deleted']) + 'videos': ('videos_data', 'id', ['visible','deleted']), + 'chapters': ('chapters', 'id', ['time', 'text', 'visible', 'deleted']) } query('BEGIN') if request.is_json: @@ -388,5 +390,20 @@ def changelog(): def files(filename): return redirect(config['VIDEOPREFIX']+'/'+filename) +@app.route('/newchapter/<int:lectureid>', methods=['POST', 'GET']) +def suggest_chapter(lectureid): + time = request.values['time'] + text = request.values['text'] + assert(time and text) + time = int(time) + submitter = None + if not ismod(): + submitter = request.environ['REMOTE_ADDR'] + id = query('INSERT INTO chapters (lecture_id, time, text, time_created, time_updated, created_by, submitted_by) VALUES (?, ?, ?, ?, ?, ?, ?)', + lectureid, time, text, datetime.now(), datetime.now(), session.get('user', {'dbid':None})['dbid'], submitter) + if 'ref' in request.values: + return redirect(request.values['ref']) + return 'OK', 200 + import feeds import importer