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

@@ -4,7 +4,7 @@ import importlib
import os
import sys
from .config import DJANGO_SETTINGS_MODULE_NAME
from .config import DJANGO_SETTINGS_DIR
from .version import VERSION
@@ -38,7 +38,7 @@ class Program(object): # pylint: disable=too-few-public-methods
@staticmethod
def _append_to_settings(project_dir, code, comment):
settings_dir = os.path.join(project_dir, DJANGO_SETTINGS_MODULE_NAME)
settings_dir = os.path.join(project_dir, DJANGO_SETTINGS_DIR)
settings_file = os.path.join(settings_dir, 'settings.py')
settings_file_py2cache = settings_file + 'c'
@@ -57,7 +57,7 @@ class Program(object): # pylint: disable=too-few-public-methods
else:
os.makedirs(project_dir)
settings_module = DJANGO_SETTINGS_MODULE_NAME
settings_module = DJANGO_SETTINGS_DIR
cmd = 'django-admin startproject {name} {path}'.format(name=settings_module,
path=project_dir)
sys.stdout.write('Installing django files to {path}\n'.format(path=project_dir))
@@ -65,7 +65,7 @@ class Program(object): # pylint: disable=too-few-public-methods
return exitval
def _add_installed_apps_from_app(self, project_dir, app):
settings_dir = os.path.join(project_dir, DJANGO_SETTINGS_MODULE_NAME)
settings_dir = os.path.join(project_dir, DJANGO_SETTINGS_DIR)
settings_from_app = importlib.import_module('{}.django_settings'.format(app))
if hasattr(settings_from_app, 'ADD_INSTALLED_APPS'):
@@ -102,6 +102,29 @@ class Program(object): # pylint: disable=too-few-public-methods
return os.EX_OK
def _add_urlpatterns_from_app(self, project_dir, app):
settings_dir = os.path.join(project_dir, DJANGO_SETTINGS_DIR)
settings_from_app = importlib.import_module('{}.django_settings'.format(app))
if hasattr(settings_from_app, 'ADD_URLPATTERNS'):
add_urls = settings_from_app.ADD_URLPATTERNS
else:
add_urls = []
if not add_urls:
sys.stdout.write('{}: do not care about ROOT_URLCONF\n'.format(app))
return os.EX_OK
raise NotImplementedError()
self._append_to_settings(project_dir, code, comment)
def _merge_app(self, project_dir, app):
exitval = self._add_installed_apps_from_app(project_dir, app)
if exitval != os.EX_OK:
return exitval
exitval = self._add_urlpatterns_from_app(project_dir, app)
return exitval
def __init__(self):
self._argparser = argparse.ArgumentParser()
self._setup_argparser(self._argparser)
@@ -116,7 +139,7 @@ class Program(object): # pylint: disable=too-few-public-methods
return exitval
if cmd_args.merge_apps:
for app in cmd_args.merge_apps:
exitval = self._add_installed_apps_from_app(cmd_args.project_dir, app)
exitval = self._merge_app(cmd_args.project_dir, app)
if exitval != os.EX_OK:
return exitval
return exitval