Fix bug in caldav and avoid unnecessary copy of dataclass (#72922)

This commit is contained in:
Allen Porter 2022-06-02 08:40:13 -07:00 committed by GitHub
parent d3b1896a06
commit 8c50c7fbd4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -1,7 +1,6 @@
"""Support for WebDav Calendar.""" """Support for WebDav Calendar."""
from __future__ import annotations from __future__ import annotations
import copy
from datetime import datetime, timedelta from datetime import datetime, timedelta
import logging import logging
import re import re
@ -143,15 +142,13 @@ class WebDavCalendarEntity(CalendarEntity):
def update(self): def update(self):
"""Update event data.""" """Update event data."""
self.data.update() self.data.update()
event = copy.deepcopy(self.data.event) self._event = self.data.event
if event is None:
self._event = event
return
(summary, offset) = extract_offset(event.summary, OFFSET)
event.summary = summary
self._event = event
self._attr_extra_state_attributes = { self._attr_extra_state_attributes = {
"offset_reached": is_offset_reached(event.start_datetime_local, offset) "offset_reached": is_offset_reached(
self._event.start_datetime_local, self.data.offset
)
if self._event
else False
} }
@ -165,6 +162,7 @@ class WebDavCalendarData:
self.include_all_day = include_all_day self.include_all_day = include_all_day
self.search = search self.search = search
self.event = None self.event = None
self.offset = None
async def async_get_events( async def async_get_events(
self, hass: HomeAssistant, start_date: datetime, end_date: datetime self, hass: HomeAssistant, start_date: datetime, end_date: datetime
@ -264,13 +262,15 @@ class WebDavCalendarData:
return return
# Populate the entity attributes with the event values # Populate the entity attributes with the event values
(summary, offset) = extract_offset(vevent.summary.value, OFFSET)
self.event = CalendarEvent( self.event = CalendarEvent(
summary=vevent.summary.value, summary=summary,
start=vevent.dtstart.value, start=vevent.dtstart.value,
end=self.get_end_date(vevent), end=self.get_end_date(vevent),
location=self.get_attr_value(vevent, "location"), location=self.get_attr_value(vevent, "location"),
description=self.get_attr_value(vevent, "description"), description=self.get_attr_value(vevent, "description"),
) )
self.offset = offset
@staticmethod @staticmethod
def is_matching(vevent, search): def is_matching(vevent, search):