Bin
2025-12-17 2e6c955be321cefd7e0c4a3031eab805e0a5a303
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
# 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)
    ]