Files
gogo-telefon/gogo/proposals/ics.py

43 lines
1.2 KiB
Python
Raw Normal View History

"""Generate the .ics attachment (METHOD:REQUEST) for the first-choice slot (§9.1).
The .ics is a convenience so Gmail offers "Add to calendar" the owner can move
and rearrange the event before saving. Gogo never writes to the owner's calendar.
"""
from __future__ import annotations
from datetime import datetime
from icalendar import Calendar, Event, vCalAddress, vText
from gogo.config import get_settings
def build_ics(
*,
uid: str,
start: datetime,
end: datetime,
summary: str,
description: str,
organizer_email: str = "noreply@gogotelefon.ba",
) -> bytes:
cal = Calendar()
cal.add("prodid", "-//Gogo Telefon//gogotelefon.ba//BS")
cal.add("version", "2.0")
cal.add("method", "REQUEST")
ev = Event()
ev.add("uid", f"{uid}@gogotelefon.ba")
ev.add("dtstart", start)
ev.add("dtend", end)
ev.add("summary", summary)
ev.add("description", description)
ev.add("status", "TENTATIVE")
organizer = vCalAddress(f"MAILTO:{organizer_email}")
organizer.params["cn"] = vText("Gogo Telefon")
ev["organizer"] = organizer
ev.add("url", get_settings().base_url)
cal.add_component(ev)
return cal.to_ical()