1 """Support for Twente Milieu Calendar."""
3 from __future__
import annotations
5 from datetime
import datetime, timedelta
13 from .
import TwenteMilieuConfigEntry
14 from .const
import WASTE_TYPE_TO_DESCRIPTION
15 from .entity
import TwenteMilieuEntity
20 entry: TwenteMilieuConfigEntry,
21 async_add_entities: AddEntitiesCallback,
23 """Set up Twente Milieu calendar based on a config entry."""
28 """Defines a Twente Milieu calendar."""
30 _attr_has_entity_name =
True
32 _attr_translation_key =
"calendar"
34 def __init__(self, entry: TwenteMilieuConfigEntry) ->
None:
35 """Initialize the Twente Milieu entity."""
38 self.
_event_event: CalendarEvent |
None =
None
41 def event(self) -> CalendarEvent | None:
42 """Return the next upcoming event."""
46 self, hass: HomeAssistant, start_date: datetime, end_date: datetime
47 ) -> list[CalendarEvent]:
48 """Return calendar events within a datetime range."""
49 events: list[CalendarEvent] = []
50 for waste_type, waste_dates
in self.coordinator.data.items():
53 summary=WASTE_TYPE_TO_DESCRIPTION[waste_type],
57 for waste_date
in waste_dates
58 if start_date.date() <= waste_date <= end_date.date()
65 """Handle updated data from the coordinator."""
66 next_waste_pickup_type =
None
67 next_waste_pickup_date =
None
68 for waste_type, waste_dates
in self.coordinator.data.items():
72 next_waste_pickup_date
is None
74 < next_waste_pickup_date
76 and waste_dates[0] >= dt_util.now().
date()
78 next_waste_pickup_date = waste_dates[0]
79 next_waste_pickup_type = waste_type
82 if next_waste_pickup_date
is not None and next_waste_pickup_type
is not None:
84 summary=WASTE_TYPE_TO_DESCRIPTION[next_waste_pickup_type],
85 start=next_waste_pickup_date,
86 end=next_waste_pickup_date +
timedelta(days=1),
92 """When entity is added to hass."""
list[CalendarEvent] async_get_events(self, HomeAssistant hass, datetime start_date, datetime end_date)
CalendarEvent|None event(self)
None _handle_coordinator_update(self)
None __init__(self, TwenteMilieuConfigEntry entry)
None async_added_to_hass(self)
None async_setup_entry(HomeAssistant hass, TwenteMilieuConfigEntry entry, AddEntitiesCallback async_add_entities)