Skip to content
Snippets Groups Projects
Select Git revision
  • master default protected
  • postgres_integration
  • s3compatible
  • intros
  • bootstrap4
  • modules
6 results

meetings.py

Blame
  • Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    meetings.py 1.15 KiB
    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)
    
    @sched_func(60*60)
    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())