From e324c46f87e98ade7fe09c0c77d8dff52ec5770d Mon Sep 17 00:00:00 2001 From: jiangweidong <80373698+Hi-JWD@users.noreply.github.com> Date: Wed, 1 Feb 2023 15:06:10 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20PrivateToken=E5=88=9B=E5=BB=BA=E6=8A=A5?= =?UTF-8?q?=E9=94=99=20(#9387)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Jiangjie.Bai --- apps/audits/handler.py | 2 +- .../0021_alter_operatelog_resource_id.py | 18 ++++++++++++++++++ apps/audits/models.py | 2 +- apps/audits/signal_handlers.py | 2 ++ 4 files changed, 22 insertions(+), 2 deletions(-) create mode 100644 apps/audits/migrations/0021_alter_operatelog_resource_id.py diff --git a/apps/audits/handler.py b/apps/audits/handler.py index 9d521824b..41fd59c6c 100644 --- a/apps/audits/handler.py +++ b/apps/audits/handler.py @@ -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]): # 前后都没变化,没必要生成日志,除非手动强制保存 diff --git a/apps/audits/migrations/0021_alter_operatelog_resource_id.py b/apps/audits/migrations/0021_alter_operatelog_resource_id.py new file mode 100644 index 000000000..9dadae738 --- /dev/null +++ b/apps/audits/migrations/0021_alter_operatelog_resource_id.py @@ -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'), + ), + ] diff --git a/apps/audits/models.py b/apps/audits/models.py index 86c7597a7..93fb6733b 100644 --- a/apps/audits/models.py +++ b/apps/audits/models.py @@ -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) diff --git a/apps/audits/signal_handlers.py b/apps/audits/signal_handlers.py index d5da3d1f7..2f209e09b 100644 --- a/apps/audits/signal_handlers.py +++ b/apps/audits/signal_handlers.py @@ -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())