mirror of https://github.com/jumpserver/jumpserver
ibuler
2 years ago
2 changed files with 103 additions and 15 deletions
@ -0,0 +1,45 @@ |
|||||||
|
# Generated by Django 3.2.14 on 2022-08-16 03:32 |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
import time |
||||||
|
from django.db import migrations, models |
||||||
|
|
||||||
|
|
||||||
|
def migrate_system_user_to_accounts(apps, schema_editor): |
||||||
|
asset_permission_model = apps.get_model("perms", "AssetPermission") |
||||||
|
|
||||||
|
count = 0 |
||||||
|
bulk_size = 10000 |
||||||
|
while True: |
||||||
|
asset_permissions = asset_permission_model.objects \ |
||||||
|
.prefetch_related('system_users')[count:bulk_size] |
||||||
|
if not asset_permissions: |
||||||
|
break |
||||||
|
count += len(asset_permissions) |
||||||
|
|
||||||
|
updated = [] |
||||||
|
for asset_permission in asset_permissions: |
||||||
|
asset_permission.accounts = [s.username for s in asset_permission.system_users.all()] |
||||||
|
updated.append(asset_permission) |
||||||
|
asset_permission_model.objects.bulk_update(updated, ['accounts']) |
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration): |
||||||
|
|
||||||
|
dependencies = [ |
||||||
|
('perms', '0029_auto_20220728_1728'), |
||||||
|
] |
||||||
|
|
||||||
|
operations = [ |
||||||
|
migrations.AddField( |
||||||
|
model_name='assetpermission', |
||||||
|
name='accounts', |
||||||
|
field=models.JSONField(default=list, verbose_name='Accounts'), |
||||||
|
), |
||||||
|
migrations.RunPython(migrate_system_user_to_accounts), |
||||||
|
migrations.RemoveField( |
||||||
|
model_name='assetpermission', |
||||||
|
name='system_users', |
||||||
|
), |
||||||
|
] |
Loading…
Reference in new issue