summaryrefslogtreecommitdiff
path: root/django
diff options
context:
space:
mode:
authorLoic Bistuer <loic.bistuer@sixmedia.com>2013-10-19 00:14:01 +0700
committerTim Graham <timograham@gmail.com>2013-10-19 12:10:18 -0400
commit8d6953d55c3aba04bbaf0f268499d6e405c653ff (patch)
tree4efe24777591fb1d71c62a104b246818af8b5de8 /django
parent584110417f6a3c16cc0c6723825a21940a9a2bc4 (diff)
Added support for serializing class methods. - Refs #21290.
The new handling allows us to do away with the whitelisting that was required to support date and datetime objects.
Diffstat (limited to 'django')
-rw-r--r--django/db/migrations/writer.py15
1 files changed, 3 insertions, 12 deletions
diff --git a/django/db/migrations/writer.py b/django/db/migrations/writer.py
index 333f39d6e0..0ee737811d 100644
--- a/django/db/migrations/writer.py
+++ b/django/db/migrations/writer.py
@@ -148,18 +148,9 @@ class MigrationWriter(object):
return cls.serialize_deconstructed(path, args, kwargs)
# Functions
elif isinstance(value, (types.FunctionType, types.BuiltinFunctionType)):
- # Special-cases, as these don't have im_class
- special_cases = [
- (datetime.datetime.now, "datetime.datetime.now", ["import datetime"]),
- (datetime.datetime.utcnow, "datetime.datetime.utcnow", ["import datetime"]),
- (datetime.date.today, "datetime.date.today", ["import datetime"]),
- ]
- for func, string, imports in special_cases:
- if func == value: # For some reason "utcnow is not utcnow"
- return string, set(imports)
- # Method?
- if hasattr(value, "im_class"):
- klass = value.im_class
+ # @classmethod?
+ if getattr(value, "__self__", None) and isinstance(value.__self__, type):
+ klass = value.__self__
module = klass.__module__
return "%s.%s.%s" % (module, klass.__name__, value.__name__), set(["import %s" % module])
elif hasattr(value, 'deconstruct'):