Begin to implement #1
Some checks failed
buildbot/tox Build done.

This commit is contained in:
2019-10-31 16:57:40 +01:00
parent 54a708f8dd
commit b4273d9fd7
11 changed files with 161 additions and 18 deletions

View File

@@ -0,0 +1,41 @@
import importlib
import os
import sys
import django
from .config import DJANGO_SETTINGS_DIR
class DjangoEnvironment(object):
def __init__(self, project_dir=None, settings_module_name=None):
self.project_dir = project_dir
if settings_module_name is not None:
self.settings_module_name = settings_module_name
else:
self.settings_module_name = '{}.settings'.format(DJANGO_SETTINGS_DIR)
self._original_sys_path = None
self._modified_sys_path = None
def __enter__(self):
if self.project_dir:
self._original_sys_path = sys.path
sys.path.insert(0, self.project_dir)
self._modified_sys_path = sys.path
print('Debug: %s' % self.settings_module_name)
os.environ['DJANGO_SETTINGS_MODULE'] = self.settings_module_name
django.setup()
from django.conf import settings
self.settings = settings
if hasattr(settings, 'ROOT_URLCONF'):
self.root_urlconf = importlib.import_module(settings.ROOT_URLCONF)
return self
def __exit__(self, *args):
if self._modified_sys_path is not None and self._original_sys_path is not None:
if sys.path == self._modified_sys_path:
sys.path = self._original_sys_path