mirror of
https://github.com/home-assistant/core.git
synced 2025-07-22 20:57:21 +00:00
Service validation for logbook component.
This commit is contained in:
parent
7ffc254a87
commit
d6f3123937
@ -9,6 +9,8 @@ import re
|
||||
from datetime import timedelta
|
||||
from itertools import groupby
|
||||
|
||||
import voluptuous as vol
|
||||
|
||||
import homeassistant.util.dt as dt_util
|
||||
from homeassistant.components import recorder, sun
|
||||
from homeassistant.const import (
|
||||
@ -18,6 +20,7 @@ from homeassistant.core import DOMAIN as HA_DOMAIN
|
||||
from homeassistant.core import State
|
||||
from homeassistant.helpers.entity import split_entity_id
|
||||
from homeassistant.helpers import template
|
||||
import homeassistant.helpers.config_validation as cv
|
||||
|
||||
DOMAIN = "logbook"
|
||||
DEPENDENCIES = ['recorder', 'http']
|
||||
@ -39,6 +42,13 @@ ATTR_MESSAGE = 'message'
|
||||
ATTR_DOMAIN = 'domain'
|
||||
ATTR_ENTITY_ID = 'entity_id'
|
||||
|
||||
LOG_MESSAGE_SCHEMA = vol.Schema({
|
||||
vol.Required(ATTR_NAME): cv.string,
|
||||
vol.Required(ATTR_MESSAGE): cv.string,
|
||||
vol.Optional(ATTR_DOMAIN): cv.slug,
|
||||
vol.Optional(ATTR_ENTITY_ID): cv.entity_id,
|
||||
})
|
||||
|
||||
|
||||
def log_entry(hass, name, message, domain=None, entity_id=None):
|
||||
"""Add an entry to the logbook."""
|
||||
@ -58,19 +68,17 @@ def setup(hass, config):
|
||||
"""Listen for download events to download files."""
|
||||
def log_message(service):
|
||||
"""Handle sending notification message service calls."""
|
||||
message = service.data.get(ATTR_MESSAGE)
|
||||
name = service.data.get(ATTR_NAME)
|
||||
domain = service.data.get(ATTR_DOMAIN, None)
|
||||
entity_id = service.data.get(ATTR_ENTITY_ID, None)
|
||||
|
||||
if not message or not name:
|
||||
return
|
||||
message = service.data[ATTR_MESSAGE]
|
||||
name = service.data[ATTR_NAME]
|
||||
domain = service.data.get(ATTR_DOMAIN)
|
||||
entity_id = service.data.get(ATTR_ENTITY_ID)
|
||||
|
||||
message = template.render(hass, message)
|
||||
log_entry(hass, name, message, domain, entity_id)
|
||||
|
||||
hass.http.register_path('GET', URL_LOGBOOK, _handle_get_logbook)
|
||||
hass.services.register(DOMAIN, 'log', log_message)
|
||||
hass.services.register(DOMAIN, 'log', log_message,
|
||||
schema=LOG_MESSAGE_SCHEMA)
|
||||
return True
|
||||
|
||||
|
||||
|
@ -37,7 +37,7 @@ class TestComponentHistory(unittest.TestCase):
|
||||
logbook.ATTR_NAME: 'Alarm',
|
||||
logbook.ATTR_MESSAGE: 'is triggered',
|
||||
logbook.ATTR_DOMAIN: 'switch',
|
||||
logbook.ATTR_ENTITY_ID: 'test_switch'
|
||||
logbook.ATTR_ENTITY_ID: 'switch.test_switch'
|
||||
}, True)
|
||||
self.hass.pool.block_till_done()
|
||||
|
||||
@ -48,7 +48,7 @@ class TestComponentHistory(unittest.TestCase):
|
||||
self.assertEqual('is triggered', last_call.data.get(
|
||||
logbook.ATTR_MESSAGE))
|
||||
self.assertEqual('switch', last_call.data.get(logbook.ATTR_DOMAIN))
|
||||
self.assertEqual('test_switch', last_call.data.get(
|
||||
self.assertEqual('switch.test_switch', last_call.data.get(
|
||||
logbook.ATTR_ENTITY_ID))
|
||||
|
||||
def test_service_call_create_log_book_entry_no_message(self):
|
||||
|
Loading…
x
Reference in New Issue
Block a user