Fail when rendering undefined objects in Jinja2 templates
By not successfully rendering unknown objects to an empty string the caller provided error_value actually gets used. This allows, for instance, the MQTT sensor to retain its state when an unexpected or unwanted message (#2733/#3834) is received.pull/3916/head
parent
18f5258aaf
commit
c8add59ea5
homeassistant
components/sensor
helpers
|
@ -60,7 +60,7 @@ class MqttSensor(Entity):
|
|||
"""A new MQTT message has been received."""
|
||||
if value_template is not None:
|
||||
payload = value_template.render_with_possible_json_value(
|
||||
payload)
|
||||
payload, self._state)
|
||||
self._state = payload
|
||||
self.update_ha_state()
|
||||
|
||||
|
|
|
@ -402,7 +402,7 @@ class TemplateEnvironment(ImmutableSandboxedEnvironment):
|
|||
"""Test if callback is safe."""
|
||||
return isinstance(obj, AllStates) or super().is_safe_callable(obj)
|
||||
|
||||
ENV = TemplateEnvironment()
|
||||
ENV = TemplateEnvironment(undefined=jinja2.StrictUndefined)
|
||||
ENV.filters['round'] = forgiving_round
|
||||
ENV.filters['multiply'] = multiply
|
||||
ENV.filters['timestamp_custom'] = timestamp_custom
|
||||
|
|
Loading…
Reference in New Issue