From 1c95b6715412789dc1970c198af1f56e64bdadd2 Mon Sep 17 00:00:00 2001 From: ibuler Date: Thu, 8 Jun 2023 18:19:32 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20=E4=BC=98=E5=8C=96=20LoginACL=20?= =?UTF-8?q?=E8=BF=81=E7=A7=BB=EF=BC=8C=E9=81=BF=E5=85=8D=20uniq=20error?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/acls/migrations/0016_auto_20230606_1857.py | 8 ++++++++ apps/acls/models/login_acl.py | 4 ++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/apps/acls/migrations/0016_auto_20230606_1857.py b/apps/acls/migrations/0016_auto_20230606_1857.py index 305f0e49b..2838b5d1f 100644 --- a/apps/acls/migrations/0016_auto_20230606_1857.py +++ b/apps/acls/migrations/0016_auto_20230606_1857.py @@ -1,4 +1,5 @@ # Generated by Django 3.2.17 on 2023-06-06 10:57 +from collections import defaultdict from django.db import migrations, models @@ -7,7 +8,13 @@ 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 login_acl.users = { "type": "ids", "ids": [str(login_acl.user_id)] } @@ -25,6 +32,7 @@ class Migration(migrations.Migration): name='users', field=common.db.fields.JSONManyToManyField(default=dict, to='users.User', verbose_name='Users'), ), + migrations.RunPython(migrate_users_login_acls), migrations.RemoveField( model_name='loginacl', name='user', diff --git a/apps/acls/models/login_acl.py b/apps/acls/models/login_acl.py index 68e6aa22a..80f5357ea 100644 --- a/apps/acls/models/login_acl.py +++ b/apps/acls/models/login_acl.py @@ -28,14 +28,14 @@ class LoginACL(UserBaseACL): from tickets import const from tickets.models import ApplyLoginTicket from orgs.models import Organization - title = _('Login confirm') + ' {}'.format(self.user) + title = _('Login confirm') + ' {}'.format(request.user) login_ip = get_request_ip(request) if request else '' login_ip = login_ip or '0.0.0.0' login_city = get_ip_city(login_ip) login_datetime = local_now_display() data = { 'title': title, - 'applicant': self.user, + 'applicant': request.user, 'apply_login_ip': login_ip, 'org_id': Organization.ROOT_ID, 'apply_login_city': login_city,