mirror of
https://github.com/1Panel-dev/MaxKB.git
synced 2025-12-26 01:33:05 +00:00
feat: add recursive filtering for file_bytes in context data
This commit is contained in:
parent
831c07d51f
commit
daacbc3e4e
|
|
@ -126,6 +126,16 @@ def valid_function(tool_lib, workspace_id):
|
|||
if not tool_lib.is_active:
|
||||
raise Exception(_("Tool is not active"))
|
||||
|
||||
def _filter_file_bytes(data):
|
||||
"""递归过滤掉所有层级的 file_bytes"""
|
||||
if isinstance(data, dict):
|
||||
return {k: _filter_file_bytes(v) for k, v in data.items() if k != 'file_bytes'}
|
||||
elif isinstance(data, list):
|
||||
return [_filter_file_bytes(item) for item in data]
|
||||
else:
|
||||
return data
|
||||
|
||||
|
||||
|
||||
class BaseToolLibNodeNode(IToolLibNode):
|
||||
def save_context(self, details, workflow_manage):
|
||||
|
|
@ -165,15 +175,8 @@ class BaseToolLibNodeNode(IToolLibNode):
|
|||
'kind') == 'data-source' else {}, _write_context=write_context)
|
||||
|
||||
def get_details(self, index: int, **kwargs):
|
||||
result = self.context.get('result')
|
||||
# 过滤掉 file_bytes
|
||||
if isinstance(result, dict) and 'file_bytes' in result:
|
||||
result = {k: v for k, v in result.items() if k != 'file_bytes'}
|
||||
elif isinstance(result, list):
|
||||
result = [
|
||||
{k: v for k, v in item.items() if k != 'file_bytes'} if isinstance(item, dict) else item
|
||||
for item in result
|
||||
]
|
||||
result = _filter_file_bytes(self.context.get('result'))
|
||||
|
||||
return {
|
||||
'name': self.node.properties.get('stepName'),
|
||||
"index": index,
|
||||
|
|
|
|||
|
|
@ -9,6 +9,15 @@
|
|||
from application.flow.i_step_node import NodeResult
|
||||
from application.flow.step_node.variable_aggregation_node.i_variable_aggregation_node import IVariableAggregation
|
||||
|
||||
def _filter_file_bytes(data):
|
||||
"""递归过滤掉所有层级的 file_bytes"""
|
||||
if isinstance(data, dict):
|
||||
return {k: _filter_file_bytes(v) for k, v in data.items() if k != 'file_bytes'}
|
||||
elif isinstance(data, list):
|
||||
return [_filter_file_bytes(item) for item in data]
|
||||
else:
|
||||
return data
|
||||
|
||||
|
||||
class BaseVariableAggregationNode(IVariableAggregation):
|
||||
|
||||
|
|
@ -63,14 +72,16 @@ class BaseVariableAggregationNode(IVariableAggregation):
|
|||
{'result': result, 'strategy': strategy, 'group_list': self.reset_group_list(group_list), **result}, {})
|
||||
|
||||
def get_details(self, index: int, **kwargs):
|
||||
result = _filter_file_bytes(self.context.get('result'))
|
||||
group_list = _filter_file_bytes(self.context.get('group_list'))
|
||||
return {
|
||||
'name': self.node.properties.get('stepName'),
|
||||
"index": index,
|
||||
'run_time': self.context.get('run_time'),
|
||||
'type': self.node.type,
|
||||
'result': self.context.get('result'),
|
||||
'result': result,
|
||||
'strategy': self.context.get('strategy'),
|
||||
'group_list': self.context.get('group_list'),
|
||||
'group_list': group_list,
|
||||
'status': self.status,
|
||||
'err_message': self.err_message
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue