core/homeassistant/components/caldav/api.py

28 lines
833 B
Python

"""Library for working with CalDAV api."""
import caldav
from homeassistant.core import HomeAssistant
async def async_get_calendars(
hass: HomeAssistant, client: caldav.DAVClient, component: str
) -> list[caldav.Calendar]:
"""Get all calendars that support the specified component."""
def _get_calendars() -> list[caldav.Calendar]:
return [
calendar
for calendar in client.principal().calendars()
if component in calendar.get_supported_components()
]
return await hass.async_add_executor_job(_get_calendars)
def get_attr_value(obj: caldav.CalendarObjectResource, attribute: str) -> str | None:
"""Return the value of the CalDav object attribute if defined."""
if hasattr(obj, attribute):
return getattr(obj, attribute).value
return None