Loading AUTHORS +1 −0 Original line number Diff line number Diff line Loading @@ -441,6 +441,7 @@ answer newbie questions, and generally made Django that much better: Mark Lavin <markdlavin@gmail.com> Mark Sandstrom <mark@deliciouslynerdy.com> Markus Holtermann <https://markusholtermann.eu> Marten Kenbeek <marten.knbk+django@gmail.com> martin.glueck@gmail.com Martin Green Martin Kosír <martin@martinkosir.net> Loading django/db/migrations/writer.py +5 −0 Original line number Diff line number Diff line Loading @@ -13,6 +13,7 @@ from importlib import import_module from django.apps import apps from django.db import migrations, models from django.db.migrations.loader import MigrationLoader from django.db.migrations.operations.base import Operation from django.utils import datetime_safe, six from django.utils._os import upath from django.utils.encoding import force_text Loading Loading @@ -423,6 +424,10 @@ class MigrationWriter(object): return "%s.as_manager()" % name, imports else: return cls.serialize_deconstructed(manager_path, args, kwargs) elif isinstance(value, Operation): string, imports = OperationWriter(value, indentation=0).serialize() # Nested operation, trailing comma is handled in upper OperationWriter._write() return string.rstrip(','), imports # Anything that knows how to deconstruct itself. elif hasattr(value, 'deconstruct'): return cls.serialize_deconstructed(*value.deconstruct()) Loading docs/releases/1.8.1.txt +4 −0 Original line number Diff line number Diff line Loading @@ -17,3 +17,7 @@ Bugfixes * Prevented ``TypeError`` in translation functions ``check_for_language()`` and ``get_language_bidi()`` when translations are deactivated (:ticket:`24569`). * Fixed :djadmin:`squashmigrations` command when using :class:`~django.db.migrations.operations.SeparateDatabaseAndState` (:ticket:`24278`). tests/migrations/test_writer.py +44 −0 Original line number Diff line number Diff line Loading @@ -81,6 +81,27 @@ class OperationWriterTests(SimpleTestCase): '),' ) def test_nested_args_signature(self): operation = custom_migration_operations.operations.ArgsOperation( custom_migration_operations.operations.ArgsOperation(1, 2), custom_migration_operations.operations.KwargsOperation(kwarg1=3, kwarg2=4) ) buff, imports = OperationWriter(operation, indentation=0).serialize() self.assertEqual(imports, {'import custom_migration_operations.operations'}) self.assertEqual( buff, 'custom_migration_operations.operations.ArgsOperation(\n' ' arg1=custom_migration_operations.operations.ArgsOperation(\n' ' arg1=1,\n' ' arg2=2,\n' ' ),\n' ' arg2=custom_migration_operations.operations.KwargsOperation(\n' ' kwarg1=3,\n' ' kwarg2=4,\n' ' ),\n' '),' ) def test_multiline_args_signature(self): operation = custom_migration_operations.operations.ArgsOperation("test\n arg1", "test\narg2") buff, imports = OperationWriter(operation, indentation=0).serialize() Loading @@ -107,6 +128,29 @@ class OperationWriterTests(SimpleTestCase): '),' ) def test_nested_operation_expand_args_signature(self): operation = custom_migration_operations.operations.ExpandArgsOperation( arg=[ custom_migration_operations.operations.KwargsOperation( kwarg1=1, kwarg2=2, ), ] ) buff, imports = OperationWriter(operation, indentation=0).serialize() self.assertEqual(imports, {'import custom_migration_operations.operations'}) self.assertEqual( buff, 'custom_migration_operations.operations.ExpandArgsOperation(\n' ' arg=[\n' ' custom_migration_operations.operations.KwargsOperation(\n' ' kwarg1=1,\n' ' kwarg2=2,\n' ' ),\n' ' ],\n' '),' ) class WriterTests(TestCase): """ Loading Loading
AUTHORS +1 −0 Original line number Diff line number Diff line Loading @@ -441,6 +441,7 @@ answer newbie questions, and generally made Django that much better: Mark Lavin <markdlavin@gmail.com> Mark Sandstrom <mark@deliciouslynerdy.com> Markus Holtermann <https://markusholtermann.eu> Marten Kenbeek <marten.knbk+django@gmail.com> martin.glueck@gmail.com Martin Green Martin Kosír <martin@martinkosir.net> Loading
django/db/migrations/writer.py +5 −0 Original line number Diff line number Diff line Loading @@ -13,6 +13,7 @@ from importlib import import_module from django.apps import apps from django.db import migrations, models from django.db.migrations.loader import MigrationLoader from django.db.migrations.operations.base import Operation from django.utils import datetime_safe, six from django.utils._os import upath from django.utils.encoding import force_text Loading Loading @@ -423,6 +424,10 @@ class MigrationWriter(object): return "%s.as_manager()" % name, imports else: return cls.serialize_deconstructed(manager_path, args, kwargs) elif isinstance(value, Operation): string, imports = OperationWriter(value, indentation=0).serialize() # Nested operation, trailing comma is handled in upper OperationWriter._write() return string.rstrip(','), imports # Anything that knows how to deconstruct itself. elif hasattr(value, 'deconstruct'): return cls.serialize_deconstructed(*value.deconstruct()) Loading
docs/releases/1.8.1.txt +4 −0 Original line number Diff line number Diff line Loading @@ -17,3 +17,7 @@ Bugfixes * Prevented ``TypeError`` in translation functions ``check_for_language()`` and ``get_language_bidi()`` when translations are deactivated (:ticket:`24569`). * Fixed :djadmin:`squashmigrations` command when using :class:`~django.db.migrations.operations.SeparateDatabaseAndState` (:ticket:`24278`).
tests/migrations/test_writer.py +44 −0 Original line number Diff line number Diff line Loading @@ -81,6 +81,27 @@ class OperationWriterTests(SimpleTestCase): '),' ) def test_nested_args_signature(self): operation = custom_migration_operations.operations.ArgsOperation( custom_migration_operations.operations.ArgsOperation(1, 2), custom_migration_operations.operations.KwargsOperation(kwarg1=3, kwarg2=4) ) buff, imports = OperationWriter(operation, indentation=0).serialize() self.assertEqual(imports, {'import custom_migration_operations.operations'}) self.assertEqual( buff, 'custom_migration_operations.operations.ArgsOperation(\n' ' arg1=custom_migration_operations.operations.ArgsOperation(\n' ' arg1=1,\n' ' arg2=2,\n' ' ),\n' ' arg2=custom_migration_operations.operations.KwargsOperation(\n' ' kwarg1=3,\n' ' kwarg2=4,\n' ' ),\n' '),' ) def test_multiline_args_signature(self): operation = custom_migration_operations.operations.ArgsOperation("test\n arg1", "test\narg2") buff, imports = OperationWriter(operation, indentation=0).serialize() Loading @@ -107,6 +128,29 @@ class OperationWriterTests(SimpleTestCase): '),' ) def test_nested_operation_expand_args_signature(self): operation = custom_migration_operations.operations.ExpandArgsOperation( arg=[ custom_migration_operations.operations.KwargsOperation( kwarg1=1, kwarg2=2, ), ] ) buff, imports = OperationWriter(operation, indentation=0).serialize() self.assertEqual(imports, {'import custom_migration_operations.operations'}) self.assertEqual( buff, 'custom_migration_operations.operations.ExpandArgsOperation(\n' ' arg=[\n' ' custom_migration_operations.operations.KwargsOperation(\n' ' kwarg1=1,\n' ' kwarg2=2,\n' ' ),\n' ' ],\n' '),' ) class WriterTests(TestCase): """ Loading