diff --git a/server.py b/server.py index 206ada01a3e2b681b77099a4a22e043ea512c3e0..8b6f522f92c0516c0982846a10b5edc08cf013e3 100755 --- a/server.py +++ b/server.py @@ -6,6 +6,7 @@ import threading import os import hashlib import locale +import random locale.setlocale(locale.LC_ALL, 'de_DE.UTF-8') @@ -219,7 +220,7 @@ def logout(): @app.route('/edit', methods=['GET', 'POST']) @mod_required -def edit(): +def edit(prefix="", ignore=[]): tabs = { 'courses': ('courses_data', 'id', ['visible', 'listed', 'title', 'short', 'handle', 'organizer', 'subject', 'semester', 'downloadable', @@ -235,6 +236,9 @@ def edit(): else: changes = request.args.items() for key, val in changes: + if key in ignore: + continue + key = prefix+key table, id, column = key.split('.', 2) assert table in tabs assert column in tabs[table][2] @@ -243,6 +247,35 @@ def edit(): query('COMMIT') return "OK", 200 +@app.route('/newcourse', methods=['GET', 'POST']) +@mod_required +def newcourse(): + id = query(''' + INSERT INTO courses_data + (visible, title, short, handle, organizer, subject, created_by, time_created, + time_updated, semester, settings, description, internal, responsible, feed_url) + VALUES (0, "Neue Veranstaltung", "Neu", ?, "", "", ?, ?, ?, "", "", "", "", ?, "") + ''', 'new'+str(random.randint(0,1000)), session['user']['dbid'], datetime.now(), datetime.now(), + session['user']['givenName']) + edit(prefix='courses.'+str(id)+'.', ignore=['ref']) + if 'ref' in request.values: + return redirect(request.values['ref']) + return str(id), 200 + +@app.route('/newlecture/<courseid>', methods=['GET', 'POST']) +@mod_required +def newlecture(courseid): + id = query(''' + INSERT INTO lectures_data + (course_id, visible, drehplan, title, comment, internal, speaker, place, + time, time_created, time_updated, jumplist, titlefile) + VALUES (?, 0, "", "Noch kein Titel", "", "", "", "", ?, ?, ?, "", "") + ''', courseid, datetime.now(), datetime.now(), datetime.now()) + edit(prefix='lectures.'+str(id)+'.', ignore=['ref']) + if 'ref' in request.values: + return redirect(request.values['ref']) + return str(id), 200 + @app.route('/auth') def auth(): # For use with nginx auth_request if 'X-Original-Uri' not in request.headers: diff --git a/templates/course.html b/templates/course.html index 196946a939adf5efeca299c6e5b0d98ea6edafbc..3557c0c85a30f7124bd020e5cb93985ae961ea2d 100644 --- a/templates/course.html +++ b/templates/course.html @@ -4,7 +4,7 @@ <div class="row"> <div class="col-xs-12 dropdown" style="margin-bottom: 10px;"> <span class="pull-right"> - {% if ismod() %} <a class="btn btn-default" style="margin-right: 5px;" href="todo">Neue Veranstaltung</a> {% endif %} + {% if ismod() %} <a class="btn btn-default" style="margin-right: 5px;" href="{{ url_for('newcourse', ref=request.url) }}">Neue Veranstaltung</a> {% endif %} <button class="btn btn-primary dropdown-toggle pull-right" type="button" data-toggle="dropdown">Gruppierung <span class="caret"></span></button> diff --git a/templates/course_id.html b/templates/course_id.html index 4e2433ce007b6c0a05389aec3ca36766e6287701..5e63e9ab83bd2a713e06e1d23391da3791f317a5 100644 --- a/templates/course_id.html +++ b/templates/course_id.html @@ -31,7 +31,7 @@ </div> <div class="panel panel-default"> <div class="panel-heading"> - <h1 class="panel-title">Videos{% if ismod() %} <a class="btn btn-default" style="margin-right: 5px;" href="todo">Neuer Termin</a><a class="btn btn-default" style="margin-right: 5px;" href="{{url_for('import_from', id=course['id'])}}">Campus Import</a>{% endif %}</h1> + <h1 class="panel-title">Videos{% if ismod() %} <a class="btn btn-default" style="margin-right: 5px;" href="{{ url_for('newlecture', courseid=course.id, ref=request.url) }}">Neuer Termin</a><a class="btn btn-default" style="margin-right: 5px;" href="{{url_for('import_from', id=course['id'])}}">Campus Import</a>{% endif %}</h1> </div> <ul class="list-group lectureslist"> {% for l in lectures %}