mirror of
https://github.com/tmdinosaurcenter/kiosk-guestbook.git
synced 2026-06-03 23:09:35 -06:00
feat: display admin timestamps in America/Denver time
Convert UTC timestamps from SQLite to Mountain Time (America/Denver) using a Jinja2 template filter backed by zoneinfo; add tzdata dependency for IANA timezone data in the slim Docker image.
This commit is contained in:
@@ -3,6 +3,8 @@ import os
|
||||
import re
|
||||
import sqlite3
|
||||
import threading
|
||||
from datetime import datetime, timezone
|
||||
from zoneinfo import ZoneInfo
|
||||
|
||||
from email_validator import validate_email, EmailNotValidError
|
||||
from flask import Flask, render_template, request, redirect, url_for, jsonify, abort
|
||||
@@ -23,6 +25,19 @@ app.secret_key = os.environ.get('SECRET_KEY', 'dev-secret-key-change-in-producti
|
||||
|
||||
limiter = Limiter(get_remote_address, app=app, default_limits=[])
|
||||
|
||||
_DISPLAY_TZ = ZoneInfo('America/Denver')
|
||||
|
||||
@app.template_filter('localtime')
|
||||
def localtime_filter(value):
|
||||
if not value:
|
||||
return value
|
||||
try:
|
||||
dt = datetime.strptime(str(value), '%Y-%m-%d %H:%M:%S')
|
||||
dt = dt.replace(tzinfo=timezone.utc)
|
||||
return dt.astimezone(_DISPLAY_TZ).strftime('%Y-%m-%d %H:%M')
|
||||
except ValueError:
|
||||
return value
|
||||
|
||||
login_manager = LoginManager(app)
|
||||
login_manager.login_view = 'admin_login'
|
||||
|
||||
|
||||
@@ -4,3 +4,4 @@ Flask-Limiter>=3.0
|
||||
Flask-Login>=0.6
|
||||
email-validator>=2.0
|
||||
gunicorn
|
||||
tzdata
|
||||
@@ -42,7 +42,7 @@
|
||||
<td>{{ g[4] }}</td>
|
||||
<td>{{ g[5] or '—' }}</td>
|
||||
<td>{{ 'Yes' if g[6] else 'No' }}</td>
|
||||
<td class="text-nowrap">{{ g[7] }}</td>
|
||||
<td class="text-nowrap">{{ g[7] | localtime }}</td>
|
||||
<td>
|
||||
{% if current_user.role != 'viewer' %}
|
||||
<form method="POST" action="{{ url_for('admin_delete', entry_id=g[0]) }}?page={{ page }}"
|
||||
|
||||
Reference in New Issue
Block a user