core/tests/components/group/common.py

86 lines
2.0 KiB
Python

"""Collection of helper methods.
All containing methods are legacy helpers that should not be used by new
components. Instead call the service directly.
"""
from homeassistant.components.group import (
ATTR_ADD_ENTITIES,
ATTR_ENTITIES,
ATTR_OBJECT_ID,
DOMAIN,
SERVICE_REMOVE,
SERVICE_SET,
)
from homeassistant.const import ATTR_ICON, ATTR_NAME, SERVICE_RELOAD
from homeassistant.core import HomeAssistant, callback
from homeassistant.loader import bind_hass
@bind_hass
def reload(hass: HomeAssistant) -> None:
"""Reload the automation from config."""
hass.add_job(async_reload, hass)
@callback
@bind_hass
def async_reload(hass: HomeAssistant) -> None:
"""Reload the automation from config."""
hass.async_create_task(hass.services.async_call(DOMAIN, SERVICE_RELOAD))
@bind_hass
def set_group(
hass: HomeAssistant,
object_id: str,
name: str | None = None,
entity_ids: list[str] | None = None,
icon: str | None = None,
add: list[str] | None = None,
) -> None:
"""Create/Update a group."""
hass.add_job(
async_set_group,
hass,
object_id,
name,
entity_ids,
icon,
add,
)
@callback
@bind_hass
def async_set_group(
hass: HomeAssistant,
object_id: str,
name: str | None = None,
entity_ids: list[str] | None = None,
icon: str | None = None,
add: list[str] | None = None,
) -> None:
"""Create/Update a group."""
data = {
key: value
for key, value in (
(ATTR_OBJECT_ID, object_id),
(ATTR_NAME, name),
(ATTR_ENTITIES, entity_ids),
(ATTR_ICON, icon),
(ATTR_ADD_ENTITIES, add),
)
if value is not None
}
hass.async_create_task(hass.services.async_call(DOMAIN, SERVICE_SET, data))
@callback
@bind_hass
def async_remove(hass: HomeAssistant, object_id: str) -> None:
"""Remove a user group."""
data = {ATTR_OBJECT_ID: object_id}
hass.async_create_task(hass.services.async_call(DOMAIN, SERVICE_REMOVE, data))