From d4d5bade12aaff856a1aa4d36a46c249d911dcdc Mon Sep 17 00:00:00 2001 From: Hasan Ramezani Date: Thu, 25 May 2023 19:23:51 +0330 Subject: [PATCH] [backport] Fix a bug in audit log admin page when USE_TZ=False --- CHANGELOG.md | 3 +++ auditlog/mixins.py | 6 ++++-- auditlog_tests/tests.py | 11 +++++++++++ 3 files changed, 18 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 250193c..8ce863e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,9 @@ ## Next Release +#### Fixes +fix: Fix a bug in audit log admin page when `USE_TZ=False`. ([#511](https://github.com/jazzband/django-auditlog/pull/511)) + ## 2.2.2 (2023-01-16) #### Fixes diff --git a/auditlog/mixins.py b/auditlog/mixins.py index 5636480..8a95c85 100644 --- a/auditlog/mixins.py +++ b/auditlog/mixins.py @@ -8,7 +8,7 @@ from django.forms.utils import pretty_name from django.urls.exceptions import NoReverseMatch from django.utils.html import format_html, format_html_join from django.utils.safestring import mark_safe -from django.utils.timezone import localtime +from django.utils.timezone import is_aware, localtime from auditlog.models import LogEntry from auditlog.registry import auditlog @@ -20,7 +20,9 @@ MAX = 75 class LogEntryAdminMixin: @admin.display(description="Created") def created(self, obj): - return localtime(obj.timestamp) + if is_aware(obj.timestamp): + return localtime(obj.timestamp) + return obj.timestamp @admin.display(description="User") def user_url(self, obj): diff --git a/auditlog_tests/tests.py b/auditlog_tests/tests.py index edbc313..d2e74a3 100644 --- a/auditlog_tests/tests.py +++ b/auditlog_tests/tests.py @@ -1314,6 +1314,17 @@ class AdminPanelTest(TestCase): created = self.admin.created(log_entry) self.assertEqual(created.strftime("%Y-%m-%d %H:%M:%S"), timestamp) + @freezegun.freeze_time("2022-08-01 12:00:00Z") + def test_created_naive_datetime(self): + with self.settings(USE_TZ=False): + obj = SimpleModel.objects.create(text="For USE_TZ=False test") + log_entry = obj.history.latest() + created = self.admin.created(log_entry) + self.assertEqual( + created.strftime("%Y-%m-%d %H:%M:%S"), + "2022-08-01 12:00:00", + ) + class DiffMsgTest(TestCase): def setUp(self):