mirror of
https://github.com/home-assistant/core.git
synced 2025-11-10 03:19:34 +00:00
Allow configuration_url to be removed/nullified from device registry (#58564)
* Allow configuration_url to be removed from device registry * Add test * Check for None before stringifying and url parsing * Add type to dict to remove mypy error on assigning None
This commit is contained in:
@@ -458,7 +458,9 @@ class EntityPlatform:
|
||||
device_id = None
|
||||
|
||||
if config_entry_id is not None and device_info is not None:
|
||||
processed_dev_info = {"config_entry_id": config_entry_id}
|
||||
processed_dev_info: dict[str, str | None] = {
|
||||
"config_entry_id": config_entry_id
|
||||
}
|
||||
for key in (
|
||||
"connections",
|
||||
"default_manufacturer",
|
||||
@@ -477,18 +479,21 @@ class EntityPlatform:
|
||||
processed_dev_info[key] = device_info[key] # type: ignore[misc]
|
||||
|
||||
if "configuration_url" in device_info:
|
||||
configuration_url = str(device_info["configuration_url"])
|
||||
if urlparse(configuration_url).scheme in [
|
||||
"http",
|
||||
"https",
|
||||
"homeassistant",
|
||||
]:
|
||||
processed_dev_info["configuration_url"] = configuration_url
|
||||
if device_info["configuration_url"] is None:
|
||||
processed_dev_info["configuration_url"] = None
|
||||
else:
|
||||
_LOGGER.warning(
|
||||
"Ignoring invalid device configuration_url '%s'",
|
||||
configuration_url,
|
||||
)
|
||||
configuration_url = str(device_info["configuration_url"])
|
||||
if urlparse(configuration_url).scheme in [
|
||||
"http",
|
||||
"https",
|
||||
"homeassistant",
|
||||
]:
|
||||
processed_dev_info["configuration_url"] = configuration_url
|
||||
else:
|
||||
_LOGGER.warning(
|
||||
"Ignoring invalid device configuration_url '%s'",
|
||||
configuration_url,
|
||||
)
|
||||
|
||||
try:
|
||||
device = device_registry.async_get_or_create(**processed_dev_info) # type: ignore[arg-type]
|
||||
|
||||
Reference in New Issue
Block a user