Select Git revision
timetable.py
Forked from
Video AG Infrastruktur / website
Source project has a limited visibility.
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
meetings.py 1.17 KiB
import icalendar
import requests
from server import *
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 event['SUMMARY'].upper() != 'VIDEO' or start < now or start > now+delta:
continue
meetings.append(event)
except KeyError:
pass
if not meetings:
return None, None
event = sorted(meetings, key=lambda e: e['DTSTART'].dt)[0]
return str(event['UID']), event['DTSTART'].dt.replace(tzinfo=None)
@sched_func(60*60)
def update_meeting():
uid, start = get_next_meeting()
if uid is None:
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=7), start+timedelta(hours=2), datetime.now(), datetime.now())