From 21053663796b53802ed4489f41cecda9d025e2aa Mon Sep 17 00:00:00 2001 From: Ryan Castner Date: Tue, 2 Jan 2018 12:24:49 -0500 Subject: [PATCH] Datetimes are stored without tzinfo, but as UTC. changes_display_dict now adds in UTC tzinfo then casts DateTimes to the server's settings.TIME_ZONE. --- src/auditlog/models.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/auditlog/models.py b/src/auditlog/models.py index 06528a3..f753ad5 100644 --- a/src/auditlog/models.py +++ b/src/auditlog/models.py @@ -14,8 +14,10 @@ from django.utils.encoding import python_2_unicode_compatible, smart_text from django.utils.six import iteritems, integer_types from django.utils.translation import ugettext_lazy as _ +import pytz from jsonfield.fields import JSONField from dateutil import parser +from dateutil.tz import gettz class LogEntryManager(models.Manager): @@ -281,6 +283,9 @@ class LogEntry(models.Model): value = value.date() elif field_type == "TimeField": value = value.time() + elif field_type == "DateTimeField": + value = value.replace(tzinfo=pytz.utc) + value = value.astimezone(gettz(settings.TIME_ZONE)) value = formats.localize(value) except ValueError: pass