From ae8957ae126a3272a0cac342f2ea1eb00297f02d Mon Sep 17 00:00:00 2001 From: Alexei Chetroi Date: Wed, 8 Jan 2020 07:35:35 -0500 Subject: [PATCH] Use more consts for person implementation (#30553) * Use more consts for person implementation. * Use ATTR_ENTITY_ID. --- homeassistant/components/person/__init__.py | 35 +++++++++++---------- 1 file changed, 19 insertions(+), 16 deletions(-) diff --git a/homeassistant/components/person/__init__.py b/homeassistant/components/person/__init__.py index 3ca1e5f9cd0..fcf3bee45b9 100644 --- a/homeassistant/components/person/__init__.py +++ b/homeassistant/components/person/__init__.py @@ -12,12 +12,16 @@ from homeassistant.components.device_tracker import ( SOURCE_TYPE_GPS, ) from homeassistant.const import ( + ATTR_EDITABLE, + ATTR_ENTITY_ID, ATTR_GPS_ACCURACY, ATTR_ID, ATTR_LATITUDE, ATTR_LONGITUDE, + ATTR_NAME, CONF_ID, CONF_NAME, + CONF_TYPE, EVENT_HOMEASSISTANT_START, SERVICE_RELOAD, STATE_HOME, @@ -48,7 +52,6 @@ from homeassistant.loader import bind_hass _LOGGER = logging.getLogger(__name__) -ATTR_EDITABLE = "editable" ATTR_SOURCE = "source" ATTR_USER_ID = "user_id" @@ -85,7 +88,7 @@ _UNDEF = object() async def async_create_person(hass, name, *, user_id=None, device_trackers=None): """Create a new person.""" 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 = { - vol.Required("name"): vol.All(str, vol.Length(min=1)), - vol.Optional("user_id"): vol.Any(str, None), - vol.Optional("device_trackers", default=list): vol.All( + vol.Required(CONF_NAME): vol.All(str, vol.Length(min=1)), + vol.Optional(CONF_USER_ID): vol.Any(str, None), + vol.Optional(CONF_DEVICE_TRACKERS, default=list): vol.All( cv.ensure_list, cv.entities_domain(DEVICE_TRACKER_DOMAIN) ), } UPDATE_FIELDS = { - vol.Optional("name"): vol.All(str, vol.Length(min=1)), - vol.Optional("user_id"): vol.Any(str, None), - vol.Optional("device_trackers", default=list): vol.All( + vol.Optional(CONF_NAME): vol.All(str, vol.Length(min=1)), + vol.Optional(CONF_USER_ID): vol.Any(str, None), + vol.Optional(CONF_DEVICE_TRACKERS, default=list): vol.All( cv.ensure_list, cv.entities_domain(DEVICE_TRACKER_DOMAIN) ), } @@ -171,7 +174,7 @@ class PersonStorageCollection(collection.StorageCollection): if event.data["action"] != "remove": return - entity_id = event.data["entity_id"] + entity_id = event.data[ATTR_ENTITY_ID] if split_entity_id(entity_id)[0] != "device_tracker": return @@ -193,7 +196,7 @@ class PersonStorageCollection(collection.StorageCollection): """Validate the config is valid.""" data = self.CREATE_SCHEMA(data) - user_id = data.get("user_id") + user_id = data.get(CONF_USER_ID) if user_id is not None: await self._validate_user_id(user_id) @@ -203,13 +206,13 @@ class PersonStorageCollection(collection.StorageCollection): @callback def _get_suggested_id(self, info: dict) -> str: """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: """Return a new updated data object.""" 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: 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: """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(): if person[CONF_USER_ID] == user_id: 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) @@ -476,14 +479,14 @@ class Person(RestoreEntity): 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( hass: HomeAssistantType, connection: websocket_api.ActiveConnection, msg ): """List persons.""" yaml, storage = hass.data[DOMAIN] connection.send_result( - msg["id"], {"storage": storage.async_items(), "config": yaml.async_items()}, + msg[ATTR_ID], {"storage": storage.async_items(), "config": yaml.async_items()} )