Kaydet (Commit) d2ff8a72 authored tarafından Tim Graham's avatar Tim Graham

Fixed #23975 -- Restored pre_migrate signal if all apps have migrations.

Thanks kmmbvnr for the report.
üst f91d7366
...@@ -156,6 +156,7 @@ class Command(BaseCommand): ...@@ -156,6 +156,7 @@ class Command(BaseCommand):
created_models = self.sync_apps(connection, executor.loader.unmigrated_apps) created_models = self.sync_apps(connection, executor.loader.unmigrated_apps)
else: else:
created_models = [] created_models = []
emit_pre_migrate_signal([], self.verbosity, self.interactive, connection.alias)
# The test runner requires us to flush after a syncdb but before migrations, # The test runner requires us to flush after a syncdb but before migrations,
# so do that here. # so do that here.
......
...@@ -146,3 +146,6 @@ Bugfixes ...@@ -146,3 +146,6 @@ Bugfixes
* Fixed migration crash when adding ``order_with_respect_to`` to a table * Fixed migration crash when adding ``order_with_respect_to`` to a table
with existing rows (:ticket:`23983`). with existing rows (:ticket:`23983`).
* Restored the ``pre_migrate`` signal if all apps have migrations
(:ticket:`23975`).
from django.apps import apps from django.apps import apps
from django.core import management from django.core import management
from django.db.models import signals from django.db.models import signals
from django.test import TestCase from django.test import override_settings, TestCase
from django.utils import six from django.utils import six
...@@ -75,3 +75,22 @@ class MigrateSignalTests(TestCase): ...@@ -75,3 +75,22 @@ class MigrateSignalTests(TestCase):
self.assertEqual(args['verbosity'], MIGRATE_VERBOSITY) self.assertEqual(args['verbosity'], MIGRATE_VERBOSITY)
self.assertEqual(args['interactive'], MIGRATE_INTERACTIVE) self.assertEqual(args['interactive'], MIGRATE_INTERACTIVE)
self.assertEqual(args['using'], 'default') self.assertEqual(args['using'], 'default')
@override_settings(MIGRATION_MODULES={'migrate_signals': 'migrate_signals.custom_migrations'})
def test_pre_migrate_migrations_only(self):
"""
If all apps have migrations, pre_migrate should be sent.
"""
r = PreMigrateReceiver()
signals.pre_migrate.connect(r, sender=APP_CONFIG)
stdout = six.StringIO()
management.call_command('migrate', database=MIGRATE_DATABASE,
verbosity=MIGRATE_VERBOSITY, interactive=MIGRATE_INTERACTIVE,
load_initial_data=False, stdout=stdout)
args = r.call_args
self.assertEqual(r.call_counter, 1)
self.assertEqual(set(args), set(PRE_MIGRATE_ARGS))
self.assertEqual(args['app_config'], APP_CONFIG)
self.assertEqual(args['verbosity'], MIGRATE_VERBOSITY)
self.assertEqual(args['interactive'], MIGRATE_INTERACTIVE)
self.assertEqual(args['using'], 'default')
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment