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