Home Assistant Unofficial Reference 2024.12.1
calendar.py
Go to the documentation of this file.
1 """Demo platform that has two fake calendars."""
2 
3 from __future__ import annotations
4 
5 import datetime
6 
7 from homeassistant.components.calendar import CalendarEntity, CalendarEvent
8 from homeassistant.config_entries import ConfigEntry
9 from homeassistant.core import HomeAssistant
10 from homeassistant.helpers.entity_platform import AddEntitiesCallback
11 import homeassistant.util.dt as dt_util
12 
13 
15  hass: HomeAssistant,
16  config_entry: ConfigEntry,
17  async_add_entities: AddEntitiesCallback,
18 ) -> None:
19  """Set up the Demo Calendar config entry."""
21  [
22  DemoCalendar(calendar_data_future(), "Calendar 1"),
23  DemoCalendar(calendar_data_current(), "Calendar 2"),
24  ]
25  )
26 
27 
28 def calendar_data_future() -> CalendarEvent:
29  """Representation of a Demo Calendar for a future event."""
30  half_hour_from_now = dt_util.now() + datetime.timedelta(minutes=30)
31  return CalendarEvent(
32  start=half_hour_from_now,
33  end=half_hour_from_now + datetime.timedelta(minutes=60),
34  summary="Future Event",
35  description="Future Description",
36  location="Future Location",
37  )
38 
39 
40 def calendar_data_current() -> CalendarEvent:
41  """Representation of a Demo Calendar for a current event."""
42  middle_of_event = dt_util.now() - datetime.timedelta(minutes=30)
43  return CalendarEvent(
44  start=middle_of_event,
45  end=middle_of_event + datetime.timedelta(minutes=60),
46  summary="Current Event",
47  )
48 
49 
51  """Representation of a Demo Calendar element."""
52 
53  def __init__(self, event: CalendarEvent, name: str) -> None:
54  """Initialize demo calendar."""
55  self._event_event = event
56  self._attr_name_attr_name = name
57 
58  @property
59  def event(self) -> CalendarEvent:
60  """Return the next upcoming event."""
61  return self._event_event
62 
63  async def async_get_events(
64  self,
65  hass: HomeAssistant,
66  start_date: datetime.datetime,
67  end_date: datetime.datetime,
68  ) -> list[CalendarEvent]:
69  """Return calendar events within a datetime range."""
70  assert start_date < end_date
71  if self._event_event.start_datetime_local >= end_date:
72  return []
73  if self._event_event.end_datetime_local < start_date:
74  return []
75  return [self._event_event]
None __init__(self, CalendarEvent event, str name)
Definition: calendar.py:53
list[CalendarEvent] async_get_events(self, HomeAssistant hass, datetime.datetime start_date, datetime.datetime end_date)
Definition: calendar.py:68
None async_setup_entry(HomeAssistant hass, ConfigEntry config_entry, AddEntitiesCallback async_add_entities)
Definition: calendar.py:18