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()