From d4eb9ae5cfee632f43551c81a2c30cf433b63ff4 Mon Sep 17 00:00:00 2001 From: RunasSudo Date: Wed, 13 Dec 2017 14:51:22 +1030 Subject: [PATCH] Make datetime output timezone-aware --- eos/core/objects/__init__.py | 5 +++-- eosweb/core/main.py | 4 +++- local_settings.example.py | 2 ++ requirements.txt | 1 + 4 files changed, 9 insertions(+), 3 deletions(-) diff --git a/eos/core/objects/__init__.py b/eos/core/objects/__init__.py index ae0b8d3..f7caf72 100644 --- a/eos/core/objects/__init__.py +++ b/eos/core/objects/__init__.py @@ -39,6 +39,7 @@ if is_python: import hashlib import importlib import json + import pytz import uuid __pragma__('noskip') else: @@ -158,14 +159,14 @@ class DateTimeField(Field): return None if is_python: - return datetime.strptime(value, '%Y-%m-%dT%H:%M:%SZ') + return pytz.utc.localize(datetime.strptime(value, '%Y-%m-%dT%H:%M:%SZ')) else: return __pragma__('js', '{}', 'new Date(value)') @staticmethod def now(): if is_python: - return datetime.utcnow() + return pytz.utc.localize(datetime.utcnow()) else: return __pragma__('js', '{}', 'new Date()') diff --git a/eosweb/core/main.py b/eosweb/core/main.py index 9f0d627..11be09b 100644 --- a/eosweb/core/main.py +++ b/eosweb/core/main.py @@ -36,6 +36,7 @@ import functools import importlib import json import os +import pytz import subprocess app = flask.Flask(__name__, static_folder=None) @@ -157,7 +158,8 @@ def inject_globals(): @app.template_filter('pretty_date') def pretty_date(dt): - return flask.Markup(''.format(dt.strftime('%Y-%m-%dT%H:%M:%SZ'), dt.strftime('%Y-%m-%d %H:%M:%S UTC'), timeago.format(dt, datetime.now()))) + dt_local = dt.astimezone(pytz.timezone(app.config['TIMEZONE'])) + return flask.Markup(''.format(dt_local.strftime('%Y-%m-%dT%H:%M:%S%z'), dt_local.strftime('%Y-%m-%d %H:%M:%S %Z'), timeago.format(dt, DateTimeField.now()))) # Tickle the plumbus every request @app.before_request diff --git a/local_settings.example.py b/local_settings.example.py index afcbacd..22ecb5e 100644 --- a/local_settings.example.py +++ b/local_settings.example.py @@ -16,6 +16,8 @@ ADMINS = [ TASK_RUN_STRATEGY = 'eos.core.tasks.direct.DirectRunStrategy' +TIMEZONE = 'Australia/Canberra' + # MongoDB DB_TYPE = 'mongodb' diff --git a/requirements.txt b/requirements.txt index 318addc..729dbae 100644 --- a/requirements.txt +++ b/requirements.txt @@ -15,6 +15,7 @@ psutil==5.4.1 psycopg2==2.7.3.2 PyExecJS==1.4.1 pymongo==3.5.1 +pytz==2017.3 requests==2.18.4 requests-oauthlib==0.8.0 six==1.10.0