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