mirror of https://github.com/django/django.git
[1.8.x] Fixed #24848 -- Fixed ValueError for faulty migrations module.
Added apps to unmigrated apps if the migrations module is a file
or a folder missing __init__.py.
Thanks to Ernest0x for the bug report.
Backport of d73176a842
from master
This commit is contained in:
parent
122e688a9c
commit
1ac4c7d415
|
@ -77,9 +77,11 @@ class MigrationLoader(object):
|
|||
else:
|
||||
# PY3 will happily import empty dirs as namespaces.
|
||||
if not hasattr(module, '__file__'):
|
||||
self.unmigrated_apps.add(app_config.label)
|
||||
continue
|
||||
# Module is not a package (e.g. migrations.py).
|
||||
if not hasattr(module, '__path__'):
|
||||
self.unmigrated_apps.add(app_config.label)
|
||||
continue
|
||||
# Force a reload if it's already loaded (tests need this)
|
||||
if was_loaded:
|
||||
|
|
|
@ -11,3 +11,6 @@ Bugfixes
|
|||
|
||||
* Fixed ``BaseRangeField.prepare_value()`` to use each ``base_field``’s
|
||||
``prepare_value()`` method (:ticket:`24841`).
|
||||
|
||||
* Fixed crash during :djadmin:`makemigrations` if a migrations module either
|
||||
is missing ``__init__.py`` or is a file (:ticket:`24848`).
|
||||
|
|
|
@ -164,12 +164,20 @@ class LoaderTests(TestCase):
|
|||
|
||||
def test_load_module_file(self):
|
||||
with override_settings(MIGRATION_MODULES={"migrations": "migrations.faulty_migrations.file"}):
|
||||
MigrationLoader(connection)
|
||||
loader = MigrationLoader(connection)
|
||||
self.assertIn(
|
||||
"migrations", loader.unmigrated_apps,
|
||||
"App with migrations module file not in unmigrated apps."
|
||||
)
|
||||
|
||||
@skipIf(six.PY2, "PY2 doesn't load empty dirs.")
|
||||
def test_load_empty_dir(self):
|
||||
with override_settings(MIGRATION_MODULES={"migrations": "migrations.faulty_migrations.namespace"}):
|
||||
MigrationLoader(connection)
|
||||
loader = MigrationLoader(connection)
|
||||
self.assertIn(
|
||||
"migrations", loader.unmigrated_apps,
|
||||
"App missing __init__.py in migrations module not in unmigrated apps."
|
||||
)
|
||||
|
||||
@override_settings(MIGRATION_MODULES={"migrations": "migrations.test_migrations_squashed"})
|
||||
def test_loading_squashed(self):
|
||||
|
|
Loading…
Reference in New Issue