From 89492410aa82d5312c156365bb7451cb6505e97a Mon Sep 17 00:00:00 2001 From: feng <1304903146@qq.com> Date: Wed, 5 Jul 2023 10:08:01 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E6=8E=A8=E9=80=81=E8=B4=A6=E5=8F=B7=20?= =?UTF-8?q?=E4=B8=8D=E5=A1=AB=E5=86=99home=20=E6=8E=A8=E9=80=81=E5=A4=B1?= =?UTF-8?q?=E8=B4=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/accounts/serializers/automations/base.py | 16 +++++++++------- apps/assets/automations/base/manager.py | 7 ++++++- apps/assets/serializers/automations/base.py | 12 ++++++------ 3 files changed, 21 insertions(+), 14 deletions(-) diff --git a/apps/accounts/serializers/automations/base.py b/apps/accounts/serializers/automations/base.py index 1468ecf58..8e7f11f23 100644 --- a/apps/accounts/serializers/automations/base.py +++ b/apps/accounts/serializers/automations/base.py @@ -63,15 +63,17 @@ class AutomationExecutionSerializer(serializers.ModelSerializer): @staticmethod def get_snapshot(obj): - tp = obj.snapshot['type'] + tp = obj.snapshot.get('type', '') + type_display = tp if not hasattr(AutomationTypes, tp) \ + else getattr(AutomationTypes, tp).label snapshot = { 'type': tp, - 'name': obj.snapshot['name'], - 'comment': obj.snapshot['comment'], - 'accounts': obj.snapshot['accounts'], - 'node_amount': len(obj.snapshot['nodes']), - 'asset_amount': len(obj.snapshot['assets']), - 'type_display': getattr(AutomationTypes, tp).label, + 'name': obj.snapshot.get('name'), + 'comment': obj.snapshot.get('comment'), + 'accounts': obj.snapshot.get('accounts'), + 'node_amount': len(obj.snapshot.get('nodes', [])), + 'asset_amount': len(obj.snapshot.get('assets', [])), + 'type_display': type_display, } return snapshot diff --git a/apps/assets/automations/base/manager.py b/apps/assets/automations/base/manager.py index aa31c886f..b0215710a 100644 --- a/apps/assets/automations/base/manager.py +++ b/apps/assets/automations/base/manager.py @@ -55,8 +55,13 @@ class BasePlaybookManager: return {} data = self.params.get(method_id) + default_data = serializer().data if not data: - data = automation_params.get(method_id, {}) + data = automation_params.get(method_id, default_data) + + for k, v in default_data.items(): + data.setdefault(k, v) + params = serializer(data).data return { field_name: automation_params.get(field_name, '') diff --git a/apps/assets/serializers/automations/base.py b/apps/assets/serializers/automations/base.py index 527f71628..d930fd1dc 100644 --- a/apps/assets/serializers/automations/base.py +++ b/apps/assets/serializers/automations/base.py @@ -51,14 +51,14 @@ class AutomationExecutionSerializer(serializers.ModelSerializer): from assets.const import AutomationTypes as AssetTypes from accounts.const import AutomationTypes as AccountTypes tp_dict = dict(AssetTypes.choices) | dict(AccountTypes.choices) - tp = obj.snapshot['type'] + tp = obj.snapshot.get('type', '') snapshot = { 'type': {'value': tp, 'label': tp_dict.get(tp, tp)}, - 'name': obj.snapshot['name'], - 'comment': obj.snapshot['comment'], - 'accounts': obj.snapshot['accounts'], - 'node_amount': len(obj.snapshot['nodes']), - 'asset_amount': len(obj.snapshot['assets']), + 'name': obj.snapshot.get('name'), + 'comment': obj.snapshot.get('comment'), + 'accounts': obj.snapshot.get('accounts'), + 'node_amount': len(obj.snapshot.get('nodes', [])), + 'asset_amount': len(obj.snapshot.get('assets', [])), } return snapshot