1
0
mirror of https://github.com/django/django.git synced 2025-10-31 09:41:08 +00:00

[1.7.x] Fixed #22363 -- Correctly serialize django.utils.datetime_safe objects.

Thanks to linovia for the report.

Backport of 074d3183d9 from master
This commit is contained in:
Simon Charette
2014-03-31 16:16:34 -04:00
parent 28a686a0b7
commit 7b3a221ad6
2 changed files with 18 additions and 4 deletions

View File

@@ -11,9 +11,9 @@ import types
from django.apps import apps
from django.db import models
from django.db.migrations.loader import MigrationLoader
from django.utils import datetime_safe, six
from django.utils.encoding import force_text
from django.utils.functional import Promise
from django.utils import six
class SettingsReference(str):
@@ -215,10 +215,16 @@ class MigrationWriter(object):
elif isinstance(value, datetime.datetime):
if value.tzinfo is not None:
raise ValueError("Cannot serialize datetime values with timezones. Either use a callable value for default or remove the timezone.")
return repr(value), set(["import datetime"])
value_repr = repr(value)
if isinstance(value, datetime_safe.datetime):
value_repr = "datetime.%s" % value_repr
return value_repr, set(["import datetime"])
# Dates
elif isinstance(value, datetime.date):
return repr(value), set(["import datetime"])
value_repr = repr(value)
if isinstance(value, datetime_safe.date):
value_repr = "datetime.%s" % value_repr
return value_repr, set(["import datetime"])
# Settings references
elif isinstance(value, SettingsReference):
return "settings.%s" % value.setting_name, set(["from django.conf import settings"])