From 7567957dc4e79d6426389883def3038b73b4a5a2 Mon Sep 17 00:00:00 2001
From: Julian Rother <julianr@fsmpi.rwth-aachen.de>
Date: Tue, 6 Sep 2016 23:54:27 +0200
Subject: [PATCH] Made announcements editable

---
 server.py           | 13 ++++++++++++-
 templates/base.html | 16 +++++++++++++++-
 2 files changed, 27 insertions(+), 2 deletions(-)

diff --git a/server.py b/server.py
index c8ccaef..2f64357 100755
--- a/server.py
+++ b/server.py
@@ -238,7 +238,8 @@ def edit(prefix="", ignore=[]):
 		'lectures': ('lectures_data', 'id', ['visible', 'title', 'comment',
 				'internal', 'speaker', 'place', 'time', 'duration', 'jumplist','deleted']),
 		'videos': ('videos_data', 'id', ['visible','deleted']),
-		'chapters': ('chapters', 'id', ['time', 'text', 'visible', 'deleted'])
+		'chapters': ('chapters', 'id', ['time', 'text', 'visible', 'deleted']),
+		'announcements': ('announcements', 'id', ['text', 'internal', 'level', 'visible', 'deleted'])
 	}
 	query('BEGIN')
 	if request.is_json:
@@ -248,6 +249,7 @@ def edit(prefix="", ignore=[]):
 	for key, val in changes:
 		if key in ignore:
 			continue
+		print('edit:', key, val)
 		key = prefix+key
 		table, id, column = key.split('.', 2)
 		assert table in tabs
@@ -416,5 +418,14 @@ def suggest_chapter(lectureid):
 		return redirect(request.values['ref'])
 	return 'OK',  200
 
+@app.route('/newpsa', methods=['POST', 'GET'])
+@mod_required
+def new_announcement():
+	id = query('INSERT INTO announcements (text, internal, time_created, time_updated, created_by) VALUES ("Neue Ankündigung", "", ?, ?, ?)',
+			datetime.now(), datetime.now(), session.get('user', {'dbid':None})['dbid'])
+	if 'ref' in request.values:
+		return redirect(request.values['ref'])
+	return id,  200
+
 import feeds
 import importer
diff --git a/templates/base.html b/templates/base.html
index 7ebceab..004ec40 100644
--- a/templates/base.html
+++ b/templates/base.html
@@ -1,6 +1,7 @@
 {% set page_border = page_border|default(1) %}
 {% set min_announcement_level = min_announcement_level|default(1) %}
 {% set announcement_levels = {0: 'info', 1: 'info', 2: 'warning', 3: 'danger'} %}
+{% from 'macros.html' import valueeditor, valuecheckbox, valuedeletebtn %}
 
 <!DOCTYPE html>
 <html>
@@ -105,7 +106,20 @@
 					<div class="alert alert-danger" role="alert">{{ msg }}</div>
 					{% endfor %}
 					{% for msg in get_announcements(min_announcement_level) %}
-					<div class="alert alert-{{announcement_levels.get(msg.level, 'info')}}" role="alert">{{ msg.text|safe }}</div>
+					<div class="alert alert-{{announcement_levels.get(msg.level, 'info')}}" role="alert">
+						{{ valueeditor(('announcements',msg.id,'text'), msg.text|safe) }}
+						{% if ismod() %}
+						<div class="pull-right">
+							{{ valuecheckbox(('announcements',msg.id,'visible'),msg.visible) }}
+							{{ valuedeletebtn(('announcements',msg.id,'deleted')) }}
+						</div>
+						<br>
+						{{ valueeditor(('announcements',msg.id,'internal'), msg.internal) }}
+						<div class="pull-right">
+							Level: {{ valueeditor(('announcements',msg.id,'level'), msg.level) }}
+						</div>
+						{% endif %}
+					</div>
 					{% endfor %}
 					{% block content %}
 					<h1>This is a Heading</h1>
-- 
GitLab