diff --git a/server.py b/server.py
index ba24baae948825c7b7bda197f90d755b035ffb36..c484a929120e0eb96555c3ff957b70c3d655f509 100755
--- a/server.py
+++ b/server.py
@@ -1,3 +1,4 @@
+#!/bin/python
 
 from flask import *
 from functools import wraps
@@ -205,5 +206,28 @@ def logout():
 	else:
 		return redirect(url_for('index'))
 
+@app.route('/edit')
+@login_required
+def edit():
+	tabs = {
+		'courses': ('courses_data', 'id', ['visible', 'listed', 'title', 'short',
+				'handle', 'organizer', 'subject', 'credits', 'semester', 'downloadable',
+				'internal', 'responsible']),
+		'lectures': ('lectures_data', 'id', ['visible', 'title', 'comment',
+				'internal', 'speaker', 'place', 'time', 'duration', 'jumplist',
+				'titlefile']),
+		'site_texts': ('site_texts', 'key' ['value']),
+		'videos': ('videos_data', 'id', ['visible', 'downloadable', 'title',
+				'comment', 'internal'])
+	}
+	query('BEGIN TRANSACTION')
+	for key, val in request.get_json():
+		table, column, id = key.split('.', 2)
+		assert table in tabs
+		assert column in tabs[table][2]
+		query('UPDATE %s SET %s = ? WHERE %s = ?'%(tabs[table][0], column,
+					tabs[table][1]), val, id)
+	query('COMMIT TRANSACTION')
+
 if __name__ == '__main__':
 	app.run()