Add support for multiple event triggers in automation (#43097)

Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
This commit is contained in:
Franck Nijhof 2020-11-12 11:58:28 +01:00 committed by GitHub
parent 673ac21de4
commit 6f326a7ea4
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 131 additions and 64 deletions

View file

@ -8,25 +8,48 @@ from homeassistant.components.device_automation.exceptions import (
InvalidDeviceAutomationConfig,
)
from homeassistant.config import async_log_exception, config_without_domain
from homeassistant.const import CONF_ALIAS, CONF_ID, CONF_VARIABLES
from homeassistant.exceptions import HomeAssistantError
from homeassistant.helpers import config_per_platform
from homeassistant.helpers import config_per_platform, config_validation as cv, script
from homeassistant.helpers.condition import async_validate_condition_config
from homeassistant.helpers.script import async_validate_actions_config
from homeassistant.helpers.trigger import async_validate_trigger_config
from homeassistant.loader import IntegrationNotFound
from . import (
from .const import (
CONF_ACTION,
CONF_CONDITION,
CONF_DESCRIPTION,
CONF_HIDE_ENTITY,
CONF_INITIAL_STATE,
CONF_TRIGGER,
DOMAIN,
PLATFORM_SCHEMA,
async_get_blueprints,
)
from .helpers import async_get_blueprints
# mypy: allow-untyped-calls, allow-untyped-defs
# mypy: no-check-untyped-defs, no-warn-return-any
_CONDITION_SCHEMA = vol.All(cv.ensure_list, [cv.CONDITION_SCHEMA])
PLATFORM_SCHEMA = vol.All(
cv.deprecated(CONF_HIDE_ENTITY, invalidation_version="0.110"),
script.make_script_schema(
{
# str on purpose
CONF_ID: str,
CONF_ALIAS: cv.string,
vol.Optional(CONF_DESCRIPTION): cv.string,
vol.Optional(CONF_INITIAL_STATE): cv.boolean,
vol.Optional(CONF_HIDE_ENTITY): cv.boolean,
vol.Required(CONF_TRIGGER): cv.TRIGGER_SCHEMA,
vol.Optional(CONF_CONDITION): _CONDITION_SCHEMA,
vol.Optional(CONF_VARIABLES): cv.SCRIPT_VARIABLES_SCHEMA,
vol.Required(CONF_ACTION): cv.SCRIPT_SCHEMA,
},
script.SCRIPT_MODE_SINGLE,
),
)
async def async_validate_config_item(hass, config, full_config=None):
"""Validate config item."""
@ -48,7 +71,9 @@ async def async_validate_config_item(hass, config, full_config=None):
]
)
config[CONF_ACTION] = await async_validate_actions_config(hass, config[CONF_ACTION])
config[CONF_ACTION] = await script.async_validate_actions_config(
hass, config[CONF_ACTION]
)
return config