from icalendar import Calendar, Event, vText from django.template.defaultfilters import striptags from django.utils import timezone from .models import EventPage def generate_events_ics(queryset): cal = Calendar() for e in queryset: assert isinstance(e, EventPage) event = Event() event.add('summary', vText(e.title)) event.add('description', vText(e.get_full_url() + '\n\n' + striptags(e.description.replace('
', '\n').replace('
', '\n'))))
event['X-ALT-DESC'] = vText(e.get_full_url() + '
' + e.description)
event.add('dtstart', e.start_date)
event.add('uid', f'{e.slug}@feo.gmbh')
if e.end_date:
event.add('dtend', e.end_date)
if e.location_name:
event.add('location', vText(f'{e.location_name}, {e.location_street}, {e.location_city}'))
event.add('url', e.get_full_url())
event.add('dtstamp', timezone.now())
cal.add_component(event)
return cal.to_ical()