mirror of
https://github.com/django/django.git
synced 2025-08-04 02:48:35 +00:00
Fixed #22788 -- Ensured custom migration operations can be written.
This inspects the migration operation, and if it is not in the django.db.migrations module, it adds the relevant imports to the migration writer and uses the correct class name.
This commit is contained in:
parent
37a8f5aeed
commit
bb39037fcb
5 changed files with 80 additions and 2 deletions
|
@ -16,6 +16,9 @@ from django.utils.deconstruct import deconstructible
|
|||
from django.utils.translation import ugettext_lazy as _
|
||||
from django.utils.timezone import get_default_timezone
|
||||
|
||||
import custom_migration_operations.operations
|
||||
import custom_migration_operations.more_operations
|
||||
|
||||
|
||||
class TestModel1(object):
|
||||
def upload_to(self):
|
||||
|
@ -222,3 +225,22 @@ class WriterTests(TestCase):
|
|||
expected_path = os.path.join(base_dir, *(app.split('.') + ['migrations', '0001_initial.py']))
|
||||
writer = MigrationWriter(migration)
|
||||
self.assertEqual(writer.path, expected_path)
|
||||
|
||||
def test_custom_operation(self):
|
||||
migration = type(str("Migration"), (migrations.Migration,), {
|
||||
"operations": [
|
||||
custom_migration_operations.operations.TestOperation(),
|
||||
custom_migration_operations.operations.CreateModel(),
|
||||
migrations.CreateModel("MyModel", (), {}, (models.Model,)),
|
||||
custom_migration_operations.more_operations.TestOperation()
|
||||
],
|
||||
"dependencies": []
|
||||
})
|
||||
writer = MigrationWriter(migration)
|
||||
output = writer.as_string()
|
||||
result = self.safe_exec(output)
|
||||
self.assertIn("custom_migration_operations", result)
|
||||
self.assertNotEqual(
|
||||
result['custom_migration_operations'].operations.TestOperation,
|
||||
result['custom_migration_operations'].more_operations.TestOperation
|
||||
)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue