Bring legacy django-reversion tables to the 3.x schema on start

This commit is contained in:
sajeyks 2026-10-06 10:32:20 +03:00
commit aebf065449

View file

@ -29,6 +29,23 @@ try:
call_command('migrate', 'cmsplugin_filer_image', interactive=False, skip_checks=True)
finally:
MigrationLoader.check_consistent_history = check
# django-reversion 1.x tables: 3.x only ships one squashed migration that would
# re-create them, so bring the old tables to its schema and record it as applied.
squash = '0001_squashed_0004_auto_20160611_1202'
if (recorder.migration_qs.filter(app='reversion', name='0002_auto_20141216_1509').exists()
and not recorder.migration_qs.filter(app='reversion', name=squash).exists()):
with connection.cursor() as cursor:
for sql in (
'ALTER TABLE reversion_revision DROP COLUMN manager_slug',
'ALTER TABLE reversion_version DROP COLUMN object_id_int',
'ALTER TABLE reversion_version ALTER COLUMN object_id TYPE varchar(191)',
"ALTER TABLE reversion_version ADD COLUMN db varchar(191) NOT NULL DEFAULT 'default'",
'ALTER TABLE reversion_version ALTER COLUMN db DROP DEFAULT',
'ALTER TABLE reversion_version ADD CONSTRAINT reversion_version_db_unique '
'UNIQUE (db, content_type_id, object_id, revision_id)',
):
cursor.execute(sql)
recorder.record_applied('reversion', squash)
call_command('migrate', interactive=False, skip_checks=True)
from django.contrib.sites.models import Site