mirror of
https://github.com/home-assistant/core.git
synced 2025-07-20 03:37:07 +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,
|
||||||
ATTR_DUE_DATE,
|
ATTR_DUE_DATE,
|
||||||
ATTR_DUE_DATETIME,
|
ATTR_DUE_DATETIME,
|
||||||
|
ATTR_ITEM,
|
||||||
|
ATTR_RENAME,
|
||||||
|
ATTR_STATUS,
|
||||||
DOMAIN,
|
DOMAIN,
|
||||||
TodoItemStatus,
|
TodoItemStatus,
|
||||||
TodoListEntityFeature,
|
TodoListEntityFeature,
|
||||||
|
TodoServices,
|
||||||
)
|
)
|
||||||
|
|
||||||
_LOGGER = logging.getLogger(__name__)
|
_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)
|
websocket_api.async_register_command(hass, websocket_handle_todo_item_move)
|
||||||
|
|
||||||
component.async_register_entity_service(
|
component.async_register_entity_service(
|
||||||
"add_item",
|
TodoServices.ADD_ITEM,
|
||||||
vol.All(
|
vol.All(
|
||||||
cv.make_entity_service_schema(
|
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,
|
**TODO_ITEM_FIELD_SCHEMA,
|
||||||
}
|
}
|
||||||
),
|
),
|
||||||
@ -132,13 +136,13 @@ async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool:
|
|||||||
required_features=[TodoListEntityFeature.CREATE_TODO_ITEM],
|
required_features=[TodoListEntityFeature.CREATE_TODO_ITEM],
|
||||||
)
|
)
|
||||||
component.async_register_entity_service(
|
component.async_register_entity_service(
|
||||||
"update_item",
|
TodoServices.UPDATE_ITEM,
|
||||||
vol.All(
|
vol.All(
|
||||||
cv.make_entity_service_schema(
|
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)),
|
||||||
vol.Optional("rename"): vol.All(cv.string, vol.Length(min=1)),
|
vol.Optional(ATTR_RENAME): vol.All(cv.string, vol.Length(min=1)),
|
||||||
vol.Optional("status"): vol.In(
|
vol.Optional(ATTR_STATUS): vol.In(
|
||||||
{TodoItemStatus.NEEDS_ACTION, TodoItemStatus.COMPLETED},
|
{TodoItemStatus.NEEDS_ACTION, TodoItemStatus.COMPLETED},
|
||||||
),
|
),
|
||||||
**TODO_ITEM_FIELD_SCHEMA,
|
**TODO_ITEM_FIELD_SCHEMA,
|
||||||
@ -146,27 +150,29 @@ async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool:
|
|||||||
),
|
),
|
||||||
*TODO_ITEM_FIELD_VALIDATIONS,
|
*TODO_ITEM_FIELD_VALIDATIONS,
|
||||||
cv.has_at_least_one_key(
|
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,
|
_async_update_todo_item,
|
||||||
required_features=[TodoListEntityFeature.UPDATE_TODO_ITEM],
|
required_features=[TodoListEntityFeature.UPDATE_TODO_ITEM],
|
||||||
)
|
)
|
||||||
component.async_register_entity_service(
|
component.async_register_entity_service(
|
||||||
"remove_item",
|
TodoServices.REMOVE_ITEM,
|
||||||
cv.make_entity_service_schema(
|
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,
|
_async_remove_todo_items,
|
||||||
required_features=[TodoListEntityFeature.DELETE_TODO_ITEM],
|
required_features=[TodoListEntityFeature.DELETE_TODO_ITEM],
|
||||||
)
|
)
|
||||||
component.async_register_entity_service(
|
component.async_register_entity_service(
|
||||||
"get_items",
|
TodoServices.GET_ITEMS,
|
||||||
cv.make_entity_service_schema(
|
cv.make_entity_service_schema(
|
||||||
{
|
{
|
||||||
vol.Optional("status"): vol.All(
|
vol.Optional(ATTR_STATUS): vol.All(
|
||||||
cv.ensure_list,
|
cv.ensure_list,
|
||||||
[vol.In({TodoItemStatus.NEEDS_ACTION, TodoItemStatus.COMPLETED})],
|
[vol.In({TodoItemStatus.NEEDS_ACTION, TodoItemStatus.COMPLETED})],
|
||||||
),
|
),
|
||||||
@ -176,7 +182,7 @@ async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool:
|
|||||||
supports_response=SupportsResponse.ONLY,
|
supports_response=SupportsResponse.ONLY,
|
||||||
)
|
)
|
||||||
component.async_register_entity_service(
|
component.async_register_entity_service(
|
||||||
"remove_completed_items",
|
TodoServices.REMOVE_COMPLETED_ITEMS,
|
||||||
{},
|
{},
|
||||||
_async_remove_completed_items,
|
_async_remove_completed_items,
|
||||||
required_features=[TodoListEntityFeature.DELETE_TODO_ITEM],
|
required_features=[TodoListEntityFeature.DELETE_TODO_ITEM],
|
||||||
|
@ -8,6 +8,19 @@ ATTR_DUE = "due"
|
|||||||
ATTR_DUE_DATE = "due_date"
|
ATTR_DUE_DATE = "due_date"
|
||||||
ATTR_DUE_DATETIME = "due_datetime"
|
ATTR_DUE_DATETIME = "due_datetime"
|
||||||
ATTR_DESCRIPTION = "description"
|
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):
|
class TodoListEntityFeature(IntFlag):
|
||||||
|
Loading…
x
Reference in New Issue
Block a user