From 6411642ced2b7034a5dff4c545ebbf9bcefa118c Mon Sep 17 00:00:00 2001 From: jiangweidong Date: Mon, 14 Nov 2022 08:19:32 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20=E4=BC=98=E5=8C=96=E6=93=8D=E4=BD=9C?= =?UTF-8?q?=E6=97=A5=E5=BF=97=E4=B8=80=E4=BA=9B=E5=86=85=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../attrs/application_type/chrome.py | 2 +- apps/audits/const.py | 2 ++ apps/audits/utils.py | 21 ++++++++----------- apps/common/drf/fields.py | 3 ++- 4 files changed, 14 insertions(+), 14 deletions(-) diff --git a/apps/applications/serializers/attrs/application_type/chrome.py b/apps/applications/serializers/attrs/application_type/chrome.py index 08035bc31..ba491e2fe 100644 --- a/apps/applications/serializers/attrs/application_type/chrome.py +++ b/apps/applications/serializers/attrs/application_type/chrome.py @@ -23,7 +23,7 @@ class ChromeSerializer(RemoteAppSerializer): ) chrome_password = EncryptedField( max_length=128, allow_blank=True, required=False, - label=_('Chrome password'), allow_null=True + label=_('Chrome password'), allow_null=True, encrypted_key='chrome_password' ) diff --git a/apps/audits/const.py b/apps/audits/const.py index a49363e0a..17380311b 100644 --- a/apps/audits/const.py +++ b/apps/audits/const.py @@ -16,6 +16,8 @@ MODELS_NEED_RECORD = ( 'CommandFilter', 'Platform', 'Label', # applications 'Application', + # account + 'AuthBook', # orgs 'Organization', # settings diff --git a/apps/audits/utils.py b/apps/audits/utils.py index 8ce23a498..e62a40577 100644 --- a/apps/audits/utils.py +++ b/apps/audits/utils.py @@ -59,14 +59,15 @@ def get_resource_display(resource): def model_to_dict_for_operate_log( instance, include_model_fields=True, include_related_fields=True ): - need_continue_fields = ['date_updated'] + model_need_continue_fields = ['date_updated'] + m2m_need_continue_fields = ['history_passwords'] opts = instance._meta data = {} for f in chain(opts.concrete_fields, opts.private_fields): if isinstance(f, (models.FileField, models.ImageField)): continue - if getattr(f, 'attname', None) in need_continue_fields: + if getattr(f, 'attname', None) in model_need_continue_fields: continue value = getattr(instance, f.name) or getattr(instance, f.attname) @@ -75,11 +76,6 @@ def model_to_dict_for_operate_log( if getattr(f, 'primary_key', False): f.verbose_name = 'id' - elif isinstance(f, ( - fields.EncryptCharField, fields.EncryptTextField, - fields.EncryptJsonDictCharField, fields.EncryptJsonDictTextField - )) or getattr(f, 'attname', '') == 'password': - value = 'encrypt|%s' % value elif isinstance(value, list): value = [str(v) for v in value] @@ -91,11 +87,12 @@ def model_to_dict_for_operate_log( value = [] if instance.pk is not None: related_name = getattr(f, 'attname', '') or getattr(f, 'related_name', '') - if related_name: - try: - value = [str(i) for i in getattr(instance, related_name).all()] - except: - pass + if not related_name or related_name in m2m_need_continue_fields: + continue + try: + value = [str(i) for i in getattr(instance, related_name).all()] + except: + pass if not value: continue try: diff --git a/apps/common/drf/fields.py b/apps/common/drf/fields.py index 353b3a75b..4370d0054 100644 --- a/apps/common/drf/fields.py +++ b/apps/common/drf/fields.py @@ -32,8 +32,9 @@ class EncryptedField(serializers.CharField): if write_only is None: write_only = True kwargs['write_only'] = write_only + encrypted_key = kwargs.pop('encrypted_key', None) super().__init__(**kwargs) - add_encrypted_field_set(self.label) + add_encrypted_field_set(encrypted_key or self.label) def to_internal_value(self, value): value = super().to_internal_value(value)