Add template filter timedelta_seconds to create a timedelta from seconds (#39608)
parent
719aa0f317
commit
9b49ca3820
|
@ -1,7 +1,7 @@
|
|||
"""Template helper methods for rendering strings with Home Assistant data."""
|
||||
import base64
|
||||
import collections.abc
|
||||
from datetime import datetime
|
||||
from datetime import datetime, timedelta
|
||||
from functools import wraps
|
||||
import json
|
||||
import logging
|
||||
|
@ -1102,6 +1102,7 @@ class TemplateEnvironment(ImmutableSandboxedEnvironment):
|
|||
self.globals["utcnow"] = dt_util.utcnow
|
||||
self.globals["as_timestamp"] = forgiving_as_timestamp
|
||||
self.globals["relative_time"] = relative_time
|
||||
self.globals["timedelta"] = timedelta
|
||||
self.globals["strptime"] = strptime
|
||||
self.globals["urlencode"] = urlencode
|
||||
if hass is None:
|
||||
|
|
|
@ -892,6 +892,65 @@ def test_relative_time(mock_is_safe, hass):
|
|||
)
|
||||
|
||||
|
||||
@patch(
|
||||
"homeassistant.helpers.template.TemplateEnvironment.is_safe_callable",
|
||||
return_value=True,
|
||||
)
|
||||
def test_timedelta(mock_is_safe, hass):
|
||||
"""Test relative_time method."""
|
||||
now = datetime.strptime("2000-01-01 10:00:00 +00:00", "%Y-%m-%d %H:%M:%S %z")
|
||||
with patch("homeassistant.util.dt.now", return_value=now):
|
||||
assert (
|
||||
"0:02:00"
|
||||
== template.Template(
|
||||
"{{timedelta(seconds=120)}}",
|
||||
hass,
|
||||
).async_render()
|
||||
)
|
||||
assert (
|
||||
"1 day, 0:00:00"
|
||||
== template.Template(
|
||||
"{{timedelta(seconds=86400)}}",
|
||||
hass,
|
||||
).async_render()
|
||||
)
|
||||
assert (
|
||||
"1 day, 4:00:00"
|
||||
== template.Template(
|
||||
"{{timedelta(days=1, hours=4)}}",
|
||||
hass,
|
||||
).async_render()
|
||||
)
|
||||
assert (
|
||||
"1 hour"
|
||||
== template.Template(
|
||||
"{{relative_time(now() - timedelta(seconds=3600))}}",
|
||||
hass,
|
||||
).async_render()
|
||||
)
|
||||
assert (
|
||||
"1 day"
|
||||
== template.Template(
|
||||
"{{relative_time(now() - timedelta(seconds=86400))}}",
|
||||
hass,
|
||||
).async_render()
|
||||
)
|
||||
assert (
|
||||
"1 day"
|
||||
== template.Template(
|
||||
"{{relative_time(now() - timedelta(seconds=86401))}}",
|
||||
hass,
|
||||
).async_render()
|
||||
)
|
||||
assert (
|
||||
"15 days"
|
||||
== template.Template(
|
||||
"{{relative_time(now() - timedelta(weeks=2, days=1))}}",
|
||||
hass,
|
||||
).async_render()
|
||||
)
|
||||
|
||||
|
||||
@patch(
|
||||
"homeassistant.helpers.template.TemplateEnvironment.is_safe_callable",
|
||||
return_value=True,
|
||||
|
|
Loading…
Reference in New Issue