def get_timetable(): q = request.query_string.decode() if not q: return '', 200, {'content-type': 'text/calendar'} if ',' in q: calds = None codes = q.split(',') else: calds = q codes = rd.smembers('group:%s' % q) sct = [] all_cn = [] for cn in codes: try: cn = int(cn) except ValueError: continue section = Section.query.get(cn) if not section: continue all_cn.append(cn) sct.append(str(section)) if calds is None: calds = ', '.join(sct) cal = Calendar(**{ 'prodid': '-//SUTD Timetable Calendar//randName//EN', 'version': '2.0', 'calscale': 'GREGORIAN', 'x-wr-timezone': 'Asia/Singapore', 'x-wr-calname': 'Timetable', 'x-wr-caldesc': 'Timetable for %s' % calds, }) cal.subcomponents = tuple( l.event for l in Lesson.query.filter(Lesson.class_no.in_(all_cn)).all() ) return cal.to_ical(), 200, {'content-type': 'text/calendar'}
'summary': lambda x: '{title}'.format(**x), 'dtstamp': lambda x: dt.datetime.now(), } cal = Calendar() cal['dtstart'] = '20050404T080000' cal.add('summary', 'Open Math Seminars Calendar') cal.add('prodid',"jaume.dedios.cat/math-seminars") cal.add('dtstamp',dt.datetime.now()) cal.add('version','2.0') subcomponents = [] if not os.path.exists('talk'): os.makedirs('talk') for row in data.iterrows(): mydict = { prop:func(row[1]) for prop, func in parser.items()} #Create HUGO file with open('talk/{}.md'.format(mydict['name']), 'w') as f: f.write(base_string.format(**mydict)) #Create iCal event event = Event() for prop, func in cal_parser.items(): event.add(prop, func(mydict)) subcomponents += [event] cal.subcomponents = subcomponents with open('talks_calendar.ical','wb') as f: f.write(cal.to_ical())