mirror of
https://github.com/home-assistant/core.git
synced 2025-07-17 02:07:09 +00:00
Fix here_travel_time config_flow import (#72313)
* Handle import of entity_namespace * Update homeassistant/components/here_travel_time/config_flow.py Co-authored-by: Allen Porter <allen.porter@gmail.com> * Fix mypy Co-authored-by: Allen Porter <allen.porter@gmail.com>
This commit is contained in:
parent
7df7e33d17
commit
7649adde5f
@ -8,7 +8,13 @@ from herepy import HEREError, InvalidCredentialsError, RouteMode, RoutingApi
|
|||||||
import voluptuous as vol
|
import voluptuous as vol
|
||||||
|
|
||||||
from homeassistant import config_entries
|
from homeassistant import config_entries
|
||||||
from homeassistant.const import CONF_API_KEY, CONF_MODE, CONF_NAME, CONF_UNIT_SYSTEM
|
from homeassistant.const import (
|
||||||
|
CONF_API_KEY,
|
||||||
|
CONF_ENTITY_NAMESPACE,
|
||||||
|
CONF_MODE,
|
||||||
|
CONF_NAME,
|
||||||
|
CONF_UNIT_SYSTEM,
|
||||||
|
)
|
||||||
from homeassistant.core import callback
|
from homeassistant.core import callback
|
||||||
from homeassistant.data_entry_flow import FlowResult
|
from homeassistant.data_entry_flow import FlowResult
|
||||||
import homeassistant.helpers.config_validation as cv
|
import homeassistant.helpers.config_validation as cv
|
||||||
@ -231,9 +237,7 @@ class HERETravelTimeConfigFlow(config_entries.ConfigFlow, domain=DOMAIN):
|
|||||||
)
|
)
|
||||||
return self.async_show_form(step_id="destination_entity", data_schema=schema)
|
return self.async_show_form(step_id="destination_entity", data_schema=schema)
|
||||||
|
|
||||||
async def async_step_import(
|
async def async_step_import(self, user_input: dict[str, Any]) -> FlowResult:
|
||||||
self, user_input: dict[str, Any] | None = None
|
|
||||||
) -> FlowResult:
|
|
||||||
"""Import from configuration.yaml."""
|
"""Import from configuration.yaml."""
|
||||||
options: dict[str, Any] = {}
|
options: dict[str, Any] = {}
|
||||||
user_input, options = self._transform_import_input(user_input)
|
user_input, options = self._transform_import_input(user_input)
|
||||||
@ -249,39 +253,47 @@ class HERETravelTimeConfigFlow(config_entries.ConfigFlow, domain=DOMAIN):
|
|||||||
)
|
)
|
||||||
|
|
||||||
def _transform_import_input(
|
def _transform_import_input(
|
||||||
self, user_input
|
self, import_input: dict[str, Any]
|
||||||
) -> tuple[dict[str, Any], dict[str, Any]]:
|
) -> tuple[dict[str, Any], dict[str, Any]]:
|
||||||
"""Transform platform schema input to new model."""
|
"""Transform platform schema input to new model."""
|
||||||
options: dict[str, Any] = {}
|
options: dict[str, Any] = {}
|
||||||
if user_input.get(CONF_ORIGIN_LATITUDE) is not None:
|
user_input: dict[str, Any] = {}
|
||||||
user_input[CONF_ORIGIN_LATITUDE] = user_input.pop(CONF_ORIGIN_LATITUDE)
|
|
||||||
user_input[CONF_ORIGIN_LONGITUDE] = user_input.pop(CONF_ORIGIN_LONGITUDE)
|
|
||||||
else:
|
|
||||||
user_input[CONF_ORIGIN_ENTITY_ID] = user_input.pop(CONF_ORIGIN_ENTITY_ID)
|
|
||||||
|
|
||||||
if user_input.get(CONF_DESTINATION_LATITUDE) is not None:
|
if import_input.get(CONF_ORIGIN_LATITUDE) is not None:
|
||||||
user_input[CONF_DESTINATION_LATITUDE] = user_input.pop(
|
user_input[CONF_ORIGIN_LATITUDE] = import_input[CONF_ORIGIN_LATITUDE]
|
||||||
CONF_DESTINATION_LATITUDE
|
user_input[CONF_ORIGIN_LONGITUDE] = import_input[CONF_ORIGIN_LONGITUDE]
|
||||||
)
|
|
||||||
user_input[CONF_DESTINATION_LONGITUDE] = user_input.pop(
|
|
||||||
CONF_DESTINATION_LONGITUDE
|
|
||||||
)
|
|
||||||
else:
|
else:
|
||||||
user_input[CONF_DESTINATION_ENTITY_ID] = user_input.pop(
|
user_input[CONF_ORIGIN_ENTITY_ID] = import_input[CONF_ORIGIN_ENTITY_ID]
|
||||||
|
|
||||||
|
if import_input.get(CONF_DESTINATION_LATITUDE) is not None:
|
||||||
|
user_input[CONF_DESTINATION_LATITUDE] = import_input[
|
||||||
|
CONF_DESTINATION_LATITUDE
|
||||||
|
]
|
||||||
|
user_input[CONF_DESTINATION_LONGITUDE] = import_input[
|
||||||
|
CONF_DESTINATION_LONGITUDE
|
||||||
|
]
|
||||||
|
else:
|
||||||
|
user_input[CONF_DESTINATION_ENTITY_ID] = import_input[
|
||||||
CONF_DESTINATION_ENTITY_ID
|
CONF_DESTINATION_ENTITY_ID
|
||||||
)
|
]
|
||||||
|
|
||||||
|
user_input[CONF_API_KEY] = import_input[CONF_API_KEY]
|
||||||
|
user_input[CONF_MODE] = import_input[CONF_MODE]
|
||||||
|
user_input[CONF_NAME] = import_input[CONF_NAME]
|
||||||
|
if (namespace := import_input.get(CONF_ENTITY_NAMESPACE)) is not None:
|
||||||
|
user_input[CONF_NAME] = f"{namespace} {user_input[CONF_NAME]}"
|
||||||
|
|
||||||
options[CONF_TRAFFIC_MODE] = (
|
options[CONF_TRAFFIC_MODE] = (
|
||||||
TRAFFIC_MODE_ENABLED
|
TRAFFIC_MODE_ENABLED
|
||||||
if user_input.pop(CONF_TRAFFIC_MODE, False)
|
if import_input.get(CONF_TRAFFIC_MODE, False)
|
||||||
else TRAFFIC_MODE_DISABLED
|
else TRAFFIC_MODE_DISABLED
|
||||||
)
|
)
|
||||||
options[CONF_ROUTE_MODE] = user_input.pop(CONF_ROUTE_MODE)
|
options[CONF_ROUTE_MODE] = import_input.get(CONF_ROUTE_MODE)
|
||||||
options[CONF_UNIT_SYSTEM] = user_input.pop(
|
options[CONF_UNIT_SYSTEM] = import_input.get(
|
||||||
CONF_UNIT_SYSTEM, self.hass.config.units.name
|
CONF_UNIT_SYSTEM, self.hass.config.units.name
|
||||||
)
|
)
|
||||||
options[CONF_ARRIVAL_TIME] = user_input.pop(CONF_ARRIVAL, None)
|
options[CONF_ARRIVAL_TIME] = import_input.get(CONF_ARRIVAL, None)
|
||||||
options[CONF_DEPARTURE_TIME] = user_input.pop(CONF_DEPARTURE, None)
|
options[CONF_DEPARTURE_TIME] = import_input.get(CONF_DEPARTURE, None)
|
||||||
|
|
||||||
return user_input, options
|
return user_input, options
|
||||||
|
|
||||||
|
@ -29,8 +29,10 @@ from homeassistant.components.here_travel_time.sensor import (
|
|||||||
)
|
)
|
||||||
from homeassistant.const import (
|
from homeassistant.const import (
|
||||||
CONF_API_KEY,
|
CONF_API_KEY,
|
||||||
|
CONF_ENTITY_NAMESPACE,
|
||||||
CONF_MODE,
|
CONF_MODE,
|
||||||
CONF_NAME,
|
CONF_NAME,
|
||||||
|
CONF_SCAN_INTERVAL,
|
||||||
CONF_UNIT_SYSTEM,
|
CONF_UNIT_SYSTEM,
|
||||||
CONF_UNIT_SYSTEM_IMPERIAL,
|
CONF_UNIT_SYSTEM_IMPERIAL,
|
||||||
CONF_UNIT_SYSTEM_METRIC,
|
CONF_UNIT_SYSTEM_METRIC,
|
||||||
@ -416,16 +418,18 @@ async def test_import_flow_entity_id(hass: HomeAssistant) -> None:
|
|||||||
CONF_ROUTE_MODE: ROUTE_MODE_FASTEST,
|
CONF_ROUTE_MODE: ROUTE_MODE_FASTEST,
|
||||||
CONF_UNIT_SYSTEM: CONF_UNIT_SYSTEM_IMPERIAL,
|
CONF_UNIT_SYSTEM: CONF_UNIT_SYSTEM_IMPERIAL,
|
||||||
CONF_TRAFFIC_MODE: TRAFFIC_MODE_ENABLED,
|
CONF_TRAFFIC_MODE: TRAFFIC_MODE_ENABLED,
|
||||||
|
CONF_ENTITY_NAMESPACE: "namespace",
|
||||||
|
CONF_SCAN_INTERVAL: 2678400,
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
await hass.async_block_till_done()
|
await hass.async_block_till_done()
|
||||||
|
|
||||||
assert result["type"] == data_entry_flow.RESULT_TYPE_CREATE_ENTRY
|
assert result["type"] == data_entry_flow.RESULT_TYPE_CREATE_ENTRY
|
||||||
assert result["title"] == "test_name"
|
assert result["title"] == "namespace test_name"
|
||||||
|
|
||||||
entry = hass.config_entries.async_entries(DOMAIN)[0]
|
entry = hass.config_entries.async_entries(DOMAIN)[0]
|
||||||
assert entry.data == {
|
assert entry.data == {
|
||||||
CONF_NAME: "test_name",
|
CONF_NAME: "namespace test_name",
|
||||||
CONF_API_KEY: CONF_API_KEY,
|
CONF_API_KEY: CONF_API_KEY,
|
||||||
CONF_ORIGIN_ENTITY_ID: "sensor.origin",
|
CONF_ORIGIN_ENTITY_ID: "sensor.origin",
|
||||||
CONF_DESTINATION_ENTITY_ID: "sensor.destination",
|
CONF_DESTINATION_ENTITY_ID: "sensor.destination",
|
||||||
|
Loading…
x
Reference in New Issue
Block a user