Fix menu in knx config flow (#102168)
* Fix menu in knx config flow * Update tests * Fix strings.json * Rename new menu steps for readabiltiy --------- Co-authored-by: Matthias Alphart <farmio@alphart.net>pull/102179/head
parent
60c1a8d56f
commit
e6895b5738
|
@ -237,10 +237,7 @@ class KNXCommonFlow(ABC, FlowHandler):
|
|||
tunnel_endpoint_ia=None,
|
||||
)
|
||||
if connection_type == CONF_KNX_TUNNELING_TCP_SECURE:
|
||||
return self.async_show_menu(
|
||||
step_id="secure_key_source",
|
||||
menu_options=["secure_knxkeys", "secure_tunnel_manual"],
|
||||
)
|
||||
return await self.async_step_secure_key_source_menu_tunnel()
|
||||
self.new_title = f"Tunneling @ {self._selected_tunnel}"
|
||||
return self.finish_flow()
|
||||
|
||||
|
@ -317,10 +314,7 @@ class KNXCommonFlow(ABC, FlowHandler):
|
|||
)
|
||||
|
||||
if selected_tunnelling_type == CONF_KNX_TUNNELING_TCP_SECURE:
|
||||
return self.async_show_menu(
|
||||
step_id="secure_key_source",
|
||||
menu_options=["secure_knxkeys", "secure_tunnel_manual"],
|
||||
)
|
||||
return await self.async_step_secure_key_source_menu_tunnel()
|
||||
self.new_title = (
|
||||
"Tunneling "
|
||||
f"{'UDP' if selected_tunnelling_type == CONF_KNX_TUNNELING else 'TCP'} "
|
||||
|
@ -680,10 +674,7 @@ class KNXCommonFlow(ABC, FlowHandler):
|
|||
)
|
||||
if connection_type == CONF_KNX_ROUTING_SECURE:
|
||||
self.new_title = f"Secure Routing as {_individual_address}"
|
||||
return self.async_show_menu(
|
||||
step_id="secure_key_source",
|
||||
menu_options=["secure_knxkeys", "secure_routing_manual"],
|
||||
)
|
||||
return await self.async_step_secure_key_source_menu_routing()
|
||||
self.new_title = f"Routing as {_individual_address}"
|
||||
return self.finish_flow()
|
||||
|
||||
|
@ -712,6 +703,24 @@ class KNXCommonFlow(ABC, FlowHandler):
|
|||
step_id="routing", data_schema=vol.Schema(fields), errors=errors
|
||||
)
|
||||
|
||||
async def async_step_secure_key_source_menu_tunnel(
|
||||
self, user_input: dict | None = None
|
||||
) -> FlowResult:
|
||||
"""Show the key source menu."""
|
||||
return self.async_show_menu(
|
||||
step_id="secure_key_source_menu_tunnel",
|
||||
menu_options=["secure_knxkeys", "secure_tunnel_manual"],
|
||||
)
|
||||
|
||||
async def async_step_secure_key_source_menu_routing(
|
||||
self, user_input: dict | None = None
|
||||
) -> FlowResult:
|
||||
"""Show the key source menu."""
|
||||
return self.async_show_menu(
|
||||
step_id="secure_key_source_menu_routing",
|
||||
menu_options=["secure_knxkeys", "secure_routing_manual"],
|
||||
)
|
||||
|
||||
|
||||
class KNXConfigFlow(KNXCommonFlow, ConfigFlow, domain=DOMAIN):
|
||||
"""Handle a KNX config flow."""
|
||||
|
@ -770,7 +779,7 @@ class KNXOptionsFlow(KNXCommonFlow, OptionsFlow):
|
|||
) -> FlowResult:
|
||||
"""Manage KNX options."""
|
||||
return self.async_show_menu(
|
||||
step_id="options_init",
|
||||
step_id="init",
|
||||
menu_options=[
|
||||
"connection_type",
|
||||
"communication_settings",
|
||||
|
|
|
@ -32,12 +32,19 @@
|
|||
"local_ip": "Local IP or interface name used for the connection from Home Assistant. Leave blank to use auto-discovery."
|
||||
}
|
||||
},
|
||||
"secure_key_source": {
|
||||
"secure_key_source_menu_tunnel": {
|
||||
"title": "KNX IP-Secure",
|
||||
"description": "Select how you want to configure KNX/IP Secure.",
|
||||
"menu_options": {
|
||||
"secure_knxkeys": "Use a `.knxkeys` file containing IP secure keys",
|
||||
"secure_tunnel_manual": "Configure IP secure credentials manually",
|
||||
"secure_tunnel_manual": "Configure IP secure credentials manually"
|
||||
}
|
||||
},
|
||||
"secure_key_source_menu_routing": {
|
||||
"title": "[%key:component::knx::config::step::secure_key_source_menu_tunnel::title%]",
|
||||
"description": "[%key:component::knx::config::step::secure_key_source_menu_tunnel::description%]",
|
||||
"menu_options": {
|
||||
"secure_knxkeys": "[%key:component::knx::config::step::secure_key_source_menu_tunnel::menu_options::secure_knxkeys%]",
|
||||
"secure_routing_manual": "Configure IP secure backbone key manually"
|
||||
}
|
||||
},
|
||||
|
@ -121,7 +128,7 @@
|
|||
},
|
||||
"options": {
|
||||
"step": {
|
||||
"options_init": {
|
||||
"init": {
|
||||
"title": "KNX Settings",
|
||||
"menu_options": {
|
||||
"connection_type": "Configure KNX interface",
|
||||
|
@ -130,7 +137,7 @@
|
|||
}
|
||||
},
|
||||
"communication_settings": {
|
||||
"title": "[%key:component::knx::options::step::options_init::menu_options::communication_settings%]",
|
||||
"title": "[%key:component::knx::options::step::init::menu_options::communication_settings%]",
|
||||
"data": {
|
||||
"state_updater": "State updater",
|
||||
"rate_limit": "Rate limit",
|
||||
|
@ -173,13 +180,20 @@
|
|||
"local_ip": "[%key:component::knx::config::step::manual_tunnel::data_description::local_ip%]"
|
||||
}
|
||||
},
|
||||
"secure_key_source": {
|
||||
"title": "[%key:component::knx::config::step::secure_key_source::title%]",
|
||||
"description": "[%key:component::knx::config::step::secure_key_source::description%]",
|
||||
"secure_key_source_menu_tunnel": {
|
||||
"title": "[%key:component::knx::config::step::secure_key_source_menu_tunnel::title%]",
|
||||
"description": "[%key:component::knx::config::step::secure_key_source_menu_tunnel::description%]",
|
||||
"menu_options": {
|
||||
"secure_knxkeys": "[%key:component::knx::config::step::secure_key_source::menu_options::secure_knxkeys%]",
|
||||
"secure_tunnel_manual": "[%key:component::knx::config::step::secure_key_source::menu_options::secure_tunnel_manual%]",
|
||||
"secure_routing_manual": "[%key:component::knx::config::step::secure_key_source::menu_options::secure_routing_manual%]"
|
||||
"secure_knxkeys": "[%key:component::knx::config::step::secure_key_source_menu_tunnel::menu_options::secure_knxkeys%]",
|
||||
"secure_tunnel_manual": "[%key:component::knx::config::step::secure_key_source_menu_tunnel::menu_options::secure_tunnel_manual%]"
|
||||
}
|
||||
},
|
||||
"secure_key_source_menu_routing": {
|
||||
"title": "[%key:component::knx::config::step::secure_key_source_menu_routing::title%]",
|
||||
"description": "[%key:component::knx::config::step::secure_key_source_menu_routing::description%]",
|
||||
"menu_options": {
|
||||
"secure_knxkeys": "[%key:component::knx::config::step::secure_key_source_menu_routing::menu_options::secure_knxkeys%]",
|
||||
"secure_routing_manual": "[%key:component::knx::config::step::secure_key_source_menu_routing::menu_options::secure_routing_manual%]"
|
||||
}
|
||||
},
|
||||
"secure_knxkeys": {
|
||||
|
|
|
@ -302,7 +302,7 @@ async def test_routing_secure_manual_setup(
|
|||
},
|
||||
)
|
||||
assert result3["type"] == FlowResultType.MENU
|
||||
assert result3["step_id"] == "secure_key_source"
|
||||
assert result3["step_id"] == "secure_key_source_menu_routing"
|
||||
|
||||
result4 = await hass.config_entries.flow.async_configure(
|
||||
result3["flow_id"],
|
||||
|
@ -392,7 +392,7 @@ async def test_routing_secure_keyfile(
|
|||
},
|
||||
)
|
||||
assert result3["type"] == FlowResultType.MENU
|
||||
assert result3["step_id"] == "secure_key_source"
|
||||
assert result3["step_id"] == "secure_key_source_menu_routing"
|
||||
|
||||
result4 = await hass.config_entries.flow.async_configure(
|
||||
result3["flow_id"],
|
||||
|
@ -948,7 +948,7 @@ async def _get_menu_step_secure_tunnel(hass: HomeAssistant) -> FlowResult:
|
|||
{CONF_KNX_GATEWAY: str(gateway)},
|
||||
)
|
||||
assert result3["type"] == FlowResultType.MENU
|
||||
assert result3["step_id"] == "secure_key_source"
|
||||
assert result3["step_id"] == "secure_key_source_menu_tunnel"
|
||||
return result3
|
||||
|
||||
|
||||
|
@ -1008,7 +1008,7 @@ async def test_get_secure_menu_step_manual_tunnelling(
|
|||
},
|
||||
)
|
||||
assert result3["type"] == FlowResultType.MENU
|
||||
assert result3["step_id"] == "secure_key_source"
|
||||
assert result3["step_id"] == "secure_key_source_menu_tunnel"
|
||||
|
||||
|
||||
async def test_configure_secure_tunnel_manual(hass: HomeAssistant, knx_setup) -> None:
|
||||
|
@ -1272,7 +1272,7 @@ async def test_options_flow_secure_manual_to_keyfile(
|
|||
{CONF_KNX_GATEWAY: str(gateway)},
|
||||
)
|
||||
assert result3["type"] == FlowResultType.MENU
|
||||
assert result3["step_id"] == "secure_key_source"
|
||||
assert result3["step_id"] == "secure_key_source_menu_tunnel"
|
||||
|
||||
result4 = await hass.config_entries.options.async_configure(
|
||||
result3["flow_id"],
|
||||
|
|
Loading…
Reference in New Issue