cal = vobject.iCalendar()
cal.add('prodid').value='-//'+CALENDAR_NAME+'//PYVOBJ_'+CALENDAR_SHORT_NAME+'-Cal//EN'
cal.add('VTIMEZONE').tzinfo=dateutil.tz.tzlocal()
#cal.add('CALSCALE').value='GREGORIAN'
#cal.add('METHOD').value='PUBLISH'
#cal.add('X-WR-CALNAME').value=request.build_absolute_uri()
#cal.add('X-WR-TIMEZONE').value='Australia/Sydney'
for event in events:
ev = cal.add('vevent')
ev.add('uid').value = str(event.id)+'@'+CALENDAR_SHORT_NAME
dts=ev.add('dtstart')
dts.value = <datetime>
dts.params['tzid']='E'
dte=ev.add('dtend')
dte.value = <datetime>
dte.params['tzid']='E'
ev.add('summary').value = <str>
ev.add('description').value = <str>
ev.add('location').value = <str>
ev.add('status').value = <str:CONFIRMED|TENTATIVE|CANCELLED>
alarm=ev.add('valarm')
alarm.add('value').value='DURATION'
alarm.add('trigger').value=datetime.timedelta(minutes=-30)
text=cal.serialize()
text=text.replace('tzid=E', 'TZID=EST')
if False: text=text.replace('BEGIN:VTIMEZONE', """CALSCALE:GREGORIAN
METHOD:PUBLISH
X-WR-CALNAME:%s
X-WR-TIMEZONE:Australia/Sydney
BEGIN:VTIMEZONE""" % (request.build_absolute_uri()))
return HttpResponse(text, mimetype='text/calendar')
Comments
Or use django-cal for iCalendar files generation a la
django.contrib.syndication.#