This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user