mirror of
https://github.com/home-assistant/core.git
synced 2025-08-08 07:05:07 +02:00
Fix constraints on nusach and language + Make independent of config_entry
This commit is contained in:
@@ -17,6 +17,7 @@ from homeassistant.const import (
|
||||
)
|
||||
from homeassistant.core import HomeAssistant, callback
|
||||
from homeassistant.helpers import entity_registry as er
|
||||
from homeassistant.helpers.typing import ConfigType
|
||||
|
||||
from .const import (
|
||||
CONF_CANDLE_LIGHT_MINUTES,
|
||||
@@ -34,6 +35,13 @@ _LOGGER = logging.getLogger(__name__)
|
||||
PLATFORMS: list[Platform] = [Platform.BINARY_SENSOR, Platform.SENSOR]
|
||||
|
||||
|
||||
async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool:
|
||||
"""Set up the Jewish Calendar service."""
|
||||
async_setup_services(hass)
|
||||
|
||||
return True
|
||||
|
||||
|
||||
async def async_setup_entry(
|
||||
hass: HomeAssistant, config_entry: JewishCalendarConfigEntry
|
||||
) -> bool:
|
||||
@@ -68,7 +76,6 @@ async def async_setup_entry(
|
||||
)
|
||||
|
||||
await hass.config_entries.async_forward_entry_setups(config_entry, PLATFORMS)
|
||||
async_setup_services(hass, config_entry)
|
||||
|
||||
async def update_listener(
|
||||
hass: HomeAssistant, config_entry: JewishCalendarConfigEntry
|
||||
|
@@ -4,37 +4,48 @@ import datetime
|
||||
|
||||
from hdate import HebrewDate
|
||||
from hdate.omer import Nusach, Omer
|
||||
from hdate.translator import Language
|
||||
import voluptuous as vol
|
||||
|
||||
from homeassistant.const import CONF_LANGUAGE
|
||||
from homeassistant.core import (
|
||||
HomeAssistant,
|
||||
ServiceCall,
|
||||
ServiceResponse,
|
||||
SupportsResponse,
|
||||
)
|
||||
from homeassistant.helpers import config_validation as cv
|
||||
|
||||
from . import JewishCalendarConfigEntry
|
||||
from .const import DOMAIN
|
||||
|
||||
OMER_SCHEMA = vol.Schema(
|
||||
{
|
||||
vol.Required("date", default=datetime.date.today): datetime.date,
|
||||
vol.Required("nusach", default="sfarad"): str,
|
||||
vol.Required("language"): str,
|
||||
vol.Required("nusach", default="sfarad"): vol.In(
|
||||
[nusach.name.lower() for nusach in Nusach]
|
||||
),
|
||||
vol.Required(CONF_LANGUAGE, default="he"): cv.language,
|
||||
}
|
||||
)
|
||||
|
||||
|
||||
def async_setup_services(
|
||||
hass: HomeAssistant, config_entry: JewishCalendarConfigEntry
|
||||
) -> None:
|
||||
def async_setup_services(hass: HomeAssistant) -> None:
|
||||
"""Set up the Jewish Calendar services."""
|
||||
|
||||
async def get_omer_count(call: ServiceCall) -> ServiceResponse:
|
||||
"""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.get("language", config_entry.runtime_data.language)
|
||||
_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"
|
||||
|
||||
omer = Omer(date=hebrew_date, nusach=nusach, language=language)
|
||||
return {
|
||||
"message": str(omer.count_str()),
|
||||
|
@@ -14,24 +14,18 @@ from tests.common import MockConfigEntry
|
||||
@pytest.mark.parametrize(
|
||||
("test_date", "nusach", "language", "expected"),
|
||||
[
|
||||
pytest.param(
|
||||
dt.date(2025, 3, 20),
|
||||
"sfarad",
|
||||
"hebrew",
|
||||
"",
|
||||
id="no_blessing",
|
||||
),
|
||||
pytest.param(dt.date(2025, 3, 20), "sfarad", "he", "", id="no_blessing"),
|
||||
pytest.param(
|
||||
dt.date(2025, 5, 20),
|
||||
"ashkenaz",
|
||||
"hebrew",
|
||||
"he",
|
||||
"היום שבעה ושלושים יום שהם חמישה שבועות ושני ימים בעומר",
|
||||
id="ahskenaz-hebrew",
|
||||
),
|
||||
pytest.param(
|
||||
dt.date(2025, 5, 20),
|
||||
"sfarad",
|
||||
"english",
|
||||
"en",
|
||||
"Today is the thirty-seventh day, which are five weeks and two days of the Omer",
|
||||
id="sefarad-english",
|
||||
),
|
||||
|
Reference in New Issue
Block a user