mirror of
https://github.com/1Panel-dev/MaxKB.git
synced 2025-12-26 01:33:05 +00:00
fix: 修复工作流函数节点输入参数类型未校验
This commit is contained in:
parent
ba60b3c47c
commit
e6045f439e
|
|
@ -42,6 +42,20 @@ def get_field_value(debug_field_list, name, is_required):
|
|||
return None
|
||||
|
||||
|
||||
def valid_reference_value(_type, value, name):
|
||||
if _type == 'int':
|
||||
return isinstance(value, int)
|
||||
if _type == 'float':
|
||||
return isinstance(value, float)
|
||||
if _type == 'dict':
|
||||
return isinstance(value, dict)
|
||||
if _type == 'array':
|
||||
return isinstance(value, list)
|
||||
if _type == 'string':
|
||||
return isinstance(value, str)
|
||||
raise Exception(500, f'字段:{name}类型:{_type}值:{value}类型错误')
|
||||
|
||||
|
||||
def convert_value(name: str, value, _type, is_required, source, node):
|
||||
if not is_required and value is None:
|
||||
return None
|
||||
|
|
@ -49,6 +63,7 @@ def convert_value(name: str, value, _type, is_required, source, node):
|
|||
value = node.workflow_manage.get_reference_field(
|
||||
value[0],
|
||||
value[1:])
|
||||
valid_reference_value(_type, value, name)
|
||||
return value
|
||||
try:
|
||||
if _type == 'int':
|
||||
|
|
@ -56,12 +71,18 @@ def convert_value(name: str, value, _type, is_required, source, node):
|
|||
if _type == 'float':
|
||||
return float(value)
|
||||
if _type == 'dict':
|
||||
return json.loads(value)
|
||||
v = json.loads(value)
|
||||
if isinstance(v, dict):
|
||||
return v
|
||||
raise Exception("类型错误")
|
||||
if _type == 'array':
|
||||
return json.loads(value)
|
||||
v = json.loads(value)
|
||||
if isinstance(v, list):
|
||||
return v
|
||||
raise Exception("类型错误")
|
||||
return value
|
||||
except Exception as e:
|
||||
raise AppApiException(500, f'字段:{name}类型:{_type}值:{value}类型转换错误')
|
||||
raise Exception(f'字段:{name}类型:{_type}值:{value}类型错误')
|
||||
|
||||
|
||||
class BaseFunctionLibNodeNode(IFunctionLibNode):
|
||||
|
|
|
|||
|
|
@ -31,6 +31,20 @@ def write_context(step_variable: Dict, global_variable: Dict, node, workflow):
|
|||
node.context['run_time'] = time.time() - node.context['start_time']
|
||||
|
||||
|
||||
def valid_reference_value(_type, value, name):
|
||||
if _type == 'int':
|
||||
return isinstance(value, int)
|
||||
if _type == 'float':
|
||||
return isinstance(value, float)
|
||||
if _type == 'dict':
|
||||
return isinstance(value, dict)
|
||||
if _type == 'array':
|
||||
return isinstance(value, list)
|
||||
if _type == 'string':
|
||||
return isinstance(value, str)
|
||||
raise Exception(500, f'字段:{name}类型:{_type}值:{value}类型错误')
|
||||
|
||||
|
||||
def convert_value(name: str, value, _type, is_required, source, node):
|
||||
if not is_required and value is None:
|
||||
return None
|
||||
|
|
@ -38,6 +52,7 @@ def convert_value(name: str, value, _type, is_required, source, node):
|
|||
value = node.workflow_manage.get_reference_field(
|
||||
value[0],
|
||||
value[1:])
|
||||
valid_reference_value(_type, value, name)
|
||||
return value
|
||||
try:
|
||||
if _type == 'int':
|
||||
|
|
@ -45,12 +60,18 @@ def convert_value(name: str, value, _type, is_required, source, node):
|
|||
if _type == 'float':
|
||||
return float(value)
|
||||
if _type == 'dict':
|
||||
return json.loads(value)
|
||||
v = json.loads(value)
|
||||
if isinstance(v, dict):
|
||||
return v
|
||||
raise Exception("类型错误")
|
||||
if _type == 'array':
|
||||
return json.loads(value)
|
||||
v = json.loads(value)
|
||||
if isinstance(v, list):
|
||||
return v
|
||||
raise Exception("类型错误")
|
||||
return value
|
||||
except Exception as e:
|
||||
raise AppApiException(500, f'字段:{name}类型:{_type}值:{value}类型转换错误')
|
||||
raise Exception(f'字段:{name}类型:{_type}值:{value}类型错误')
|
||||
|
||||
|
||||
class BaseFunctionNodeNode(IFunctionNode):
|
||||
|
|
|
|||
Loading…
Reference in New Issue