Merge pull request #772 from balloob/template-editor

Add template editor
pull/775/head
Paulus Schoutsen 2015-12-18 00:46:50 -08:00
commit 9bf8835190
8 changed files with 220 additions and 184 deletions

View File

@ -12,6 +12,7 @@ import threading
import json
import homeassistant.core as ha
from homeassistant.exceptions import TemplateError
from homeassistant.helpers.state import TrackStates
import homeassistant.remote as rem
from homeassistant.util import template
@ -377,11 +378,16 @@ def _handle_post_api_template(handler, path_match, data):
""" Log user out. """
template_string = data.get('template', '')
handler.send_response(HTTP_OK)
handler.send_header(HTTP_HEADER_CONTENT_TYPE, CONTENT_TYPE_TEXT_PLAIN)
handler.end_headers()
handler.wfile.write(
template.render(handler.server.hass, template_string).encode('utf-8'))
try:
rendered = template.render(handler.server.hass, template_string)
handler.send_response(HTTP_OK)
handler.send_header(HTTP_HEADER_CONTENT_TYPE, CONTENT_TYPE_TEXT_PLAIN)
handler.end_headers()
handler.wfile.write(rendered.encode('utf-8'))
except TemplateError as e:
handler.write_json_message(str(e), HTTP_UNPROCESSABLE_ENTITY)
return
def _services_json(hass):

View File

@ -21,7 +21,7 @@ _LOGGER = logging.getLogger(__name__)
FRONTEND_URLS = [
URL_ROOT, '/logbook', '/history', '/map', '/devService', '/devState',
'/devEvent', '/devInfo', '/states']
'/devEvent', '/devInfo', '/devTemplate', '/states']
_FINGERPRINT = re.compile(r'^(\w+)-[a-z0-9]{32}\.(\w+)$', re.IGNORECASE)

View File

@ -13,7 +13,7 @@
<meta name='viewport' content='width=device-width, user-scalable=no'>
<meta name='theme-color' content='#03a9f4'>
<style>
#init {
#ha-init-skeleton {
display: -webkit-flex;
display: flex;
-webkit-flex-direction: column;
@ -34,7 +34,7 @@
<link rel='import' href='/static/{{ app_url }}' async>
</head>
<body fullbleed>
<div id='init'><img src='/static/favicon-192x192.png' height='192'></div>
<div id='ha-init-skeleton'><img src='/static/favicon-192x192.png' height='192'></div>
<script>
var webComponentsSupported = ('registerElement' in document &&
'import' in document.createElement('link') &&

View File

@ -1,2 +1,2 @@
""" DO NOT MODIFY. Auto-generated by build_frontend script """
VERSION = "0d8516cd9a13ee2ae3f27c702777e028"
VERSION = "be08c5a3ce12040bbdba2db83cb1a568"

File diff suppressed because one or more lines are too long

@ -1 +1 @@
Subproject commit e19f3c5e34bc2f5e5bd2dcc1444bb569fb1c0c68
Subproject commit 50aadaf880a9cb36bf144540171ff5fa029e9eaf

File diff suppressed because one or more lines are too long

View File

@ -337,10 +337,20 @@ class TestAPI(unittest.TestCase):
'{{ states.sensor.temperature.state }}'}),
headers=HA_HEADERS)
hass.pool.block_till_done()
self.assertEqual('10', req.text)
def test_api_template_error(self):
""" Test template API. """
hass.states.set('sensor.temperature', 10)
req = requests.post(
_url(const.URL_API_TEMPLATE),
data=json.dumps({"template":
'{{ states.sensor.temperature.state'}),
headers=HA_HEADERS)
self.assertEqual(422, req.status_code)
def test_api_event_forward(self):
""" Test setting up event forwarding. """