1 """Support for ReCollect Waste calendars."""
3 from __future__
import annotations
7 from aiorecollect.client
import PickupEvent
15 from .const
import DOMAIN
16 from .entity
import ReCollectWasteEntity
17 from .util
import async_get_pickup_type_names
22 entry: ConfigEntry, pickup_event: PickupEvent
24 """Get a HASS CalendarEvent from an aiorecollect PickupEvent."""
25 pickup_type_string =
", ".join(
29 summary=
"ReCollect Waste Pickup",
30 description=f
"Pickup types: {pickup_type_string}",
31 location=pickup_event.area_name,
32 start=pickup_event.date,
33 end=pickup_event.date + datetime.timedelta(days=1),
38 hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback
40 """Set up ReCollect Waste sensors based on a config entry."""
41 coordinator: DataUpdateCoordinator[list[PickupEvent]] = hass.data[DOMAIN][
49 """Define a ReCollect Waste calendar."""
52 _attr_translation_key =
"calendar"
56 coordinator: DataUpdateCoordinator[list[PickupEvent]],
59 """Initialize the ReCollect Waste entity."""
63 self.
_event_event: CalendarEvent |
None =
None
66 def event(self) -> CalendarEvent | None:
67 """Return the next upcoming event."""
72 """Handle updated data from the coordinator."""
76 for event
in self.coordinator.data
77 if event.date >= datetime.date.today()
83 self.
_entry_entry, current_event
91 start_date: datetime.datetime,
92 end_date: datetime.datetime,
93 ) -> list[CalendarEvent]:
94 """Return calendar events within a datetime range."""
97 for event
in self.coordinator.data
None _handle_coordinator_update(self)
list[CalendarEvent] async_get_events(self, HomeAssistant hass, datetime.datetime start_date, datetime.datetime end_date)
CalendarEvent|None event(self)
None __init__(self, DataUpdateCoordinator[list[PickupEvent]] coordinator, ConfigEntry entry)
CalendarEvent async_get_calendar_event_from_pickup_event(ConfigEntry entry, PickupEvent pickup_event)
None async_setup_entry(HomeAssistant hass, ConfigEntry entry, AddEntitiesCallback async_add_entities)
list[str] async_get_pickup_type_names(ConfigEntry entry, list[PickupType] pickup_types)