add util.as_timezone -> as_timezone Jinja2 filter

Signed-off-by: Kevin Morris <kevr@0cost.org>
This commit is contained in:
Kevin Morris 2021-06-18 16:55:01 -07:00
parent ac67268a28
commit b1baf76998
3 changed files with 13 additions and 0 deletions

View file

@ -25,6 +25,7 @@ env.filters["tr"] = l10n.tr
# Utility filters. # Utility filters.
env.filters["dt"] = util.timestamp_to_datetime env.filters["dt"] = util.timestamp_to_datetime
env.filters["as_timezone"] = util.as_timezone
# Add captcha filters. # Add captcha filters.
env.filters["captcha_salt"] = captcha.captcha_salt_filter env.filters["captcha_salt"] = captcha.captcha_salt_filter

View file

@ -5,6 +5,7 @@ import string
from datetime import datetime from datetime import datetime
from urllib.parse import urlparse from urllib.parse import urlparse
from zoneinfo import ZoneInfo
from email_validator import EmailNotValidError, EmailUndeliverableError, validate_email from email_validator import EmailNotValidError, EmailUndeliverableError, validate_email
from jinja2 import pass_context from jinja2 import pass_context
@ -101,6 +102,10 @@ def timestamp_to_datetime(timestamp: int):
return datetime.utcfromtimestamp(int(timestamp)) return datetime.utcfromtimestamp(int(timestamp))
def as_timezone(dt: datetime, timezone: str):
return dt.astimezone(tz=ZoneInfo(timezone))
def jsonify(obj): def jsonify(obj):
""" Perform a conversion on obj if it's needed. """ """ Perform a conversion on obj if it's needed. """
if isinstance(obj, datetime): if isinstance(obj, datetime):

View file

@ -1,4 +1,5 @@
from datetime import datetime from datetime import datetime
from zoneinfo import ZoneInfo
from aurweb import util from aurweb import util
@ -7,3 +8,9 @@ def test_timestamp_to_datetime():
ts = datetime.utcnow().timestamp() ts = datetime.utcnow().timestamp()
dt = datetime.utcfromtimestamp(int(ts)) dt = datetime.utcfromtimestamp(int(ts))
assert util.timestamp_to_datetime(ts) == dt assert util.timestamp_to_datetime(ts) == dt
def test_as_timezone():
ts = datetime.utcnow().timestamp()
dt = util.timestamp_to_datetime(ts)
assert util.as_timezone(dt, "UTC") == dt.astimezone(tz=ZoneInfo("UTC"))