Refs #24324 -- Fixed management command discovery on non-ASCII paths.

This commit is contained in:
Tim Graham 2015-02-14 19:30:33 -05:00
parent 8b39f33d78
commit 4a0aeac1b5
1 changed files with 4 additions and 4 deletions

View File

@ -13,8 +13,8 @@ from django.core.exceptions import ImproperlyConfigured
from django.core.management.base import (BaseCommand, CommandError, from django.core.management.base import (BaseCommand, CommandError,
CommandParser, handle_default_options) CommandParser, handle_default_options)
from django.core.management.color import color_style from django.core.management.color import color_style
from django.utils import lru_cache from django.utils import lru_cache, six
from django.utils import six from django.utils._os import npath, upath
def find_commands(management_dir): def find_commands(management_dir):
@ -25,7 +25,7 @@ def find_commands(management_dir):
Returns an empty list if no commands are defined. Returns an empty list if no commands are defined.
""" """
command_dir = os.path.join(management_dir, 'commands') command_dir = os.path.join(management_dir, 'commands')
return [name for _, name, is_pkg in pkgutil.iter_modules([command_dir]) return [name for _, name, is_pkg in pkgutil.iter_modules([npath(command_dir)])
if not is_pkg and not name.startswith('_')] if not is_pkg and not name.startswith('_')]
@ -62,7 +62,7 @@ def get_commands():
The dictionary is cached on the first call and reused on subsequent The dictionary is cached on the first call and reused on subsequent
calls. calls.
""" """
commands = {name: 'django.core' for name in find_commands(__path__[0])} commands = {name: 'django.core' for name in find_commands(upath(__path__[0]))}
if not settings.configured: if not settings.configured:
return commands return commands