summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAymeric Augustin <aymeric.augustin@m4x.org>2013-10-13 11:54:11 +0200
committerAymeric Augustin <aymeric.augustin@m4x.org>2013-10-13 11:58:12 +0200
commitddff6522fa72aacc7475ba5cd4bf8683ff12b8c7 (patch)
tree3b9825e5f0382c00df4cd29ae658f1dd4470427d
parent503092b09a9def93f7f5828bbf87cc26147c5b6c (diff)
[1.6.x] Fixed #19560 -- Identified field in warning for naive datetime.
Thanks gcc for the report and vajrasky for the patch. Backport of 570d9c2678d6cc564f9c70138554af8f7ce9ec49 from master.
-rw-r--r--django/db/models/fields/__init__.py10
-rw-r--r--docs/topics/i18n/timezones.txt5
-rw-r--r--tests/timezones/tests.py15
3 files changed, 19 insertions, 11 deletions
diff --git a/django/db/models/fields/__init__.py b/django/db/models/fields/__init__.py
index 0621ef912e..adb07cfa94 100644
--- a/django/db/models/fields/__init__.py
+++ b/django/db/models/fields/__init__.py
@@ -842,8 +842,9 @@ class DateTimeField(DateField):
# local time. This won't work during DST change, but we can't
# do much about it, so we let the exceptions percolate up the
# call stack.
- warnings.warn("DateTimeField received a naive datetime (%s)"
- " while time zone support is active." % value,
+ warnings.warn("DateTimeField %s.%s received a naive datetime "
+ "(%s) while time zone support is active." %
+ (self.model.__name__, self.name, value),
RuntimeWarning)
default_timezone = timezone.get_default_timezone()
value = timezone.make_aware(value, default_timezone)
@@ -896,8 +897,9 @@ class DateTimeField(DateField):
# For backwards compatibility, interpret naive datetimes in local
# time. This won't work during DST change, but we can't do much
# about it, so we let the exceptions percolate up the call stack.
- warnings.warn("DateTimeField received a naive datetime (%s)"
- " while time zone support is active." % value,
+ warnings.warn("DateTimeField %s.%s received a naive datetime (%s)"
+ " while time zone support is active." %
+ (self.model.__name__, self.name, value),
RuntimeWarning)
default_timezone = timezone.get_default_timezone()
value = timezone.make_aware(value, default_timezone)
diff --git a/docs/topics/i18n/timezones.txt b/docs/topics/i18n/timezones.txt
index 5ed60d0a94..4652e7e9c1 100644
--- a/docs/topics/i18n/timezones.txt
+++ b/docs/topics/i18n/timezones.txt
@@ -431,14 +431,15 @@ code: :func:`~django.utils.timezone.now`,
Finally, in order to help you locate code that needs upgrading, Django raises
a warning when you attempt to save a naive datetime to the database::
- RuntimeWarning: DateTimeField received a naive datetime (2012-01-01 00:00:00) while time zone support is active.
+ RuntimeWarning: DateTimeField ModelName.field_name received a naive
+ datetime (2012-01-01 00:00:00) while time zone support is active.
During development, you can turn such warnings into exceptions and get a
traceback by adding the following to your settings file::
import warnings
warnings.filterwarnings(
- 'error', r"DateTimeField received a naive datetime",
+ 'error', r"DateTimeField .* received a naive datetime",
RuntimeWarning, r'django\.db\.models\.fields')
Fixtures
diff --git a/tests/timezones/tests.py b/tests/timezones/tests.py
index 43f41ea7fb..6a011c9aff 100644
--- a/tests/timezones/tests.py
+++ b/tests/timezones/tests.py
@@ -275,7 +275,8 @@ class NewDatabaseTests(TestCase):
Event.objects.create(dt=dt)
self.assertEqual(len(recorded), 1)
msg = str(recorded[0].message)
- self.assertTrue(msg.startswith("DateTimeField received a naive datetime"))
+ self.assertTrue(msg.startswith("DateTimeField Event.dt received "
+ "a naive datetime"))
event = Event.objects.get()
# naive datetimes are interpreted in local time
self.assertEqual(event.dt, dt.replace(tzinfo=EAT))
@@ -288,7 +289,8 @@ class NewDatabaseTests(TestCase):
Event.objects.create(dt=dt)
self.assertEqual(len(recorded), 1)
msg = str(recorded[0].message)
- self.assertTrue(msg.startswith("DateTimeField received a naive datetime"))
+ self.assertTrue(msg.startswith("DateTimeField Event.dt received "
+ "a naive datetime"))
event = Event.objects.get()
self.assertEqual(event.dt, datetime.datetime(2011, 9, 1, tzinfo=EAT))
@@ -301,7 +303,8 @@ class NewDatabaseTests(TestCase):
Event.objects.create(dt=dt)
self.assertEqual(len(recorded), 1)
msg = str(recorded[0].message)
- self.assertTrue(msg.startswith("DateTimeField received a naive datetime"))
+ self.assertTrue(msg.startswith("DateTimeField Event.dt received "
+ "a naive datetime"))
event = Event.objects.get()
# naive datetimes are interpreted in local time
self.assertEqual(event.dt, dt.replace(tzinfo=EAT))
@@ -315,7 +318,8 @@ class NewDatabaseTests(TestCase):
Event.objects.create(dt=dt)
self.assertEqual(len(recorded), 1)
msg = str(recorded[0].message)
- self.assertTrue(msg.startswith("DateTimeField received a naive datetime"))
+ self.assertTrue(msg.startswith("DateTimeField Event.dt received "
+ "a naive datetime"))
event = Event.objects.get()
# microseconds are lost during a round-trip in the database
# naive datetimes are interpreted in local time
@@ -402,7 +406,8 @@ class NewDatabaseTests(TestCase):
self.assertEqual(len(recorded), 3)
for warning in recorded:
msg = str(warning.message)
- self.assertTrue(msg.startswith("DateTimeField received a naive datetime"))
+ self.assertTrue(msg.startswith("DateTimeField Event.dt "
+ "received a naive datetime"))
@skipUnlessDBFeature('has_zoneinfo_database')
def test_query_datetime_lookups(self):