From 4d0bbd1d8e87bc3ca48f11ebfc82de4223cc7a60 Mon Sep 17 00:00:00 2001 From: Petr Polezhaev Date: Tue, 29 Sep 2026 14:37:52 +0300 Subject: [PATCH] =?UTF-8?q?ha(H4):=20=D0=B7=D0=B0=D1=89=D0=B8=D1=82=D0=B0?= =?UTF-8?q?=20=5Fpreview=5Fschema=20=D0=BE=D1=82=20=D0=BF=D0=BE=D0=B2?= =?UTF-8?q?=D1=80=D0=B5=D0=B6=D0=B4=D1=91=D0=BD=D0=BD=D1=8B=D1=85=20overri?= =?UTF-8?q?des=20=D0=B2=20storage?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- custom_components/fglair/config_flow.py | 39 +++++++++++++++++-------- 1 file changed, 27 insertions(+), 12 deletions(-) diff --git a/custom_components/fglair/config_flow.py b/custom_components/fglair/config_flow.py index b923b16..fdf9d20 100644 --- a/custom_components/fglair/config_flow.py +++ b/custom_components/fglair/config_flow.py @@ -101,14 +101,29 @@ def _import_schema() -> vol.Schema: ) +def _spec_int(spec: dict[str, Any], key: str, default: int) -> int: + try: + return int(spec.get(key, default)) + except (TypeError, ValueError): + return default + + def _preview_schema(data: dict[str, Any]) -> vol.Schema: template = Template[str(data.get(CONF_TEMPLATE, "A"))] - spec = (data.get(CONF_OVERRIDES) or {}).get( - Prop.ADJUST_TEMPERATURE.name.lower(), {} + overrides = data.get(CONF_OVERRIDES) + spec = ( + overrides.get(Prop.ADJUST_TEMPERATURE.name.lower(), {}) + if isinstance(overrides, dict) + else {} ) - temp_min = int(spec.get("min", TEMP_MIN_TENTHS)) - temp_max = int(spec.get("max", TEMP_MAX_TENTHS)) - step = int(data.get(CONF_TEMP_STEP) or TEMP_STEP_TENTHS[template]) + if not isinstance(spec, dict): + spec = {} + temp_min = _spec_int(spec, "min", TEMP_MIN_TENTHS) + temp_max = _spec_int(spec, "max", TEMP_MAX_TENTHS) + try: + step = int(data.get(CONF_TEMP_STEP) or TEMP_STEP_TENTHS[template]) + except (TypeError, ValueError): + step = TEMP_STEP_TENTHS[template] return vol.Schema( { vol.Required(CONF_TEMPLATE, default=template.name): vol.In( @@ -123,14 +138,14 @@ def _preview_schema(data: dict[str, Any]) -> vol.Schema: vol.Required(CONF_TEMP_STEP, default=step / 10): vol.All( vol.Coerce(float), vol.Range(min=0.1, max=5.0) ), - vol.Required(CONF_TEMP_NUM, default=int(spec.get("num", 1))): vol.All( - int, vol.Range(min=1, max=1000) - ), - vol.Required(CONF_TEMP_DEN, default=int(spec.get("den", 1))): vol.All( - int, vol.Range(min=1, max=1000) - ), vol.Required( - CONF_TEMP_OFFSET, default=int(spec.get("offset", 0)) + CONF_TEMP_NUM, default=_spec_int(spec, "num", 1) + ): vol.All(int, vol.Range(min=1, max=1000)), + vol.Required( + CONF_TEMP_DEN, default=_spec_int(spec, "den", 1) + ): vol.All(int, vol.Range(min=1, max=1000)), + vol.Required( + CONF_TEMP_OFFSET, default=_spec_int(spec, "offset", 0) ): vol.All(int, vol.Range(min=-1000, max=1000)), } )