mirror of
https://github.com/home-assistant/core.git
synced 2025-07-23 13:17:32 +00:00
Handle ValueError (#21126)
This commit is contained in:
parent
ea592a003b
commit
9c92880b5a
@ -247,7 +247,7 @@ class PersonManager:
|
|||||||
if any(person for person
|
if any(person for person
|
||||||
in chain(self.storage_data.values(),
|
in chain(self.storage_data.values(),
|
||||||
self.config_data.values())
|
self.config_data.values())
|
||||||
if person[CONF_USER_ID] == user_id):
|
if person.get(CONF_USER_ID) == user_id):
|
||||||
raise ValueError("User already taken")
|
raise ValueError("User already taken")
|
||||||
|
|
||||||
async def _user_removed(self, event: Event):
|
async def _user_removed(self, event: Event):
|
||||||
@ -417,7 +417,7 @@ def ws_list_person(hass: HomeAssistantType,
|
|||||||
|
|
||||||
@websocket_api.websocket_command({
|
@websocket_api.websocket_command({
|
||||||
vol.Required('type'): 'person/create',
|
vol.Required('type'): 'person/create',
|
||||||
vol.Required('name'): str,
|
vol.Required('name'): vol.All(str, vol.Length(min=1)),
|
||||||
vol.Optional('user_id'): vol.Any(str, None),
|
vol.Optional('user_id'): vol.Any(str, None),
|
||||||
vol.Optional('device_trackers', default=[]): vol.All(
|
vol.Optional('device_trackers', default=[]): vol.All(
|
||||||
cv.ensure_list, cv.entities_domain(DEVICE_TRACKER_DOMAIN)),
|
cv.ensure_list, cv.entities_domain(DEVICE_TRACKER_DOMAIN)),
|
||||||
@ -428,18 +428,22 @@ async def ws_create_person(hass: HomeAssistantType,
|
|||||||
connection: websocket_api.ActiveConnection, msg):
|
connection: websocket_api.ActiveConnection, msg):
|
||||||
"""Create a person."""
|
"""Create a person."""
|
||||||
manager = hass.data[DOMAIN] # type: PersonManager
|
manager = hass.data[DOMAIN] # type: PersonManager
|
||||||
|
try:
|
||||||
person = await manager.async_create_person(
|
person = await manager.async_create_person(
|
||||||
name=msg['name'],
|
name=msg['name'],
|
||||||
user_id=msg.get('user_id'),
|
user_id=msg.get('user_id'),
|
||||||
device_trackers=msg['device_trackers']
|
device_trackers=msg['device_trackers']
|
||||||
)
|
)
|
||||||
connection.send_result(msg['id'], person)
|
connection.send_result(msg['id'], person)
|
||||||
|
except ValueError as err:
|
||||||
|
connection.send_error(
|
||||||
|
msg['id'], websocket_api.const.ERR_INVALID_FORMAT, str(err))
|
||||||
|
|
||||||
|
|
||||||
@websocket_api.websocket_command({
|
@websocket_api.websocket_command({
|
||||||
vol.Required('type'): 'person/update',
|
vol.Required('type'): 'person/update',
|
||||||
vol.Required('person_id'): str,
|
vol.Required('person_id'): str,
|
||||||
vol.Optional('name'): str,
|
vol.Required('name'): vol.All(str, vol.Length(min=1)),
|
||||||
vol.Optional('user_id'): vol.Any(str, None),
|
vol.Optional('user_id'): vol.Any(str, None),
|
||||||
vol.Optional(CONF_DEVICE_TRACKERS, default=[]): vol.All(
|
vol.Optional(CONF_DEVICE_TRACKERS, default=[]): vol.All(
|
||||||
cv.ensure_list, cv.entities_domain(DEVICE_TRACKER_DOMAIN)),
|
cv.ensure_list, cv.entities_domain(DEVICE_TRACKER_DOMAIN)),
|
||||||
@ -455,8 +459,12 @@ async def ws_update_person(hass: HomeAssistantType,
|
|||||||
if key in msg:
|
if key in msg:
|
||||||
changes[key] = msg[key]
|
changes[key] = msg[key]
|
||||||
|
|
||||||
|
try:
|
||||||
person = await manager.async_update_person(msg['person_id'], **changes)
|
person = await manager.async_update_person(msg['person_id'], **changes)
|
||||||
connection.send_result(msg['id'], person)
|
connection.send_result(msg['id'], person)
|
||||||
|
except ValueError as err:
|
||||||
|
connection.send_error(
|
||||||
|
msg['id'], websocket_api.const.ERR_INVALID_FORMAT, str(err))
|
||||||
|
|
||||||
|
|
||||||
@websocket_api.websocket_command({
|
@websocket_api.websocket_command({
|
||||||
|
Loading…
x
Reference in New Issue
Block a user