From c205dec33aae5be223ce47b64f4adeca90b102bf Mon Sep 17 00:00:00 2001 From: OndraRehounek <ondra.rehounek@seznam.cz> Date: Thu, 28 Apr 2022 14:37:18 +0200 Subject: [PATCH] calendar: clear event description by bleach --- calendar_utils/parser.py | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/calendar_utils/parser.py b/calendar_utils/parser.py index 7782d47e..c7c453c4 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) -- GitLab