From a7608db6e4faa200413931d86251928883c14f90 Mon Sep 17 00:00:00 2001
From: Julian Rother <julianr@fsmpi.rwth-aachen.de>
Date: Tue, 2 Jan 2018 20:18:53 +0100
Subject: [PATCH] Added notifications for edits, closes #116

---
 edit.py     | 16 ++++++++++++++--
 encoding.py |  6 +++---
 2 files changed, 17 insertions(+), 5 deletions(-)

diff --git a/edit.py b/edit.py
index 7194a2b..7e64b1e 100644
--- a/edit.py
+++ b/edit.py
@@ -144,9 +144,9 @@ def edit(prefix='', ignore=[]):
 				path['table'], path['id'], path['tableinfo']['idcolumn'], path['column'], val, path['id'], datetime.now(), session['user']['dbid'])
 		modify('UPDATE %s SET `%s` = ?, time_updated = ? WHERE `%s` = ?'%(path['tableinfo']['table'], path['column'], path['tableinfo']['idcolumn']), val, datetime.now(),path['id'])
 		for func in edit_handlers.get(path['table'], {}).get(None, []):
-			func(path['table'], path['column'], val, path['id'])
+			func(path['table'], path['column'], val, path['id'], session['user']['dbid'])
 		for func in edit_handlers.get(path['table'], {}).get(path['column'], []):
-			func(path['table'], path['column'], val, path['id'])
+			func(path['table'], path['column'], val, path['id'], session['user']['dbid'])
 	if 'ref' in request.values:
 		return redirect(request.values['ref'])
 	return "OK", 200
@@ -222,3 +222,15 @@ def edit_handler(*tables, field=None):
 		return func
 	return wrapper
 
+@edit_handler('courses')
+@edit_handler('lectures')
+def notify_edit(table, column, value, id, user_id):
+	lecture = None
+	if table == 'lectures':
+		lecture = query('SELECT * FROM lectures_data WHERE id = ?', id)[0]
+		course_id = lecture['course_id']
+	elif table == 'courses':
+		course_id = id
+	course = query('SELECT * FROM courses_data WHERE id = ?', course_id)[0]
+	user = query('SELECT * FROM users WHERE id = ?', user_id)[0]
+	notify_mods('edit', course_id, exclude_uids=[user_id], course=course, lecture=lecture, table=table, column=column, value=value, user=user)
diff --git a/encoding.py b/encoding.py
index 83d5e93..0b66e7f 100644
--- a/encoding.py
+++ b/encoding.py
@@ -113,7 +113,7 @@ def update_lecture_videos(jobid, jobtype, data, state, status):
 			schedule_transcode(latest, video=video)
 
 @edit_handler('chapters')
-def chapter_changed(table, column, value, id):
+def chapter_changed(table, column, value, id, user):
 	print('chapter_changed')
 	chapters = query('SELECT * FROM chapters WHERE id = ?', id)
 	if not chapters:
@@ -123,7 +123,7 @@ def chapter_changed(table, column, value, id):
 		schedule_remux(chapter['lecture_id'])
 
 @edit_handler('courses')
-def course_changed(table, column, value, id):
+def course_changed(table, column, value, id, user):
 	if column not in ['title', 'organizer']:
 		return
 	lectures = query('SELECT * FROM lectures WHERE course_id = ?', id)
@@ -131,7 +131,7 @@ def course_changed(table, column, value, id):
 		schedule_remux(lecture['id'])
 
 @edit_handler('lectures')
-def lecture_changed(table, column, value, id):
+def lecture_changed(table, column, value, id, user):
 	if column in ['title', 'comment', 'time', 'speaker']:
 		schedule_remux(id)
 
-- 
GitLab