Bin
2025-12-16 7423b0c6e1959f30a7e8e453e953310f32ce13c6
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
53
54
55
56
57
58
59
60
61
62
63
64
# Generated by Django 4.2.16 on 2024-10-30 17:57
 
from django.db import migrations, models
from django.db import connections
from django.conf import settings
 
from core.models import AsyncMigrationStatus
from core.redis import start_job_async_or_sync
 
import logging
logger = logging.getLogger(__name__)
migration_name = '0052_auto_20241030_1757'
 
def forward_migration(migration_name, db_alias):
    migration = AsyncMigrationStatus.objects.using(db_alias).create(
        name=migration_name,
        status=AsyncMigrationStatus.STATUS_STARTED,
    )
    logger.info(f'Start async migration {migration_name}')
 
    conn = connections[db_alias]
    if conn.vendor == 'sqlite':
        sql_update_created_at = """
        UPDATE tasks_tasklock
        SET created_at = datetime(expire_at, %s);
        """
        sql_params = (f'-{settings.TASK_LOCK_TTL} seconds',)
    else:
        sql_update_created_at = """
        UPDATE tasks_tasklock
        SET created_at = expire_at - INTERVAL %s;
        """
        sql_params = ('%s seconds' % settings.TASK_LOCK_TTL,)
 
    with conn.cursor() as cursor:
        cursor.execute(sql_update_created_at, sql_params)
 
    migration.status = AsyncMigrationStatus.STATUS_FINISHED
    migration.save(using=db_alias)
    logger.info(f'Async migration {migration_name} complete')
 
def forwards(apps, schema_editor):
    # Dispatch migrations to rqworkers
    db_alias = schema_editor.connection.alias
    start_job_async_or_sync(forward_migration, migration_name=migration_name, db_alias=db_alias)
 
def backwards(apps, schema_editor):
    pass
 
class Migration(migrations.Migration):
    atomic = False
 
    dependencies = [
        ('tasks', '0051_tasklock_created_at'),
    ]
 
    operations = [
        migrations.AlterField(
            model_name='tasklock',
            name='created_at',
            field=models.DateTimeField(auto_now_add=True, help_text='Creation time', null=True, verbose_name='created at'),
        ),
        migrations.RunPython(forwards, backwards),
    ]