all repos — mycal @ eaa2c4aaca33da3ea78d29fa5e4abddf0aceaea9

private calendar anonymiser

always return UTC times to avoid vTimezone requirement

Alan Pearce
commit

eaa2c4aaca33da3ea78d29fa5e4abddf0aceaea9

parent

5de57db60fc130e39d3496eb139276dac487b39f

1 file changed, 6 insertions(+), 8 deletions(-)

changed files
M mycal.pymycal.py
@@ -31,6 +31,7 @@ app = Flask(__name__)
config = load_config(environ.get("CONFIG_FILE", "config.toml")) tz = zoneinfo.ZoneInfo(config.timezone) +utc = zoneinfo.ZoneInfo("UTC") def fetch_calendar(calendar_url): return requests.get(calendar_url).content
@@ -80,22 +81,19 @@ # Parse with icalendar
try: input = Calendar.from_ical(get_calendar(config.calendar)) - ## causes parse error in go code - # vtimezone = icalendar.Timezone.from_tzid(config.timezone) - # output.add_component(vtimezone) - busy = FreeBusy(uid=f'{uuid4()}@{domain}') busy.add('organizer', organizer) - busy.add('dtstamp', datetime.now(tz=tz)) - busy.add('dtstart', start_date) - busy.add('dtend', end_date) + busy.add('dtstamp', datetime.now(tz=utc)) + busy.add('dtstart', start_date.astimezone(tz=utc)) + busy.add('dtend', end_date.astimezone(tz=utc)) for component in input.walk(): if component.name == "VEVENT": dtstart = fixup_date(component.get('dtstart').dt) dtend = fixup_date(component.get('dtend', component.get('dtstart')).dt) if dtstart >= start_date and dtend <= end_date: - vp = icalendar.prop.vPeriod([ dtstart, dtend ]) + vp = icalendar.prop.vPeriod([ t.astimezone(utc) for t in [dtstart, dtend] ]) + vp.params.pop('TZID') if looks_tentative(component): vp.FBTYPE = icalendar.enums.FBTYPE.BUSY_TENTATIVE