diff --git a/calendar_utils/parser.py b/calendar_utils/parser.py index 7782d47e8a9ec23945fe16bdbd33afa9f55eece3..c7c453c44e95f5790fdfb8ef0fc44b901e884a1b 100644 --- a/calendar_utils/parser.py +++ b/calendar_utils/parser.py @@ -2,6 +2,7 @@ import re from operator import attrgetter import arrow +import bleach from django.conf import settings from ics import Calendar @@ -32,6 +33,13 @@ def split_events(events): return past, future +def set_event_description(event): + """Clears even description from unwanted tags.""" + description: str = event.get("description", "") or "" + event["description"] = bleach.clean(description, tags=["a", "br"], strip=True) + return event + + def set_event_duration(event): """Sets duration for event.""" if event["all_day"]: @@ -50,10 +58,17 @@ def set_event_duration(event): return event +def process_event(event): + """Processes single event for use in Majak""" + event = set_event_duration(event) + event = set_event_description(event) + return event + + def process_ical(source): """Parses iCalendar source and returns events as list of dicts. Returns tuple of past and future events. """ events = parse_ical(source) - events = list(map(set_event_duration, events)) + events = list(map(process_event, events)) return split_events(events)