Improve local calendar input validation error handling (#83563)

This commit is contained in:
Allen Porter
2022-12-08 13:44:45 -08:00
committed by Paulus Schoutsen
parent b548be35bc
commit 5994dd558b

View File

@@ -11,6 +11,8 @@ from ical.calendar_stream import IcsCalendarStream
from ical.event import Event from ical.event import Event
from ical.store import EventStore from ical.store import EventStore
from ical.types import Range, Recur from ical.types import Range, Recur
from pydantic import ValidationError
import voluptuous as vol
from homeassistant.components.calendar import ( from homeassistant.components.calendar import (
EVENT_DESCRIPTION, EVENT_DESCRIPTION,
@@ -102,14 +104,19 @@ class LocalCalendarEntity(CalendarEntity):
async def async_create_event(self, **kwargs: Any) -> None: async def async_create_event(self, **kwargs: Any) -> None:
"""Add a new event to calendar.""" """Add a new event to calendar."""
event = Event.parse_obj( event_data = {
{ EVENT_SUMMARY: kwargs[EVENT_SUMMARY],
EVENT_SUMMARY: kwargs[EVENT_SUMMARY], EVENT_START: kwargs[EVENT_START],
EVENT_START: kwargs[EVENT_START], EVENT_END: kwargs[EVENT_END],
EVENT_END: kwargs[EVENT_END], EVENT_DESCRIPTION: kwargs.get(EVENT_DESCRIPTION),
EVENT_DESCRIPTION: kwargs.get(EVENT_DESCRIPTION), }
} try:
) event = Event.parse_obj(event_data)
except ValidationError as err:
_LOGGER.debug(
"Error parsing event input fields: %s (%s)", event_data, str(err)
)
raise vol.Invalid("Error parsing event input fields") from err
if rrule := kwargs.get(EVENT_RRULE): if rrule := kwargs.get(EVENT_RRULE):
event.rrule = Recur.from_rrule(rrule) event.rrule = Recur.from_rrule(rrule)