summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLoic Bistuer <loic.bistuer@gmail.com>2014-09-27 00:01:34 +0700
committerLoic Bistuer <loic.bistuer@gmail.com>2014-09-27 00:36:28 +0700
commitb23d47412c12352ba2e2133b05a15ccd09e81af3 (patch)
treeb46c312e2e300077efb5f43c3b56f58e25854497
parentf5c932ddec8605df82319850d0f0e2f4dad1de11 (diff)
Fixed #23560 -- Fixed MigrationWrite to handle builtin types without imports.
Thanks Tim Graham for the review.
-rw-r--r--django/db/migrations/writer.py5
-rw-r--r--docs/releases/1.7.1.txt3
-rw-r--r--tests/migrations/test_writer.py5
3 files changed, 12 insertions, 1 deletions
diff --git a/django/db/migrations/writer.py b/django/db/migrations/writer.py
index 05fcfba202..5bb7d81e34 100644
--- a/django/db/migrations/writer.py
+++ b/django/db/migrations/writer.py
@@ -352,7 +352,10 @@ class MigrationWriter(object):
return string, set(imports)
if hasattr(value, "__module__"):
module = value.__module__
- return "%s.%s" % (module, value.__name__), set(["import %s" % module])
+ if module == six.moves.builtins.__name__:
+ return value.__name__, set()
+ else:
+ return "%s.%s" % (module, value.__name__), set(["import %s" % module])
# Other iterables
elif isinstance(value, collections.Iterable):
imports = set()
diff --git a/docs/releases/1.7.1.txt b/docs/releases/1.7.1.txt
index a1149d37cd..2c8af6ac7e 100644
--- a/docs/releases/1.7.1.txt
+++ b/docs/releases/1.7.1.txt
@@ -83,3 +83,6 @@ Bugfixes
* Coerced the ``related_name`` model field option to unicode during migration
generation to generate migrations that work with both Python 2 and 3
(:ticket:`23455`).
+
+* Fixed ``MigrationWriter`` to handle builtin types without imports
+ (:ticket:`23560`).
diff --git a/tests/migrations/test_writer.py b/tests/migrations/test_writer.py
index 9a04df0553..2b7ceddb2d 100644
--- a/tests/migrations/test_writer.py
+++ b/tests/migrations/test_writer.py
@@ -81,6 +81,11 @@ class WriterTests(TestCase):
self.assertSerializedEqual(set([2, 3, "eighty"]))
self.assertSerializedEqual({"lalalala": ["yeah", "no", "maybe"]})
self.assertSerializedEqual(_('Hello'))
+ # Builtins
+ self.assertSerializedEqual([list, tuple, dict, set])
+ string, imports = MigrationWriter.serialize([list, tuple, dict, set])
+ self.assertEqual(string, "[list, tuple, dict, set]")
+ self.assertEqual(imports, set())
# Functions
with six.assertRaisesRegex(self, ValueError, 'Cannot serialize function: lambda'):
self.assertSerializedEqual(lambda x: 42)