AX_PYTHON_MODULE([aiofiles], [fatal])
AX_PYTHON_MODULE([alembic], [fatal])
AX_PYTHON_MODULE([asyncpg], [fatal])
+AX_PYTHON_MODULE([babel], [fatal])
AX_PYTHON_MODULE([boto3], [fatal])
AX_PYTHON_MODULE([cryptography], [fatal])
AX_PYTHON_MODULE([jinja2], [fatal])
# #
###############################################################################
+import babel.dates
import datetime
import email.utils
import jinja2
return locale.format_day(*args, **kwargs)
@jinja2.pass_context
-def format_time(ctx, s, shorter=False):
+def format_time(ctx, delta, shorter=False):
# Fetch locale
locale = ctx.get("locale")
- # Fetch the translation function
- _ = locale.translate
-
- # Convert into seconds
- if isinstance(s, datetime.timedelta):
- s = s.total_seconds()
-
- args = {
- "s" : round(s % 60),
- "m" : round(s / 60 % 60),
- "h" : round(s / 3600 % 3600),
- "d" : round(s / 86400),
- }
-
- # Less than one minute
- if s < 60:
- return _("%(s)d s") % args
-
- # Less than one hour
- elif s < 3600:
- return _("%(m)d:%(s)02d m") % args
-
- # Less than one day
- elif s < 86400:
- return _("%(h)d:%(m)02d h") % args
-
- # More than one day
- else:
- return _("%(d)d:%(h)02d d") % args
+ return babel.dates.format_timedelta(
+ delta,
+ locale = locale.code,
+ format = "short" if shorter else "long",
+ )
def highlight(text, filename=None):
# Find a lexer