Home Assistant Unofficial Reference 2024.12.1
calendar.py
Go to the documentation of this file.
1 """Support for Radarr calendar items."""
2 
3 from __future__ import annotations
4 
5 from datetime import datetime
6 
7 from homeassistant.components.calendar import CalendarEntity, CalendarEvent
8 from homeassistant.core import HomeAssistant, callback
9 from homeassistant.helpers.entity import EntityDescription
10 from homeassistant.helpers.entity_platform import AddEntitiesCallback
11 
12 from . import RadarrConfigEntry
13 from .coordinator import CalendarUpdateCoordinator, RadarrEvent
14 from .entity import RadarrEntity
15 
16 CALENDAR_TYPE = EntityDescription(
17  key="calendar",
18  name=None,
19 )
20 
21 
23  hass: HomeAssistant,
24  entry: RadarrConfigEntry,
25  async_add_entities: AddEntitiesCallback,
26 ) -> None:
27  """Set up the Radarr calendar entity."""
28  coordinator = entry.runtime_data.calendar
29  async_add_entities([RadarrCalendarEntity(coordinator, CALENDAR_TYPE)])
30 
31 
33  """A Radarr calendar entity."""
34 
35  coordinator: CalendarUpdateCoordinator
36 
37  @property
38  def event(self) -> CalendarEvent | None:
39  """Return the next upcoming event."""
40  if not self.coordinator.event:
41  return None
42  return CalendarEvent(
43  summary=self.coordinator.event.summary,
44  start=self.coordinator.event.start,
45  end=self.coordinator.event.end,
46  description=self.coordinator.event.description,
47  )
48 
49  # pylint: disable-next=hass-return-type
50  async def async_get_events( # type: ignore[override]
51  self, hass: HomeAssistant, start_date: datetime, end_date: datetime
52  ) -> list[RadarrEvent]:
53  """Get all events in a specific time frame."""
54  return await self.coordinator.async_get_events(start_date, end_date)
55 
56  @callback
57  def async_write_ha_state(self) -> None:
58  """Write the state to the state machine."""
59  if self.coordinator.event:
60  self._attr_extra_state_attributes_attr_extra_state_attributes = {
61  "release_type": self.coordinator.event.release_type
62  }
63  else:
64  self._attr_extra_state_attributes_attr_extra_state_attributes = {}
65  super().async_write_ha_state()
list[RadarrEvent] async_get_events(self, HomeAssistant hass, datetime start_date, datetime end_date)
Definition: calendar.py:52
None async_setup_entry(HomeAssistant hass, RadarrConfigEntry entry, AddEntitiesCallback async_add_entities)
Definition: calendar.py:26