Przeglądaj źródła

Fixed db.utils.load_backend() on non-ASCII paths.

Tim Graham 9 lat temu
rodzic
commit
28ee511b7e
2 zmienionych plików z 5 dodań i 6 usunięć
  1. 2 2
      django/db/utils.py
  2. 3 4
      tests/backends/test_utils.py

+ 2 - 2
django/db/utils.py

@@ -8,7 +8,7 @@ from threading import local
 from django.conf import settings
 from django.core.exceptions import ImproperlyConfigured
 from django.utils import six
-from django.utils._os import upath
+from django.utils._os import npath, upath
 from django.utils.deprecation import RemovedInDjango110Warning
 from django.utils.functional import cached_property
 from django.utils.module_loading import import_string
@@ -113,7 +113,7 @@ def load_backend(backend_name):
         backend_dir = os.path.join(os.path.dirname(upath(__file__)), 'backends')
         try:
             builtin_backends = [
-                name for _, name, ispkg in pkgutil.iter_modules([backend_dir])
+                name for _, name, ispkg in pkgutil.iter_modules([npath(backend_dir)])
                 if ispkg and name not in {'base', 'dummy'}]
         except EnvironmentError:
             builtin_backends = []

+ 3 - 4
tests/backends/test_utils.py

@@ -1,17 +1,16 @@
 from django.core.exceptions import ImproperlyConfigured
 from django.db.utils import load_backend
 from django.test import SimpleTestCase
-from django.test.utils import str_prefix
 from django.utils import six
 
 
 class TestLoadBackend(SimpleTestCase):
     def test_load_backend_invalid_name(self):
-        msg = str_prefix(
+        msg = (
             "'foo' isn't an available database backend.\n"
             "Try using 'django.db.backends.XXX', where XXX is one of:\n"
-            "    %(_)s'mysql', %(_)s'oracle', %(_)s'postgresql_psycopg2', %(_)s'sqlite3'\n"
-            "Error was: No module named %%s"
+            "    'mysql', 'oracle', 'postgresql_psycopg2', 'sqlite3'\n"
+            "Error was: No module named %s"
         ) % "foo.base" if six.PY2 else "'foo'"
         with self.assertRaisesMessage(ImproperlyConfigured, msg):
             load_backend('foo')