summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarkus Holtermann <info@markusholtermann.eu>2015-09-12 10:24:41 +1000
committerMarkus Holtermann <info@markusholtermann.eu>2015-09-12 10:38:15 +1000
commitf45ee1974696c8fc17ccfe12ef9e4188e29543a2 (patch)
tree40ca967c55a7d161e86bdf4222b180af45d06a0a
parenta3c01b0dd8060f00a5ffd2589a776b4f618af6d9 (diff)
Refs #24919 -- Raised more helpful error message for disabled migrations
-rw-r--r--django/db/migrations/writer.py7
-rw-r--r--tests/migrations/test_commands.py13
2 files changed, 20 insertions, 0 deletions
diff --git a/django/db/migrations/writer.py b/django/db/migrations/writer.py
index 5d24fc4628..aa9f393e4b 100644
--- a/django/db/migrations/writer.py
+++ b/django/db/migrations/writer.py
@@ -241,6 +241,13 @@ class MigrationWriter(object):
def basedir(self):
migrations_package_name = MigrationLoader.migrations_module(self.migration.app_label)
+ if migrations_package_name is None:
+ raise ValueError(
+ "Django can't create migrations for app '%s' because "
+ "migrations have been disabled via the MIGRATION_MODULES "
+ "setting." % self.migration.app_label
+ )
+
# See if we can import the migrations module directly
try:
migrations_module = import_module(migrations_package_name)
diff --git a/tests/migrations/test_commands.py b/tests/migrations/test_commands.py
index 96206806ac..c0f71a8015 100644
--- a/tests/migrations/test_commands.py
+++ b/tests/migrations/test_commands.py
@@ -593,6 +593,19 @@ class MakeMigrationsTests(MigrationTestBase):
self.assertIn('dependencies=[\n]', content)
self.assertIn('operations=[\n]', content)
+ @override_settings(MIGRATION_MODULES={"migrations": None})
+ def test_makemigrations_disabled_migrations_for_app(self):
+ """
+ makemigrations raises a nice error when migrations are disabled for an
+ app.
+ """
+ msg = (
+ "Django can't create migrations for app 'migrations' because migrations "
+ "have been disabled via the MIGRATION_MODULES setting."
+ )
+ with self.assertRaisesMessage(ValueError, msg):
+ call_command("makemigrations", "migrations", empty=True, verbosity=0)
+
def test_makemigrations_no_changes_no_apps(self):
"""
Makes sure that makemigrations exits when there are no changes and no apps are specified.