def show_calendarevent_ics_view(context, request): from icalendar import Calendar from icalendar import Event from icalendar import vUri from webob import Response calendar = Calendar() calendar.add('prodid', '-//KARL3//Event//') calendar.add('version', '2.0') calendar.add('method', 'PUBLISH') event = Event() event['uid'] = '%s:%s' % (context.__parent__.__parent__.__name__, context.docid) event.add('summary', context.title) if context.description: event.add('description', context.description) if context.location: event.add('location', context.location) event.add('dtstamp', context.modified) event.add('last-modified', context.modified) event.add('created', context.created) event.add('dtstart', context.startDate) event.add('dtend', context.endDate) contacts = [] if context.contact_name: contacts.append(context.contact_name) if context.contact_email: contacts.append(context.contact_email) if contacts: event.add('contact', ', '.join(contacts)) for name in context.attendees: if isinstance(name, unicode): name = name.encode('UTF-8') event.add('attendee', name) for f in context['attachments'].values(): attachment = vUri(model_url(f, request)) attachment.params['fmttype'] = f.mimetype event.add('attach', attachment) calendar.add_component(event) return Response(body=calendar.as_string(), content_type='text/calendar', charset='UTF8', )
def render(self): calendar = getMultiAdapter((self.context, self.request,), ICalendar) return calendar.as_string()