You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
feo-homepage/core/utils.py

30 lines
1014 B

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('<p>', '\n').replace('<br/>', '\n'))))
event['X-ALT-DESC'] = vText(e.get_full_url() + '<br/><br/>' + 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()