mirror of
https://github.com/home-assistant/core.git
synced 2025-04-23 00:37:53 +00:00
Add default_* to device registry (#38829)
This commit is contained in:
parent
a6cec21c43
commit
b3571602bb
@ -12,7 +12,7 @@ from homeassistant.helpers.device_registry import CONNECTION_NETWORK_MAC
|
||||
from homeassistant.helpers.dispatcher import async_dispatcher_connect
|
||||
import homeassistant.util.dt as dt_util
|
||||
|
||||
from .const import ATTR_MANUFACTURER, DOMAIN
|
||||
from .const import DOMAIN
|
||||
|
||||
_LOGGER = logging.getLogger(__name__)
|
||||
|
||||
@ -115,10 +115,10 @@ class MikrotikHubTracker(ScannerEntity):
|
||||
"""Return a client description for device registry."""
|
||||
info = {
|
||||
"connections": {(CONNECTION_NETWORK_MAC, self.device.mac)},
|
||||
"manufacturer": ATTR_MANUFACTURER,
|
||||
"identifiers": {(DOMAIN, self.device.mac)},
|
||||
"name": self.name,
|
||||
"via_device": (DOMAIN, self.hub.serial_num),
|
||||
# We only get generic info from device discovery and so don't want
|
||||
# to override API specific info that integrations can provide
|
||||
"default_name": self.name,
|
||||
}
|
||||
return info
|
||||
|
||||
|
@ -209,6 +209,9 @@ class DeviceRegistry:
|
||||
manufacturer=_UNDEF,
|
||||
model=_UNDEF,
|
||||
name=_UNDEF,
|
||||
default_manufacturer=_UNDEF,
|
||||
default_model=_UNDEF,
|
||||
default_name=_UNDEF,
|
||||
sw_version=_UNDEF,
|
||||
entry_type=_UNDEF,
|
||||
via_device=None,
|
||||
@ -236,6 +239,16 @@ class DeviceRegistry:
|
||||
device = deleted_device.to_device_entry()
|
||||
self._add_device(device)
|
||||
|
||||
else:
|
||||
if default_manufacturer and not device.manufacturer:
|
||||
manufacturer = default_manufacturer
|
||||
|
||||
if default_model and not device.model:
|
||||
model = default_model
|
||||
|
||||
if default_name and not device.name:
|
||||
name = default_name
|
||||
|
||||
if via_device is not None:
|
||||
via = self.async_get_device({via_device}, set())
|
||||
via_device_id = via.id if via else _UNDEF
|
||||
|
@ -378,6 +378,9 @@ class EntityPlatform:
|
||||
"manufacturer",
|
||||
"model",
|
||||
"name",
|
||||
"default_manufacturer",
|
||||
"default_model",
|
||||
"default_name",
|
||||
"sw_version",
|
||||
"entry_type",
|
||||
"via_device",
|
||||
|
@ -839,3 +839,35 @@ async def test_restore_simple_device(hass, registry, update_events):
|
||||
assert update_events[2]["device_id"] == entry2.id
|
||||
assert update_events[3]["action"] == "create"
|
||||
assert update_events[3]["device_id"] == entry3.id
|
||||
|
||||
|
||||
async def test_get_or_create_sets_default_values(hass, registry):
|
||||
"""Make sure we do not duplicate entries."""
|
||||
entry = registry.async_get_or_create(
|
||||
identifiers={("bridgeid", "0123")}, config_entry_id="1234"
|
||||
)
|
||||
assert entry.name is None
|
||||
assert entry.model is None
|
||||
assert entry.manufacturer is None
|
||||
|
||||
entry = registry.async_get_or_create(
|
||||
config_entry_id="1234",
|
||||
identifiers={("bridgeid", "0123")},
|
||||
default_name="default name 1",
|
||||
default_model="default model 1",
|
||||
default_manufacturer="default manufacturer 1",
|
||||
)
|
||||
assert entry.name == "default name 1"
|
||||
assert entry.model == "default model 1"
|
||||
assert entry.manufacturer == "default manufacturer 1"
|
||||
|
||||
entry = registry.async_get_or_create(
|
||||
config_entry_id="1234",
|
||||
identifiers={("bridgeid", "0123")},
|
||||
default_name="default name 2",
|
||||
default_model="default model 2",
|
||||
default_manufacturer="default manufacturer 2",
|
||||
)
|
||||
assert entry.name == "default name 1"
|
||||
assert entry.model == "default model 1"
|
||||
assert entry.manufacturer == "default manufacturer 1"
|
||||
|
@ -777,7 +777,13 @@ async def test_device_info_not_overrides(hass):
|
||||
async_add_entities(
|
||||
[
|
||||
MockEntity(
|
||||
unique_id="qwer", device_info={"connections": {("mac", "abcd")}}
|
||||
unique_id="qwer",
|
||||
device_info={
|
||||
"connections": {("mac", "abcd")},
|
||||
"default_name": "default name 1",
|
||||
"default_model": "default model 1",
|
||||
"default_manufacturer": "default manufacturer 1",
|
||||
},
|
||||
)
|
||||
]
|
||||
)
|
||||
|
Loading…
x
Reference in New Issue
Block a user