perf: 优化 LoginACL 迁移,避免 uniq error

pull/10655/head
ibuler 2023-06-08 18:19:32 +08:00
parent 41e147d4b2
commit 1c95b67154
2 changed files with 10 additions and 2 deletions

View File

@ -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',

View File

@ -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,