From 5832246e5f22e8d6a0e65e879a0a7d3fcb431cb2 Mon Sep 17 00:00:00 2001 From: ibuler Date: Fri, 16 Jun 2023 11:30:38 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20=E4=BF=AE=E6=94=B9=20login=20acls=20?= =?UTF-8?q?=E8=BF=81=E7=A7=BB=E5=86=B2=E7=AA=81=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit perf: 修改 login acls 迁移,避免冲突 --- .../acls/migrations/0016_auto_20230606_1857.py | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/apps/acls/migrations/0016_auto_20230606_1857.py b/apps/acls/migrations/0016_auto_20230606_1857.py index 2838b5d1f..d703dac52 100644 --- a/apps/acls/migrations/0016_auto_20230606_1857.py +++ b/apps/acls/migrations/0016_auto_20230606_1857.py @@ -1,5 +1,4 @@ # Generated by Django 3.2.17 on 2023-06-06 10:57 -from collections import defaultdict from django.db import migrations, models @@ -8,17 +7,20 @@ import common.db.fields def migrate_users_login_acls(apps, schema_editor): login_acl_model = apps.get_model('acls', 'LoginACL') - name_used = defaultdict(int) - for login_acl in login_acl_model.objects.all(): - name = login_acl.name - if name_used[name] > 0: - login_acl.name += "_{}".format(name_used[name]) - name_used[name] += 1 + name_used = [] + login_acls = [] + for login_acl in login_acl_model.objects.all().select_related('user'): + name = '{}_{}'.format(login_acl.name, login_acl.user.username) + if name.lower() in name_used: + name += '_{}'.format(str(login_acl.user_id)[:4]) + name_used.append(name.lower()) + login_acl.name = name login_acl.users = { "type": "ids", "ids": [str(login_acl.user_id)] } - login_acl.save() + login_acls.append(login_acl) + login_acl_model.objects.bulk_update(login_acls, ['name', 'users']) class Migration(migrations.Migration):