Commit 5bc412c3 authored by Markus Holtermann's avatar Markus Holtermann
Browse files

Took AlterOrderWithRespectTo into account when optimizing migrations

Thanks Andrew Godwin for the review.
parent 53044945
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -21,6 +21,7 @@ class MigrationOptimizer(object):
            migrations.AlterModelTable,
            migrations.AlterUniqueTogether,
            migrations.AlterIndexTogether,
            migrations.AlterOrderWithRespectTo,
        )
        self.field_level_operations = (
            migrations.AddField,
@@ -47,6 +48,11 @@ class MigrationOptimizer(object):
                migrations.DeleteModel,
                self.reduce_model_alter_delete,
            ),
            (
                migrations.AlterOrderWithRespectTo,
                migrations.DeleteModel,
                self.reduce_model_alter_delete,
            ),
            (
                migrations.CreateModel,
                migrations.RenameModel,
+13 −3
Original line number Diff line number Diff line
@@ -93,20 +93,30 @@ class OptimizerTests(SimpleTestCase):
            ],
        )

    def test_create_alter_delete_model(self):
    def _test_create_alter_foo_delete_model(self, alter_foo):
        """
        CreateModel, AlterModelTable, AlterUniqueTogether, and DeleteModel should collapse into nothing.
        CreateModel, AlterModelTable, AlterUniqueTogether/AlterIndexTogether/
        AlterOrderWithRespectTo, and DeleteModel should collapse into nothing.
        """
        self.assertOptimizesTo(
            [
                migrations.CreateModel("Foo", [("name", models.CharField(max_length=255))]),
                migrations.AlterModelTable("Foo", "woohoo"),
                migrations.AlterUniqueTogether("Foo", [["a", "b"]]),
                alter_foo,
                migrations.DeleteModel("Foo"),
            ],
            [],
        )

    def test_create_alter_unique_delete_model(self):
        self._test_create_alter_foo_delete_model(migrations.AlterUniqueTogether("Foo", [["a", "b"]]))

    def test_create_alter_index_delete_model(self):
        self._test_create_alter_foo_delete_model(migrations.AlterIndexTogether("Foo", [["a", "b"]]))

    def test_create_alter_owrt_delete_model(self):
        self._test_create_alter_foo_delete_model(migrations.AlterOrderWithRespectTo("Foo", "a"))

    def test_optimize_through_create(self):
        """
        We should be able to optimize away create/delete through a create or delete