# Generated by Django 3.2.14 on 2022-08-17 09:16
import time

from django.db import migrations


def migrate_account_dirty_data(apps, schema_editor):
    db_alias = schema_editor.connection.alias
    account_model = apps.get_model('applications', 'Account')

    count = 0
    bulk_size = 1000

    while True:
        accounts = account_model.objects.using(db_alias) \
                       .filter(org_id='')[count:count + bulk_size]

        if not accounts:
            break

        accounts = list(accounts)
        start = time.time()
        for i in accounts:
            if i.app:
                org_id = i.app.org_id
            elif i.systemuser:
                org_id = i.systemuser.org_id
            else:
                org_id = ''
            if org_id:
                i.org_id = org_id

        account_model.objects.bulk_update(accounts, ['org_id', ])
        print("Update account org is empty: {}-{} using: {:.2f}s".format(
            count, count + len(accounts), time.time() - start
        ))
        count += len(accounts)


class Migration(migrations.Migration):
    dependencies = [
        ('applications', '0025_auto_20220817_1346'),
        ('perms', '0031_auto_20220816_1600'),
        ('ops', '0022_auto_20220817_1346'),
        ('assets', '0100_auto_20220711_1413'),
        ('tickets', '0020_auto_20220817_1346'),
    ]

    operations = [
        migrations.RunPython(migrate_account_dirty_data),
        migrations.DeleteModel(
            name='Account',
        ),
        migrations.DeleteModel(
            name='HistoricalAccount',
        ),
        migrations.DeleteModel(
            name='ApplicationUser',
        ),
    ]
