コード例 #1
0
    def add_delete_partitioned_model(self, operation: DeleteModel):
        """Adds a :see:PostgresDeletePartitionedModel operation to the list of
        operations to execute in the migration."""

        _, args, kwargs = operation.deconstruct()
        return self.add(
            operations.PostgresDeletePartitionedModel(*args, **kwargs))
コード例 #2
0
    def add_delete_materialized_view_model(self, operation: DeleteModel):
        """Adds a :see:PostgresDeleteMaterializedViewModel operation to the
        list of operations to execute in the migration."""

        _, args, kwargs = operation.deconstruct()
        return self.add(
            operations.PostgresDeleteMaterializedViewModel(*args, **kwargs))
コード例 #3
0
 def test_ambiguous_operations(self):
     self.migration.operations = [
         CreateModel("model", []),
         DeleteModel("model")
     ]
     with self.assertRaises(AmbiguousStage):
         must_post_deploy_migration(self.migration)
コード例 #4
0
 def test_ambiguous_operations(self):
     self.migration.operations = [
         CreateModel("model", []),
         DeleteModel("model")
     ]
     with self.assertRaises(AmbiguousStage):
         get_migration_stage(self.migration)
コード例 #5
0
 def test_mixed_reorder(self):
     post_deploy_operations = [DeleteModel("other")]
     self.assertEqual(
         partition_operations(
             post_deploy_operations + self.pre_deploy_operations,
             "migrations"),
         (self.pre_deploy_operations, post_deploy_operations),
     )
コード例 #6
0
 def test_post_deploy_operations(self):
     post_deploy_operation = Operation()
     post_deploy_operation.stage = Stage.POST_DEPLOY
     operations = [
         DeleteModel("model"),
         RemoveField("model", "field"),
         post_deploy_operation,
     ]
     for operation in operations:
         with self.subTest(operation=operation):
             self.assertIs(get_operation_stage(operation),
                           Stage.POST_DEPLOY)
コード例 #7
0
    def test_operations_stages(self):
        self.assertIsNone(get_migration_stage(self.migration))

        self.migration.operations = [CreateModel("model", [])]
        self.assertEqual(get_migration_stage(self.migration), Stage.PRE_DEPLOY)

        self.migration.operations = [
            DeleteModel("model"),
            RemoveField("model", "field"),
        ]
        self.assertEqual(get_migration_stage(self.migration),
                         Stage.POST_DEPLOY)
コード例 #8
0
    def test_stage_fallback_setting(self):
        self.migration.operations = [
            CreateModel("model", []),
            DeleteModel("model")
        ]
        with self.assertRaises(AmbiguousStage):
            get_migration_stage(self.migration)

        overrides = ["tests.migration", "tests"]
        for stage, override in product(Stage, overrides):
            with self.subTest(stage=stage, override=override), self.settings(
                    MIGRATION_STAGES_FALLBACK={override: stage}):
                self.assertIs(get_migration_stage(self.migration), stage)
コード例 #9
0
class PartitionOperationsTests(SimpleTestCase):
    pre_deploy_operations = [
        CreateModel("model", []),
    ]
    post_deploy_operations = [
        DeleteModel("model"),
    ]

    def test_empty(self):
        self.assertEqual(partition_operations([], "migrations"), ([], []))

    def test_pre_deploy_only(self):
        self.assertEqual(
            partition_operations(self.pre_deploy_operations, "migrations"),
            (self.pre_deploy_operations, []),
        )

    def test_post_deploy_only(self):
        self.assertEqual(
            partition_operations(self.post_deploy_operations, "migrations"),
            ([], self.post_deploy_operations),
        )

    def test_mixed(self):
        self.assertEqual(
            partition_operations(
                self.pre_deploy_operations + self.post_deploy_operations,
                "migrations"),
            (self.pre_deploy_operations, self.post_deploy_operations),
        )

    def test_mixed_reorder(self):
        post_deploy_operations = [DeleteModel("other")]
        self.assertEqual(
            partition_operations(
                post_deploy_operations + self.pre_deploy_operations,
                "migrations"),
            (self.pre_deploy_operations, post_deploy_operations),
        )

    def test_ambiguous(self):
        with self.assertRaises(AmbiguousStage):
            partition_operations(
                self.post_deploy_operations + self.pre_deploy_operations,
                "migrations")