summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoseph Kahn <josephbkahn@gmail.com>2016-11-09 10:27:19 -0500
committerTim Graham <timograham@gmail.com>2016-11-09 10:27:33 -0500
commit7fd379719a1f5ee059aeee88243af172719e5e35 (patch)
treeb48d77a48dc180dbf8ae9168c48c7d5be6c56a74
parent3dc480fcd2c086a124647a611ac7647e75506e14 (diff)
[1.10.x] Fixed #27461 -- Fixed incorrect allow_migrate() arguments in makemigrations.
Backport of 373c6c409c310cb61e1e9c9aff4adba379ffd0b4 from master
-rw-r--r--django/core/management/commands/makemigrations.py2
-rw-r--r--docs/releases/1.10.4.txt4
-rw-r--r--tests/migrations/test_commands.py11
3 files changed, 15 insertions, 2 deletions
diff --git a/django/core/management/commands/makemigrations.py b/django/core/management/commands/makemigrations.py
index 2bb1ca9a41..486c897008 100644
--- a/django/core/management/commands/makemigrations.py
+++ b/django/core/management/commands/makemigrations.py
@@ -104,7 +104,7 @@ class Command(BaseCommand):
# At least one model must be migrated to the database.
router.allow_migrate(connection.alias, app_label, model_name=model._meta.object_name)
for app_label in consistency_check_labels
- for model in apps.get_models(app_label)
+ for model in apps.get_app_config(app_label).get_models()
)):
loader.check_consistent_history(connection)
diff --git a/docs/releases/1.10.4.txt b/docs/releases/1.10.4.txt
index c9c6181beb..3304df9071 100644
--- a/docs/releases/1.10.4.txt
+++ b/docs/releases/1.10.4.txt
@@ -12,3 +12,7 @@ Bugfixes
* Quoted the Oracle test user's password in queries to fix the "ORA-00922:
missing or invalid option" error when the password starts with a number or
special character (:ticket:`27420`).
+
+* Fixed incorrect ``app_label`` / ``model_name`` arguments for
+ ``allow_migrate()`` in ``makemigrations`` migration consistency checks
+ (:ticket:`27461`).
diff --git a/tests/migrations/test_commands.py b/tests/migrations/test_commands.py
index da10f834f0..63f29dba6a 100644
--- a/tests/migrations/test_commands.py
+++ b/tests/migrations/test_commands.py
@@ -598,6 +598,7 @@ class MakeMigrationsTests(MigrationTestBase):
init_file = os.path.join(migration_dir, '__init__.py')
self.assertTrue(os.path.exists(init_file))
+ @override_settings(INSTALLED_APPS=['migrations', 'migrations2'])
def test_makemigrations_consistency_checks_respect_routers(self):
"""
The history consistency checks in makemigrations respect
@@ -638,7 +639,15 @@ class MakeMigrationsTests(MigrationTestBase):
with self.settings(DATABASE_ROUTERS=['migrations.routers.TestRouter']):
with mock.patch.object(TestRouter, 'allow_migrate', return_value=False) as allow_migrate:
call_command('makemigrations', 'migrations', verbosity=0)
- allow_migrate.assert_called_with('other', 'migrations', model_name='UnicodeModel')
+ allow_migrate.assert_any_call('other', 'migrations', model_name='UnicodeModel')
+ # allow_migrate() is called with the correct arguments.
+ self.assertGreater(len(allow_migrate.mock_calls), 0)
+ for mock_call in allow_migrate.mock_calls:
+ _, call_args, call_kwargs = mock_call
+ connection_alias, app_name = call_args
+ self.assertIn(connection_alias, ['default', 'other'])
+ # Raises an error if invalid app_name/model_name occurs.
+ apps.get_app_config(app_name).get_model(call_kwargs['model_name'])
self.assertEqual(ensure_schema.call_count, 4)
def test_failing_migration(self):