diff --git a/homeassistant/components/jewish_calendar/const.py b/homeassistant/components/jewish_calendar/const.py index 4af76a8927b..0d5455fcd86 100644 --- a/homeassistant/components/jewish_calendar/const.py +++ b/homeassistant/components/jewish_calendar/const.py @@ -2,6 +2,9 @@ DOMAIN = "jewish_calendar" +ATTR_DATE = "date" +ATTR_NUSACH = "nusach" + CONF_DIASPORA = "diaspora" CONF_CANDLE_LIGHT_MINUTES = "candle_lighting_minutes_before_sunset" CONF_HAVDALAH_OFFSET_MINUTES = "havdalah_minutes_after_sunset" @@ -11,3 +14,5 @@ DEFAULT_CANDLE_LIGHT = 18 DEFAULT_DIASPORA = False DEFAULT_HAVDALAH_OFFSET_MINUTES = 0 DEFAULT_LANGUAGE = "english" + +SERVICE_COUNT_OMER = "count_omer" diff --git a/homeassistant/components/jewish_calendar/service.py b/homeassistant/components/jewish_calendar/service.py index 78855864c6c..faf28e99b1e 100644 --- a/homeassistant/components/jewish_calendar/service.py +++ b/homeassistant/components/jewish_calendar/service.py @@ -1,6 +1,7 @@ """Services for Jewish Calendar.""" import datetime +from typing import cast from hdate import HebrewDate from hdate.omer import Nusach, Omer @@ -14,17 +15,20 @@ from homeassistant.core import ( ServiceResponse, SupportsResponse, ) -from homeassistant.helpers import config_validation as cv +from homeassistant.helpers.selector import LanguageSelector, LanguageSelectorConfig -from .const import DOMAIN +from .const import ATTR_DATE, ATTR_NUSACH, DOMAIN, SERVICE_COUNT_OMER +SUPPORTED_LANGUAGES = {"en": "english", "fr": "french", "he": "hebrew"} OMER_SCHEMA = vol.Schema( { - vol.Required("date", default=datetime.date.today): datetime.date, - vol.Required("nusach", default="sfarad"): vol.In( + vol.Required(ATTR_DATE, default=datetime.date.today): datetime.date, + vol.Required(ATTR_NUSACH, default="sfarad"): vol.In( [nusach.name.lower() for nusach in Nusach] ), - vol.Required(CONF_LANGUAGE, default="he"): cv.language, + vol.Required(CONF_LANGUAGE, default="he"): LanguageSelector( + LanguageSelectorConfig(languages=list(SUPPORTED_LANGUAGES.keys())) + ), } ) @@ -36,15 +40,10 @@ def async_setup_services(hass: HomeAssistant) -> None: """Return the Omer blessing for a given date.""" hebrew_date = HebrewDate.from_gdate(call.data["date"]) nusach = Nusach[call.data["nusach"].upper()] - _language = call.data[CONF_LANGUAGE] # Currently Omer only supports Hebrew, English, and French and requires # the full language name - language: Language = "hebrew" - if _language == "en": - language = "english" - elif _language == "fr": - language = "french" + language = cast(Language, SUPPORTED_LANGUAGES[call.data[CONF_LANGUAGE]]) omer = Omer(date=hebrew_date, nusach=nusach, language=language) return { @@ -57,7 +56,7 @@ def async_setup_services(hass: HomeAssistant) -> None: hass.services.async_register( DOMAIN, - "count_omer", + SERVICE_COUNT_OMER, get_omer_count, schema=OMER_SCHEMA, supports_response=SupportsResponse.ONLY,