From 547ab2c56f6ac1aecf0531f82eb0a5fbdf4e1669 Mon Sep 17 00:00:00 2001 From: Julian Rother <julianr@fsmpi.rwth-aachen.de> Date: Tue, 6 Sep 2016 23:18:55 +0200 Subject: [PATCH] Implemented public service announcements --- db_schema.sql | 12 ++++++++++++ server.py | 4 ++++ templates/base.html | 7 ++++++- templates/index.html | 1 + 4 files changed, 23 insertions(+), 1 deletion(-) diff --git a/db_schema.sql b/db_schema.sql index 921b1da..29ef180 100644 --- a/db_schema.sql +++ b/db_schema.sql @@ -183,6 +183,18 @@ CREATE TABLE IF NOT EXISTS `videos_data` ( `video_format` INTEGER NOT NULL, `hash` varchar(32) NOT NULL ); +CREATE TABLE IF NOT EXISTS `announcements` ( +`id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, + `text` text NOT NULL, + `internal` text NOT NULL, + `level` INTEGER NOT NULL DEFAULT 0, + `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 NOT NULL +); + CREATE VIEW IF NOT EXISTS `courses` AS select * from `courses_data` where (not(`courses_data`.`deleted`)); CREATE VIEW IF NOT EXISTS `lectures` AS select * from `lectures_data` where (not(`lectures_data`.`deleted`)); CREATE VIEW IF NOT EXISTS `videos` AS select * from `videos_data` where (not(`videos_data`.`deleted`)); diff --git a/server.py b/server.py index 6f17c6e..c8ccaef 100755 --- a/server.py +++ b/server.py @@ -115,6 +115,10 @@ def human_date(d): def rfc3339(d): return d.strftime('%Y-%m-%dT%H:%M:%S+02:00') +@app.template_global() +def get_announcements(minlevel=0): + return query('SELECT * FROM announcements WHERE NOT deleted AND (? OR visible) AND level >= ? ORDER BY level DESC', ismod(), minlevel) + @app.route('/') @register_navbar('Home', icon='home') def index(): diff --git a/templates/base.html b/templates/base.html index 25be41a..7ebceab 100644 --- a/templates/base.html +++ b/templates/base.html @@ -1,4 +1,6 @@ -{% set page_border = page_border|default(1) -%} +{% 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'} %} <!DOCTYPE html> <html> @@ -102,6 +104,9 @@ {% for msg in get_flashed_messages() %} <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> + {% endfor %} {% block content %} <h1>This is a Heading</h1> <p>This is a paragraph.</p> diff --git a/templates/index.html b/templates/index.html index 7940115..2a34170 100644 --- a/templates/index.html +++ b/templates/index.html @@ -1,6 +1,7 @@ {% from 'macros.html' import preview %} {% extends "base.html" %} {% set page_border = 0 %} +{% set min_announcement_level = 0 %} {% block content %} <div class="row"> <div class="col-md-6 panel-group"> -- GitLab