Example #1
0
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'}
Example #2
0
    '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())