jumpserver/apps/authentication/migrations/0012_auto_20220816_1629.py

54 lines
1.6 KiB
Python
Raw Normal View History

2022-08-16 08:34:16 +00:00
# Generated by Django 3.2.14 on 2022-08-16 08:29
from django.db import migrations, models
2022-08-17 03:54:18 +00:00
def migrate_system_user_to_account(apps, schema_editor):
connection_token_model = apps.get_model("authentication", "ConnectionToken")
2022-08-16 08:34:16 +00:00
count = 0
bulk_size = 10000
while True:
connection_tokens = connection_token_model.objects \
2022-08-22 10:48:07 +00:00
.prefetch_related('system_user')[count:bulk_size]
2022-08-16 08:34:16 +00:00
if not connection_tokens:
break
count += len(connection_tokens)
updated = []
for connection_token in connection_tokens:
connection_token.account = connection_token.system_user.username
updated.append(connection_token)
connection_token_model.objects.bulk_update(updated, ['account'])
class Migration(migrations.Migration):
dependencies = [
('authentication', '0011_auto_20220705_1940'),
]
operations = [
migrations.RemoveField(
model_name='connectiontoken',
name='application',
),
migrations.RemoveField(
model_name='connectiontoken',
name='application_display',
),
migrations.RemoveField(
model_name='connectiontoken',
name='system_user_display',
),
migrations.AddField(
model_name='connectiontoken',
name='account',
field=models.CharField(default='', max_length=128, verbose_name='Account'),
),
2022-08-17 03:54:18 +00:00
migrations.RunPython(migrate_system_user_to_account),
2022-08-16 08:34:16 +00:00
migrations.RemoveField(
model_name='connectiontoken',
name='system_user',
)
]