mirror of
https://github.com/home-assistant/core.git
synced 2025-07-19 19:27:45 +00:00
Add constants for todo services (#121616)
This commit is contained in:
parent
7ed5feee92
commit
e56f8d795f
@ -33,9 +33,13 @@ from .const import (
|
||||
ATTR_DUE,
|
||||
ATTR_DUE_DATE,
|
||||
ATTR_DUE_DATETIME,
|
||||
ATTR_ITEM,
|
||||
ATTR_RENAME,
|
||||
ATTR_STATUS,
|
||||
DOMAIN,
|
||||
TodoItemStatus,
|
||||
TodoListEntityFeature,
|
||||
TodoServices,
|
||||
)
|
||||
|
||||
_LOGGER = logging.getLogger(__name__)
|
||||
@ -118,11 +122,11 @@ async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool:
|
||||
websocket_api.async_register_command(hass, websocket_handle_todo_item_move)
|
||||
|
||||
component.async_register_entity_service(
|
||||
"add_item",
|
||||
TodoServices.ADD_ITEM,
|
||||
vol.All(
|
||||
cv.make_entity_service_schema(
|
||||
{
|
||||
vol.Required("item"): vol.All(cv.string, vol.Length(min=1)),
|
||||
vol.Required(ATTR_ITEM): vol.All(cv.string, vol.Length(min=1)),
|
||||
**TODO_ITEM_FIELD_SCHEMA,
|
||||
}
|
||||
),
|
||||
@ -132,13 +136,13 @@ async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool:
|
||||
required_features=[TodoListEntityFeature.CREATE_TODO_ITEM],
|
||||
)
|
||||
component.async_register_entity_service(
|
||||
"update_item",
|
||||
TodoServices.UPDATE_ITEM,
|
||||
vol.All(
|
||||
cv.make_entity_service_schema(
|
||||
{
|
||||
vol.Required("item"): vol.All(cv.string, vol.Length(min=1)),
|
||||
vol.Optional("rename"): vol.All(cv.string, vol.Length(min=1)),
|
||||
vol.Optional("status"): vol.In(
|
||||
vol.Required(ATTR_ITEM): vol.All(cv.string, vol.Length(min=1)),
|
||||
vol.Optional(ATTR_RENAME): vol.All(cv.string, vol.Length(min=1)),
|
||||
vol.Optional(ATTR_STATUS): vol.In(
|
||||
{TodoItemStatus.NEEDS_ACTION, TodoItemStatus.COMPLETED},
|
||||
),
|
||||
**TODO_ITEM_FIELD_SCHEMA,
|
||||
@ -146,27 +150,29 @@ async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool:
|
||||
),
|
||||
*TODO_ITEM_FIELD_VALIDATIONS,
|
||||
cv.has_at_least_one_key(
|
||||
"rename", "status", *[desc.service_field for desc in TODO_ITEM_FIELDS]
|
||||
ATTR_RENAME,
|
||||
ATTR_STATUS,
|
||||
*[desc.service_field for desc in TODO_ITEM_FIELDS],
|
||||
),
|
||||
),
|
||||
_async_update_todo_item,
|
||||
required_features=[TodoListEntityFeature.UPDATE_TODO_ITEM],
|
||||
)
|
||||
component.async_register_entity_service(
|
||||
"remove_item",
|
||||
TodoServices.REMOVE_ITEM,
|
||||
cv.make_entity_service_schema(
|
||||
{
|
||||
vol.Required("item"): vol.All(cv.ensure_list, [cv.string]),
|
||||
vol.Required(ATTR_ITEM): vol.All(cv.ensure_list, [cv.string]),
|
||||
}
|
||||
),
|
||||
_async_remove_todo_items,
|
||||
required_features=[TodoListEntityFeature.DELETE_TODO_ITEM],
|
||||
)
|
||||
component.async_register_entity_service(
|
||||
"get_items",
|
||||
TodoServices.GET_ITEMS,
|
||||
cv.make_entity_service_schema(
|
||||
{
|
||||
vol.Optional("status"): vol.All(
|
||||
vol.Optional(ATTR_STATUS): vol.All(
|
||||
cv.ensure_list,
|
||||
[vol.In({TodoItemStatus.NEEDS_ACTION, TodoItemStatus.COMPLETED})],
|
||||
),
|
||||
@ -176,7 +182,7 @@ async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool:
|
||||
supports_response=SupportsResponse.ONLY,
|
||||
)
|
||||
component.async_register_entity_service(
|
||||
"remove_completed_items",
|
||||
TodoServices.REMOVE_COMPLETED_ITEMS,
|
||||
{},
|
||||
_async_remove_completed_items,
|
||||
required_features=[TodoListEntityFeature.DELETE_TODO_ITEM],
|
||||
|
@ -8,6 +8,19 @@ ATTR_DUE = "due"
|
||||
ATTR_DUE_DATE = "due_date"
|
||||
ATTR_DUE_DATETIME = "due_datetime"
|
||||
ATTR_DESCRIPTION = "description"
|
||||
ATTR_ITEM = "item"
|
||||
ATTR_RENAME = "rename"
|
||||
ATTR_STATUS = "status"
|
||||
|
||||
|
||||
class TodoServices(StrEnum):
|
||||
"""Services for the To-do integration."""
|
||||
|
||||
ADD_ITEM = "add_item"
|
||||
UPDATE_ITEM = "update_item"
|
||||
REMOVE_ITEM = "remove_item"
|
||||
GET_ITEMS = "get_items"
|
||||
REMOVE_COMPLETED_ITEMS = "remove_completed_items"
|
||||
|
||||
|
||||
class TodoListEntityFeature(IntFlag):
|
||||
|
Loading…
x
Reference in New Issue
Block a user