From 7990ea9a0d973172d5935bf25e349969741294a9 Mon Sep 17 00:00:00 2001 From: Julian Rother <julianr@fsmpi.rwth-aachen.de> Date: Mon, 12 Sep 2016 02:02:32 +0200 Subject: [PATCH] Implemented simple meeting importer that works with sogo and generates psas --- db_schema.sql | 2 +- meetings.py | 34 ++++++++++++++++++++++++++++++++++ 2 files changed, 35 insertions(+), 1 deletion(-) create mode 100644 meetings.py diff --git a/db_schema.sql b/db_schema.sql index 3b39f48..f5e1fbf 100644 --- a/db_schema.sql +++ b/db_schema.sql @@ -185,6 +185,7 @@ CREATE TABLE IF NOT EXISTS `videos_data` ( ); CREATE TABLE IF NOT EXISTS `announcements` ( `id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, + `extid` varchar(128) UNIQUE, `text` text NOT NULL DEFAULT '', `level` INTEGER NOT NULL DEFAULT 0, `visible` INTEGER NOT NULL DEFAULT 0, @@ -206,7 +207,6 @@ CREATE TABLE IF NOT EXISTS `featured` ( `time_updated` datetime NOT NULL, `created_by` INTEGER NOT NULL ); - CREATE TABLE IF NOT EXISTS `sortlog` ( `id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, `when` datetime NOT NULL, diff --git a/meetings.py b/meetings.py new file mode 100644 index 0000000..57b3e50 --- /dev/null +++ b/meetings.py @@ -0,0 +1,34 @@ +from server import * +import icalendar +import requests + +def get_next_meeting(): + ical = requests.get(config['ICAL_URL']).content + events = icalendar.Calendar.from_ical(ical).walk('VEVENT') + now = datetime.now().date() + delta = timedelta(weeks=2) + meetings = [] + for event in events: + try: + start = event['DTSTART'].dt.date() + if 'VIDEO' != event['SUMMARY'].upper() or start < now or start > now+delta: + continue + meetings.append(event) + except: + pass + if not meetings: + return + event = sorted(meetings, key=lambda e: e['DTSTART'].dt)[0] + return str(event['UID']), event['DTSTART'].dt.replace(tzinfo=None) + +def update_meeting(): + try: + uid, start = get_next_meeting() + except: + return + text = 'Die nächste Video AG-Sitzung findet am %s ab %s Uhr in den Räumlichkeiten der Fachschaft im Augustinerbach 2a statt.'%( + human_date(start), human_time(start)) + modify('''REPLACE INTO announcements + (extid, text, level, visible, time_publish, time_expire, time_created, time_updated, created_by) + VALUES (?, ?, 0, 1, ?, ?, ?, ?, 0)''', + 'ical:'+uid, text, start-timedelta(days=3), start+timedelta(hours=2), datetime.now(), datetime.now()) -- GitLab