Files
old-saburly-wagtail-web/env/lib/python3.10/site-packages/wagtail/test/streamfield_migrations/testutils.py
2024-08-27 20:33:44 +02:00

44 lines
1.4 KiB
Python

from django.db import connection
from django.db.migrations import Migration
from django.db.migrations.loader import MigrationLoader
from wagtail.blocks.migrations.migrate_operation import MigrateStreamData
class MigrationTestMixin:
model = None
default_operation_and_block_path = []
app_name = None
def init_migration(self, revisions_from=None, operations_and_block_path=None):
migration = Migration(
"test_migration", "wagtail_streamfield_migration_toolkit_test"
)
migration_operation = MigrateStreamData(
app_name=self.app_name,
model_name=self.model.__name__,
field_name="content",
operations_and_block_paths=operations_and_block_path
or self.default_operation_and_block_path,
revisions_from=revisions_from,
)
migration.operations = [migration_operation]
return migration
def apply_migration(
self,
revisions_from=None,
operations_and_block_path=None,
):
migration = self.init_migration(
revisions_from=revisions_from,
operations_and_block_path=operations_and_block_path,
)
loader = MigrationLoader(connection=connection)
loader.build_graph()
project_state = loader.project_state()
schema_editor = connection.schema_editor(atomic=migration.atomic)
migration.apply(project_state, schema_editor)