From a29e4a5f02074813f5f3a1bf2ba60f6a7ff23665 Mon Sep 17 00:00:00 2001 From: G Johansson Date: Sun, 20 Aug 2023 22:30:43 +0200 Subject: [PATCH] Move Workday failures to __init__ (#98651) Workday failures in init --- homeassistant/components/workday/__init__.py | 15 ++++++++++++++- homeassistant/components/workday/binary_sensor.py | 8 -------- 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/homeassistant/components/workday/__init__.py b/homeassistant/components/workday/__init__.py index d1ad8456bab..d8d31451567 100644 --- a/homeassistant/components/workday/__init__.py +++ b/homeassistant/components/workday/__init__.py @@ -1,15 +1,28 @@ """Sensor to indicate whether the current day is a workday.""" from __future__ import annotations +from holidays import list_supported_countries + from homeassistant.config_entries import ConfigEntry from homeassistant.core import HomeAssistant +from homeassistant.exceptions import ConfigEntryError -from .const import PLATFORMS +from .const import CONF_COUNTRY, CONF_PROVINCE, LOGGER, PLATFORMS async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: """Set up Workday from a config entry.""" + country: str = entry.options[CONF_COUNTRY] + province: str | None = entry.options.get(CONF_PROVINCE) + if country and country not in list_supported_countries(): + LOGGER.error("There is no country %s", country) + raise ConfigEntryError("Selected country is not valid") + + if province and province not in list_supported_countries()[country]: + LOGGER.error("There is no subdivision %s in country %s", province, country) + raise ConfigEntryError("Selected province is not valid") + entry.async_on_unload(entry.add_update_listener(async_update_listener)) await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS) diff --git a/homeassistant/components/workday/binary_sensor.py b/homeassistant/components/workday/binary_sensor.py index 4c383543125..6b6dfbffa5d 100644 --- a/homeassistant/components/workday/binary_sensor.py +++ b/homeassistant/components/workday/binary_sensor.py @@ -129,14 +129,6 @@ async def async_setup_entry( workdays: list[str] = entry.options[CONF_WORKDAYS] year: int = (dt_util.now() + timedelta(days=days_offset)).year - if country and country not in list_supported_countries(): - LOGGER.error("There is no country %s", country) - return - - if province and province not in list_supported_countries()[country]: - LOGGER.error("There is no subdivision %s in country %s", province, country) - return - obj_holidays: HolidayBase = country_holidays(country, subdiv=province, years=year) # Add custom holidays