30 lines
872 B
Python
30 lines
872 B
Python
import importlib
|
|
import os
|
|
import sys
|
|
import mock
|
|
|
|
from .config import DJANGO_SETTINGS_DIR
|
|
|
|
|
|
def get_root_urlconf(project_dir):
|
|
if 'django.contrib' in sys.modules:
|
|
original_contrib = sys.modules['django.contrib']
|
|
else:
|
|
original_contrib = None
|
|
mock_contrib = mock.Mock(name='django.contrib')
|
|
sys.modules['django.contrib'] = mock_contrib
|
|
|
|
settings_dir = os.path.join(project_dir, DJANGO_SETTINGS_DIR)
|
|
sys.path.insert(0, settings_dir)
|
|
root_urlconf = importlib.import_module('urls')
|
|
if sys.version_info.major == 2: # pragma: no cover
|
|
reload(root_urlconf) # pylint: disable=undefined-variable
|
|
else: # pragma: no cover
|
|
importlib.reload(root_urlconf) # pylint: disable=no-member
|
|
sys.path.pop(0)
|
|
|
|
if original_contrib:
|
|
sys.modules['django.contrib'] = original_contrib
|
|
|
|
return root_urlconf
|