Add constants for todo services (#121616)

This commit is contained in:
Joost Lekkerkerker 2024-07-10 23:15:03 +02:00 committed by GitHub
parent 7ed5feee92
commit e56f8d795f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 31 additions and 12 deletions

View File

@ -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],

View File

@ -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):