roundabout,
created on Tuesday, 25 June 2024, 10:15:57 (1719310557),
received on Wednesday, 31 July 2024, 06:54:50 (1722408890)
Author identity: vlad <vlad.muntoiu@gmail.com>
dc9c6e3bd656a687e95fb495cd6577feabd58dea
jinja_utils.py
@@ -1,4 +1,4 @@
from app import appfrom app import app, _, n_import flask from datetime import datetime import markdown
@@ -38,6 +38,110 @@ def rstrip(value: str, characters=None):
@app.template_filter("strftime") def strftime(value: datetime, syntax: str): # Split the strftime syntax into placeholders and literals. placeholders = { "%a", "%A", "%w", "%d", "%-d", "%b", "%B", "%m", "%-m", "%y", "%Y", "%H", "%-H", "%I", "%-I", "%p", "%M", "%-M", "%S", "%-S", "%f", "%z", "%Z", "%j", "%-j", "%U", "%W", "%c", "%x", "%X", "%%", "%G", "%u", "%V", "%-V", "%s", "%:z", "%e" } tokens = [] i = 0 length = len(syntax) while i < length: if syntax[i] == "%": if i+1 < length and syntax[i:i + 2] in placeholders: tokens.append(syntax[i:i + 2]) i += 2 elif i+1 < length and syntax[i:i + 3] in placeholders: tokens.append(syntax[i:i + 3]) i += 3 else: tokens.append(syntax[i]) i += 1 else: tokens.append(syntax[i]) i += 1 new_tokens = [] for token in tokens: match token: case "%A": # Translate the full weekday name. weekday_number = value.weekday() weekday_names = [ _("Monday"), _("Tuesday"), _("Wednesday"), _("Thursday"), _("Friday"), _("Saturday"), _("Sunday") ] new_tokens.append(weekday_names[weekday_number]) case "%a": # Translate the abbreviated weekday name. weekday_number = value.weekday() weekday_names = [ _("Mon"), _("Tue"), _("Wed"), _("Thu"), _("Fri"), _("Sat"), _("Sun") ] new_tokens.append(weekday_names[weekday_number]) case "%B": # Translate the full month name. month_number = value.month month_names = [ _("January"), _("February"), _("March"), _("April"), _("May"), _("June"), _("July"), _("August"), _("September"), _("October"), _("November"), _("December") ] new_tokens.append(month_names[month_number - 1]) case "%b": # Translate the abbreviated month name. month_number = value.month month_names = [ _("Jan"), _("Feb"), _("Mar"), _("Apr"), _("May (short)"), _("Jun"), _("Jul"), _("Aug"), _("Sep"), _("Oct"), _("Nov"), _("Dec") ] new_tokens.append(month_names[month_number - 1]) case "%p": # Translate the AM/PM indicator. if value.hour < 12: new_tokens.append(_("am")) else: new_tokens.append(_("pm")) case _: new_tokens.append(token) print([value.strftime(token) if token in placeholders else token for token in new_tokens], syntax) syntax = "".join([value.strftime(token) if token in placeholders else token for token in new_tokens])return value.strftime(syntax)