Browse Source

Fixed #22940 -- Added missing string iterpolation parameters in migrations.writer error.

Forwardport of f5740af868 from stable/1.7.x
Colin Wood 10 years ago
parent
commit
27ee608b55
3 changed files with 15 additions and 1 deletions
  1. 1 0
      AUTHORS
  2. 1 1
      django/db/migrations/writer.py
  3. 13 0
      tests/migrations/test_writer.py

+ 1 - 0
AUTHORS

@@ -684,6 +684,7 @@ answer newbie questions, and generally made Django that much better:
     Jakub Wiśniowski <restless.being@gmail.com>
     Maciej Wiśniowski <pigletto@gmail.com>
     wojtek
+    Colin Wood <cwood06@gmail.com>
     Marcin Wróbel
     Jason Yan <tailofthesun@gmail.com>
     Lars Yencken <lars.yencken@gmail.com>

+ 1 - 1
django/db/migrations/writer.py

@@ -319,7 +319,7 @@ class MigrationWriter(object):
                     "and used in the same class body). Please move the "
                     "function into the main module body to use migrations.\n"
                     "For more information, see https://docs.djangoproject.com/en/1.7/topics/migrations/#serializing-values"
-                )
+                    % (value.__name__, module_name))
             return "%s.%s" % (module_name, value.__name__), set(["import %s" % module_name])
         # Classes
         elif isinstance(value, type):

+ 13 - 0
tests/migrations/test_writer.py

@@ -167,6 +167,19 @@ class WriterTests(TestCase):
         with self.assertRaises(ValueError):
             self.serialize_round_trip(TestModel2.thing)
 
+    def test_serialize_local_function_reference_message(self):
+        """
+        Make sure user is seeing which module/function is the issue
+        """
+        class TestModel2(object):
+            def upload_to(self):
+                return "somewhere dynamic"
+            thing = models.FileField(upload_to=upload_to)
+
+        with six.assertRaisesRegex(self, ValueError,
+                '^Could not find function upload_to in migrations.test_writer'):
+            self.serialize_round_trip(TestModel2.thing)
+
     def test_simple_migration(self):
         """
         Tests serializing a simple migration.