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