fix: PrivateToken创建报错 (#9387)

Co-authored-by: Jiangjie.Bai <bugatti_it@163.com>
pull/9389/head
jiangweidong 2023-02-01 15:06:10 +08:00 committed by GitHub
parent acab0b765c
commit e324c46f87
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 22 additions and 2 deletions

View File

@ -194,7 +194,7 @@ class OperatorLogHandler(metaclass=Singleton):
remote_addr = get_request_ip(current_request)
if resource_display is None:
resource_display = self.get_resource_display(resource)
resource_id = resource.id if resource is not None else ''
resource_id = getattr(resource, 'pk', '')
before, after = self.data_processing(before, after)
if not force and not any([before, after]):
# 前后都没变化,没必要生成日志,除非手动强制保存

View File

@ -0,0 +1,18 @@
# Generated by Django 3.2.16 on 2023-02-01 06:52
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('audits', '0020_auto_20230117_1004'),
]
operations = [
migrations.AlterField(
model_name='operatelog',
name='resource_id',
field=models.CharField(blank=True, db_index=True, default='', max_length=128, verbose_name='Resource'),
),
]

View File

@ -53,7 +53,7 @@ class OperateLog(OrgModelMixin):
resource_type = models.CharField(max_length=64, verbose_name=_("Resource Type"))
resource = models.CharField(max_length=128, verbose_name=_("Resource"))
resource_id = models.CharField(
max_length=36, blank=True, default='', db_index=True,
max_length=128, blank=True, default='', db_index=True,
verbose_name=_("Resource")
)
remote_addr = models.CharField(max_length=128, verbose_name=_("Remote addr"), blank=True, null=True)

View File

@ -136,10 +136,12 @@ def on_object_pre_create_or_update(sender, instance=None, raw=False, using=None,
)
if not ok:
return
# users.PrivateToken Model 没有 id 有 pk字段
instance_id = getattr(instance, 'id', getattr(instance, 'pk', None))
instance_before_data = {'id': instance_id}
raw_instance = type(instance).objects.filter(pk=instance_id).first()
if raw_instance:
instance_before_data = model_to_dict(raw_instance)
operate_log_id = str(uuid.uuid4())