feat: execution failure reports, auto-printer for WMT, UTC timezone fix for all timestamps
This commit is contained in:
@@ -29,6 +29,9 @@ def create_app(config_name=None):
|
||||
# Register blueprints
|
||||
_register_blueprints(app)
|
||||
|
||||
# Register template filters
|
||||
_register_template_filters(app)
|
||||
|
||||
# Register error handlers
|
||||
_register_error_handlers(app)
|
||||
|
||||
@@ -104,6 +107,28 @@ def _register_blueprints(app):
|
||||
from app.api.logs import submit_log
|
||||
return submit_log()
|
||||
|
||||
|
||||
def _register_template_filters(app):
|
||||
"""Register custom Jinja2 template filters."""
|
||||
import calendar
|
||||
from datetime import datetime as _dt
|
||||
|
||||
@app.template_filter('local_dt')
|
||||
def local_dt_filter(value, fmt='%Y-%m-%d %H:%M'):
|
||||
"""Convert a naive UTC datetime to server local time and format it.
|
||||
Usage: {{ some_utc_datetime | local_dt }}
|
||||
{{ some_utc_datetime | local_dt('%Y-%m-%d %H:%M:%S') }}
|
||||
"""
|
||||
if value is None:
|
||||
return None
|
||||
try:
|
||||
# calendar.timegm treats the timetuple as UTC → returns POSIX timestamp
|
||||
# datetime.fromtimestamp then converts to local time using the system timezone
|
||||
ts = calendar.timegm(value.timetuple())
|
||||
return _dt.fromtimestamp(ts).strftime(fmt)
|
||||
except Exception:
|
||||
return value.strftime(fmt)
|
||||
|
||||
def _register_error_handlers(app):
|
||||
"""Register error handlers"""
|
||||
|
||||
|
||||
Reference in New Issue
Block a user