Fixed #24971 -- Made startapp generate an apps.py

This commit is contained in:
Mounir Messelmeni 2015-06-13 15:41:56 +02:00 committed by Tim Graham
parent c5eca74619
commit e6dd7f995a
6 changed files with 25 additions and 0 deletions

View File

@ -0,0 +1 @@
default_app_config = '{{ app_name }}.apps.{{ camel_case_app_name }}Config'

View File

@ -0,0 +1,5 @@
from django.apps import AppConfig
class {{ camel_case_app_name }}Config(AppConfig):
name = '{{ app_name }}'

View File

@ -98,10 +98,13 @@ class TemplateCommand(BaseCommand):
base_name = '%s_name' % app_or_project
base_subdir = '%s_template' % app_or_project
base_directory = '%s_directory' % app_or_project
camel_case_name = 'camel_case_%s_name' % app_or_project
camel_case_value = ''.join(x for x in name.title() if x != '_')
context = Context(dict(options, **{
base_name: name,
base_directory: top_dir,
camel_case_name: camel_case_value,
'docs_version': get_docs_version(),
'django_version': django.__version__,
'unicode_literals': '' if six.PY3 else 'from __future__ import unicode_literals\n\n',

View File

@ -1094,8 +1094,13 @@ with the ``--name`` option. The :class:`template context
options)
- ``app_name`` -- the app name as passed to the command
- ``app_directory`` -- the full path of the newly created app
- ``camel_case_app_name`` -- the app name in camel case format
- ``docs_version`` -- the version of the documentation: ``'dev'`` or ``'1.x'``
.. versionadded:: 1.9
``camel_case_app_name`` was added.
.. _render_warning:
.. warning::

View File

@ -275,6 +275,9 @@ Management Commands
* The :djadmin:`createcachetable` command now has a ``--dry-run`` flag to
print out the SQL rather than execute it.
* The :djadmin:`startapp` command creates an ``apps.py`` file and adds
``default_app_config`` in ``__init__.py``.
Models
^^^^^^

View File

@ -592,6 +592,14 @@ class DjangoAdminSettingsDirectory(AdminScriptTestCase):
self.addCleanup(shutil.rmtree, app_path)
self.assertNoOutput(err)
self.assertTrue(os.path.exists(app_path))
with open(os.path.join(app_path, 'apps.py'), 'r') as f:
content = f.read()
self.assertIn("class SettingsTestConfig(AppConfig)", content)
self.assertIn("name = 'settings_test'", content)
with open(os.path.join(app_path, '__init__.py'), 'r') as f:
content = f.read()
expected_content = "default_app_config = 'settings_test.apps.SettingsTestConfig'"
self.assertIn(expected_content, content)
if not PY3:
with open(os.path.join(app_path, 'models.py'), 'r') as fp:
content = fp.read()