diff options
| author | Aymeric Augustin <aymeric.augustin@m4x.org> | 2015-10-15 22:03:25 +0200 |
|---|---|---|
| committer | Tim Graham <timograham@gmail.com> | 2015-12-18 19:08:28 -0500 |
| commit | 24ebf17f04ee0ed157c430ff7d10ec0728abd48e (patch) | |
| tree | 880cc3f980722dccbd7eed5ae03988f6a5043142 | |
| parent | f0a4ff2b118cbc3b7f9ac28a7d9e355288b546c0 (diff) | |
[1.9.x] Fixed #25510 -- Allowed runserver to start with incorrect INSTALLED_APPS.
In that case, the content of INSTALLED_APPS will be ignored until it's
fixed and the autoreloader kicks in. I confirmed this behavior manually.
As explained on the ticket it's hard to write a test for this case.
Backport of df0a446fd4c864c003e4f941b5b7abd6f10c9427 from master
| -rw-r--r-- | django/core/management/__init__.py | 11 | ||||
| -rw-r--r-- | docs/releases/1.9.1.txt | 5 |
2 files changed, 12 insertions, 4 deletions
diff --git a/django/core/management/__init__.py b/django/core/management/__init__.py index dec7c052b3..2a7d95d432 100644 --- a/django/core/management/__init__.py +++ b/django/core/management/__init__.py @@ -1,9 +1,9 @@ from __future__ import unicode_literals -import collections import os import pkgutil import sys +from collections import OrderedDict, defaultdict from importlib import import_module import django @@ -144,7 +144,7 @@ class ManagementUtility(object): "", "Available subcommands:", ] - commands_dict = collections.defaultdict(lambda: []) + commands_dict = defaultdict(lambda: []) for name, app in six.iteritems(get_commands()): if app == 'django.core': app = 'django' @@ -316,8 +316,11 @@ class ManagementUtility(object): autoreload.check_errors(django.setup)() except Exception: # The exception will be raised later in the child process - # started by the autoreloader. - pass + # started by the autoreloader. Pretend it didn't happen by + # loading an empty list of applications. + apps.all_models = defaultdict(OrderedDict) + apps.app_configs = OrderedDict() + apps.apps_ready = apps.models_ready = apps.ready = True # In all other cases, django.setup() is required to succeed. else: diff --git a/docs/releases/1.9.1.txt b/docs/releases/1.9.1.txt index d5bfdd2739..905f207d6a 100644 --- a/docs/releases/1.9.1.txt +++ b/docs/releases/1.9.1.txt @@ -53,3 +53,8 @@ Bugfixes * Fixed a regression which prevented using a language not in Django's default language list (:setting:`LANGUAGES`) (:ticket:`25915`). + +* Avoided hiding some exceptions, like an invalid ``INSTALLED_APPS`` setting, + behind ``AppRegistryNotReady`` when starting ``runserver`` (:ticket:`25510`). + This regression appeared in 1.8.5 as a side effect of fixing :ticket:`24704` + and by mistake the fix wasn't applied to the ``stable/1.9.x`` branch. |
