mirror of
https://github.com/home-assistant/core.git
synced 2025-07-16 09:47:13 +00:00
Ensure suggested values are added to section schema in data entry fow (#141227)
This commit is contained in:
parent
842356877e
commit
93010ab5c9
@ -17,6 +17,7 @@ from homeassistant.config_entries import (
|
|||||||
SubentryFlowResult,
|
SubentryFlowResult,
|
||||||
)
|
)
|
||||||
from homeassistant.core import callback
|
from homeassistant.core import callback
|
||||||
|
from homeassistant.helpers import config_validation as cv
|
||||||
|
|
||||||
from . import DOMAIN
|
from . import DOMAIN
|
||||||
|
|
||||||
@ -80,30 +81,30 @@ class OptionsFlowHandler(OptionsFlow):
|
|||||||
if user_input is not None:
|
if user_input is not None:
|
||||||
return self.async_create_entry(data=self.config_entry.options | user_input)
|
return self.async_create_entry(data=self.config_entry.options | user_input)
|
||||||
|
|
||||||
return self.async_show_form(
|
data_schema = vol.Schema(
|
||||||
step_id="options_1",
|
{
|
||||||
data_schema=vol.Schema(
|
vol.Required("section_1"): data_entry_flow.section(
|
||||||
{
|
vol.Schema(
|
||||||
vol.Required("section_1"): data_entry_flow.section(
|
{
|
||||||
vol.Schema(
|
vol.Optional(
|
||||||
{
|
CONF_BOOLEAN,
|
||||||
vol.Optional(
|
default=self.config_entry.options.get(
|
||||||
CONF_BOOLEAN,
|
CONF_BOOLEAN, False
|
||||||
default=self.config_entry.options.get(
|
),
|
||||||
CONF_BOOLEAN, False
|
): bool,
|
||||||
),
|
vol.Optional(CONF_INT): cv.positive_int,
|
||||||
): bool,
|
}
|
||||||
vol.Optional(
|
|
||||||
CONF_INT,
|
|
||||||
default=self.config_entry.options.get(CONF_INT, 10),
|
|
||||||
): int,
|
|
||||||
}
|
|
||||||
),
|
|
||||||
{"collapsed": False},
|
|
||||||
),
|
),
|
||||||
}
|
{"collapsed": False},
|
||||||
),
|
),
|
||||||
|
}
|
||||||
)
|
)
|
||||||
|
self.add_suggested_values_to_schema(
|
||||||
|
data_schema,
|
||||||
|
{"section_1": {"int": self.config_entry.options.get(CONF_INT, 10)}},
|
||||||
|
)
|
||||||
|
|
||||||
|
return self.async_show_form(step_id="options_1", data_schema=data_schema)
|
||||||
|
|
||||||
|
|
||||||
class SubentryFlowHandler(ConfigSubentryFlow):
|
class SubentryFlowHandler(ConfigSubentryFlow):
|
||||||
|
@ -657,6 +657,19 @@ class FlowHandler(Generic[_FlowContextT, _FlowResultT, _HandlerT]):
|
|||||||
):
|
):
|
||||||
continue
|
continue
|
||||||
|
|
||||||
|
# Process the section schema options
|
||||||
|
if (
|
||||||
|
suggested_values is not None
|
||||||
|
and isinstance(val, section)
|
||||||
|
and key in suggested_values
|
||||||
|
):
|
||||||
|
new_section_key = copy.copy(key)
|
||||||
|
schema[new_section_key] = val
|
||||||
|
val.schema = self.add_suggested_values_to_schema(
|
||||||
|
copy.deepcopy(val.schema), suggested_values[key]
|
||||||
|
)
|
||||||
|
continue
|
||||||
|
|
||||||
new_key = key
|
new_key = key
|
||||||
if (
|
if (
|
||||||
suggested_values
|
suggested_values
|
||||||
|
@ -96,6 +96,15 @@ async def test_options_flow(hass: HomeAssistant) -> None:
|
|||||||
assert result["type"] is FlowResultType.FORM
|
assert result["type"] is FlowResultType.FORM
|
||||||
assert result["step_id"] == "options_1"
|
assert result["step_id"] == "options_1"
|
||||||
|
|
||||||
|
section_marker, section_schema = list(result["data_schema"].schema.items())[0]
|
||||||
|
assert section_marker == "section_1"
|
||||||
|
section_schema_markers = list(section_schema.schema.schema)
|
||||||
|
assert len(section_schema_markers) == 2
|
||||||
|
assert section_schema_markers[0] == "bool"
|
||||||
|
assert section_schema_markers[0].description is None
|
||||||
|
assert section_schema_markers[1] == "int"
|
||||||
|
assert section_schema_markers[1].description == {"suggested_value": 10}
|
||||||
|
|
||||||
result = await hass.config_entries.options.async_configure(
|
result = await hass.config_entries.options.async_configure(
|
||||||
result["flow_id"],
|
result["flow_id"],
|
||||||
user_input={"section_1": {"bool": True, "int": 15}},
|
user_input={"section_1": {"bool": True, "int": 15}},
|
||||||
|
Loading…
x
Reference in New Issue
Block a user