mirror of https://github.com/jumpserver/jumpserver
46 lines
1.5 KiB
Python
46 lines
1.5 KiB
Python
# Generated by Django 3.2.12 on 2022-07-13 09:46
|
|
|
|
import time
|
|
from django.db import migrations
|
|
|
|
|
|
def migrate_asset_system_user_relations(apps, schema_editor):
|
|
system_user_model = apps.get_model('assets', 'SystemUser')
|
|
old_model = apps.get_model('assets', 'AuthBook')
|
|
new_model = system_user_model.assets.through
|
|
|
|
count = 0
|
|
bulk_size = 1000
|
|
print("\nStart migrate asset system user relations")
|
|
while True:
|
|
start = time.time()
|
|
auth_books = old_model.objects.only('asset_id', 'systemuser_id')[count:count+bulk_size]
|
|
auth_books = list(auth_books)
|
|
count += len(auth_books)
|
|
if not auth_books:
|
|
break
|
|
asset_system_users = []
|
|
for auth_book in auth_books:
|
|
if not auth_book.asset_id or not auth_book.systemuser_id:
|
|
continue
|
|
asset_system_user = new_model(
|
|
asset_id=auth_book.asset_id,
|
|
systemuser_id=auth_book.systemuser_id
|
|
)
|
|
asset_system_users.append(asset_system_user)
|
|
new_model.objects.bulk_create(asset_system_users, ignore_conflicts=True)
|
|
print("Create asset system user relations: {}-{} using: {:.2f}s".format(
|
|
count - bulk_size, count, time.time()-start
|
|
))
|
|
|
|
|
|
class Migration(migrations.Migration):
|
|
|
|
dependencies = [
|
|
('assets', '0094_alter_systemuser_assets'),
|
|
]
|
|
|
|
operations = [
|
|
migrations.RunPython(migrate_asset_system_user_relations)
|
|
]
|