mirror of
https://github.com/home-assistant/core.git
synced 2025-07-25 14:17:45 +00:00
Use more consts for person implementation (#30553)
* Use more consts for person implementation. * Use ATTR_ENTITY_ID.
This commit is contained in:
parent
3d7488d188
commit
ae8957ae12
@ -12,12 +12,16 @@ from homeassistant.components.device_tracker import (
|
|||||||
SOURCE_TYPE_GPS,
|
SOURCE_TYPE_GPS,
|
||||||
)
|
)
|
||||||
from homeassistant.const import (
|
from homeassistant.const import (
|
||||||
|
ATTR_EDITABLE,
|
||||||
|
ATTR_ENTITY_ID,
|
||||||
ATTR_GPS_ACCURACY,
|
ATTR_GPS_ACCURACY,
|
||||||
ATTR_ID,
|
ATTR_ID,
|
||||||
ATTR_LATITUDE,
|
ATTR_LATITUDE,
|
||||||
ATTR_LONGITUDE,
|
ATTR_LONGITUDE,
|
||||||
|
ATTR_NAME,
|
||||||
CONF_ID,
|
CONF_ID,
|
||||||
CONF_NAME,
|
CONF_NAME,
|
||||||
|
CONF_TYPE,
|
||||||
EVENT_HOMEASSISTANT_START,
|
EVENT_HOMEASSISTANT_START,
|
||||||
SERVICE_RELOAD,
|
SERVICE_RELOAD,
|
||||||
STATE_HOME,
|
STATE_HOME,
|
||||||
@ -48,7 +52,6 @@ from homeassistant.loader import bind_hass
|
|||||||
|
|
||||||
_LOGGER = logging.getLogger(__name__)
|
_LOGGER = logging.getLogger(__name__)
|
||||||
|
|
||||||
ATTR_EDITABLE = "editable"
|
|
||||||
ATTR_SOURCE = "source"
|
ATTR_SOURCE = "source"
|
||||||
ATTR_USER_ID = "user_id"
|
ATTR_USER_ID = "user_id"
|
||||||
|
|
||||||
@ -85,7 +88,7 @@ _UNDEF = object()
|
|||||||
async def async_create_person(hass, name, *, user_id=None, device_trackers=None):
|
async def async_create_person(hass, name, *, user_id=None, device_trackers=None):
|
||||||
"""Create a new person."""
|
"""Create a new person."""
|
||||||
await hass.data[DOMAIN][1].async_create_item(
|
await hass.data[DOMAIN][1].async_create_item(
|
||||||
{"name": name, "user_id": user_id, "device_trackers": device_trackers}
|
{ATTR_NAME: name, ATTR_USER_ID: user_id, "device_trackers": device_trackers}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@ -113,18 +116,18 @@ async def async_add_user_device_tracker(
|
|||||||
|
|
||||||
|
|
||||||
CREATE_FIELDS = {
|
CREATE_FIELDS = {
|
||||||
vol.Required("name"): vol.All(str, vol.Length(min=1)),
|
vol.Required(CONF_NAME): vol.All(str, vol.Length(min=1)),
|
||||||
vol.Optional("user_id"): vol.Any(str, None),
|
vol.Optional(CONF_USER_ID): vol.Any(str, None),
|
||||||
vol.Optional("device_trackers", default=list): vol.All(
|
vol.Optional(CONF_DEVICE_TRACKERS, default=list): vol.All(
|
||||||
cv.ensure_list, cv.entities_domain(DEVICE_TRACKER_DOMAIN)
|
cv.ensure_list, cv.entities_domain(DEVICE_TRACKER_DOMAIN)
|
||||||
),
|
),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
UPDATE_FIELDS = {
|
UPDATE_FIELDS = {
|
||||||
vol.Optional("name"): vol.All(str, vol.Length(min=1)),
|
vol.Optional(CONF_NAME): vol.All(str, vol.Length(min=1)),
|
||||||
vol.Optional("user_id"): vol.Any(str, None),
|
vol.Optional(CONF_USER_ID): vol.Any(str, None),
|
||||||
vol.Optional("device_trackers", default=list): vol.All(
|
vol.Optional(CONF_DEVICE_TRACKERS, default=list): vol.All(
|
||||||
cv.ensure_list, cv.entities_domain(DEVICE_TRACKER_DOMAIN)
|
cv.ensure_list, cv.entities_domain(DEVICE_TRACKER_DOMAIN)
|
||||||
),
|
),
|
||||||
}
|
}
|
||||||
@ -171,7 +174,7 @@ class PersonStorageCollection(collection.StorageCollection):
|
|||||||
if event.data["action"] != "remove":
|
if event.data["action"] != "remove":
|
||||||
return
|
return
|
||||||
|
|
||||||
entity_id = event.data["entity_id"]
|
entity_id = event.data[ATTR_ENTITY_ID]
|
||||||
|
|
||||||
if split_entity_id(entity_id)[0] != "device_tracker":
|
if split_entity_id(entity_id)[0] != "device_tracker":
|
||||||
return
|
return
|
||||||
@ -193,7 +196,7 @@ class PersonStorageCollection(collection.StorageCollection):
|
|||||||
"""Validate the config is valid."""
|
"""Validate the config is valid."""
|
||||||
data = self.CREATE_SCHEMA(data)
|
data = self.CREATE_SCHEMA(data)
|
||||||
|
|
||||||
user_id = data.get("user_id")
|
user_id = data.get(CONF_USER_ID)
|
||||||
|
|
||||||
if user_id is not None:
|
if user_id is not None:
|
||||||
await self._validate_user_id(user_id)
|
await self._validate_user_id(user_id)
|
||||||
@ -203,13 +206,13 @@ class PersonStorageCollection(collection.StorageCollection):
|
|||||||
@callback
|
@callback
|
||||||
def _get_suggested_id(self, info: dict) -> str:
|
def _get_suggested_id(self, info: dict) -> str:
|
||||||
"""Suggest an ID based on the config."""
|
"""Suggest an ID based on the config."""
|
||||||
return info["name"]
|
return info[CONF_NAME]
|
||||||
|
|
||||||
async def _update_data(self, data: dict, update_data: dict) -> dict:
|
async def _update_data(self, data: dict, update_data: dict) -> dict:
|
||||||
"""Return a new updated data object."""
|
"""Return a new updated data object."""
|
||||||
update_data = self.UPDATE_SCHEMA(update_data)
|
update_data = self.UPDATE_SCHEMA(update_data)
|
||||||
|
|
||||||
user_id = update_data.get("user_id")
|
user_id = update_data.get(CONF_USER_ID)
|
||||||
|
|
||||||
if user_id is not None:
|
if user_id is not None:
|
||||||
await self._validate_user_id(user_id)
|
await self._validate_user_id(user_id)
|
||||||
@ -307,11 +310,11 @@ async def async_setup(hass: HomeAssistantType, config: ConfigType):
|
|||||||
|
|
||||||
async def _handle_user_removed(event: Event) -> None:
|
async def _handle_user_removed(event: Event) -> None:
|
||||||
"""Handle a user being removed."""
|
"""Handle a user being removed."""
|
||||||
user_id = event.data["user_id"]
|
user_id = event.data[ATTR_USER_ID]
|
||||||
for person in storage_collection.async_items():
|
for person in storage_collection.async_items():
|
||||||
if person[CONF_USER_ID] == user_id:
|
if person[CONF_USER_ID] == user_id:
|
||||||
await storage_collection.async_update_item(
|
await storage_collection.async_update_item(
|
||||||
person[CONF_ID], {"user_id": None}
|
person[CONF_ID], {CONF_USER_ID: None}
|
||||||
)
|
)
|
||||||
|
|
||||||
hass.bus.async_listen(EVENT_USER_REMOVED, _handle_user_removed)
|
hass.bus.async_listen(EVENT_USER_REMOVED, _handle_user_removed)
|
||||||
@ -476,14 +479,14 @@ class Person(RestoreEntity):
|
|||||||
self._gps_accuracy = state.attributes.get(ATTR_GPS_ACCURACY)
|
self._gps_accuracy = state.attributes.get(ATTR_GPS_ACCURACY)
|
||||||
|
|
||||||
|
|
||||||
@websocket_api.websocket_command({vol.Required("type"): "person/list"})
|
@websocket_api.websocket_command({vol.Required(CONF_TYPE): "person/list"})
|
||||||
def ws_list_person(
|
def ws_list_person(
|
||||||
hass: HomeAssistantType, connection: websocket_api.ActiveConnection, msg
|
hass: HomeAssistantType, connection: websocket_api.ActiveConnection, msg
|
||||||
):
|
):
|
||||||
"""List persons."""
|
"""List persons."""
|
||||||
yaml, storage = hass.data[DOMAIN]
|
yaml, storage = hass.data[DOMAIN]
|
||||||
connection.send_result(
|
connection.send_result(
|
||||||
msg["id"], {"storage": storage.async_items(), "config": yaml.async_items()},
|
msg[ATTR_ID], {"storage": storage.async_items(), "config": yaml.async_items()}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user