# Generated by Django 3.2.20 on 2023-11-03 00:20 from django.db import migrations from projects.models import Project from core.models import AsyncMigrationStatus from core.redis import start_job_async_or_sync import logging logger = logging.getLogger(__name__) def _fill_label_config_hash(migration_name, db_alias): project_tuples = Project.objects.using(db_alias).all().values_list('id', 'parsed_label_config') for project_id, parsed_label_config in project_tuples: migration = AsyncMigrationStatus.objects.using(db_alias).create( project_id=project_id, name=migration_name, status=AsyncMigrationStatus.STATUS_STARTED, ) hashed_label_config = hash(str(parsed_label_config)) Project.objects.using(db_alias).filter(id=project_id).update(label_config_hash=hashed_label_config) migration.status = AsyncMigrationStatus.STATUS_FINISHED migration.save(using=db_alias) def fill_label_config_hash(migration_name, db_alias): logger.info('Start filling label config hash') start_job_async_or_sync(_fill_label_config_hash, migration_name=migration_name, db_alias=db_alias) logger.info('Finished filling label config hash') def forward(apps, schema_editor): db_alias = schema_editor.connection.alias fill_label_config_hash('0026_auto_20231103_0020', db_alias) def backwards(apps, schema_editor): pass class Migration(migrations.Migration): dependencies = [ ('projects', '0025_project_label_config_hash'), ] operations = [ migrations.RunPython(forward, backwards) ]