1 """Support for Ridwell calendars."""
3 from __future__
import annotations
7 from aioridwell.model
import RidwellAccount, RidwellPickupEvent
14 from .const
import DOMAIN
15 from .coordinator
import RidwellDataUpdateCoordinator
16 from .entity
import RidwellEntity
21 pickup_event: RidwellPickupEvent,
23 """Get a HASS CalendarEvent from an aioridwell PickupEvent."""
24 pickup_type_string =
", ".join(
26 f
"{pickup.name} (quantity: {pickup.quantity})"
27 for pickup
in pickup_event.pickups
31 summary=f
"Ridwell Pickup ({pickup_event.state.value})",
32 description=f
"Pickup types: {pickup_type_string}",
33 start=pickup_event.pickup_date,
34 end=pickup_event.pickup_date + datetime.timedelta(days=1),
39 hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback
41 """Set up Ridwell calendars based on a config entry."""
42 coordinator: RidwellDataUpdateCoordinator = hass.data[DOMAIN][entry.entry_id]
46 for account
in coordinator.accounts.values()
51 """Define a Ridwell calendar."""
54 _attr_translation_key =
"calendar"
57 self, coordinator: RidwellDataUpdateCoordinator, account: RidwellAccount
59 """Initialize the Ridwell entity."""
60 super().
__init__(coordinator, account)
63 self._event: CalendarEvent |
None =
None
66 def event(self) -> CalendarEvent | None:
67 """Return the next upcoming event."""
73 start_date: datetime.datetime,
74 end_date: datetime.datetime,
75 ) -> list[CalendarEvent]:
76 """Return calendar events within a datetime range."""
79 for event
in self.coordinator.data[self.
_account_account.account_id]
None __init__(self, RidwellDataUpdateCoordinator coordinator, RidwellAccount account)
list[CalendarEvent] async_get_events(self, HomeAssistant hass, datetime.datetime start_date, datetime.datetime end_date)
CalendarEvent|None event(self)
RidwellPickupEvent next_pickup_event(self)
CalendarEvent async_get_calendar_event_from_pickup_event(RidwellPickupEvent pickup_event)
None async_setup_entry(HomeAssistant hass, ConfigEntry entry, AddEntitiesCallback async_add_entities)