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
|
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):
|
def convert_value(name: str, value, _type, is_required, source, node):
|
||||||
if not is_required and value is None:
|
if not is_required and value is None:
|
||||||
return 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 = node.workflow_manage.get_reference_field(
|
||||||
value[0],
|
value[0],
|
||||||
value[1:])
|
value[1:])
|
||||||
|
valid_reference_value(_type, value, name)
|
||||||
return value
|
return value
|
||||||
try:
|
try:
|
||||||
if _type == 'int':
|
if _type == 'int':
|
||||||
@ -56,12 +71,18 @@ def convert_value(name: str, value, _type, is_required, source, node):
|
|||||||
if _type == 'float':
|
if _type == 'float':
|
||||||
return float(value)
|
return float(value)
|
||||||
if _type == 'dict':
|
if _type == 'dict':
|
||||||
return json.loads(value)
|
v = json.loads(value)
|
||||||
|
if isinstance(v, dict):
|
||||||
|
return v
|
||||||
|
raise Exception("类型错误")
|
||||||
if _type == 'array':
|
if _type == 'array':
|
||||||
return json.loads(value)
|
v = json.loads(value)
|
||||||
|
if isinstance(v, list):
|
||||||
|
return v
|
||||||
|
raise Exception("类型错误")
|
||||||
return value
|
return value
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
raise AppApiException(500, f'字段:{name}类型:{_type}值:{value}类型转换错误')
|
raise Exception(f'字段:{name}类型:{_type}值:{value}类型错误')
|
||||||
|
|
||||||
|
|
||||||
class BaseFunctionLibNodeNode(IFunctionLibNode):
|
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']
|
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):
|
def convert_value(name: str, value, _type, is_required, source, node):
|
||||||
if not is_required and value is None:
|
if not is_required and value is None:
|
||||||
return 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 = node.workflow_manage.get_reference_field(
|
||||||
value[0],
|
value[0],
|
||||||
value[1:])
|
value[1:])
|
||||||
|
valid_reference_value(_type, value, name)
|
||||||
return value
|
return value
|
||||||
try:
|
try:
|
||||||
if _type == 'int':
|
if _type == 'int':
|
||||||
@ -45,12 +60,18 @@ def convert_value(name: str, value, _type, is_required, source, node):
|
|||||||
if _type == 'float':
|
if _type == 'float':
|
||||||
return float(value)
|
return float(value)
|
||||||
if _type == 'dict':
|
if _type == 'dict':
|
||||||
return json.loads(value)
|
v = json.loads(value)
|
||||||
|
if isinstance(v, dict):
|
||||||
|
return v
|
||||||
|
raise Exception("类型错误")
|
||||||
if _type == 'array':
|
if _type == 'array':
|
||||||
return json.loads(value)
|
v = json.loads(value)
|
||||||
|
if isinstance(v, list):
|
||||||
|
return v
|
||||||
|
raise Exception("类型错误")
|
||||||
return value
|
return value
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
raise AppApiException(500, f'字段:{name}类型:{_type}值:{value}类型转换错误')
|
raise Exception(f'字段:{name}类型:{_type}值:{value}类型错误')
|
||||||
|
|
||||||
|
|
||||||
class BaseFunctionNodeNode(IFunctionNode):
|
class BaseFunctionNodeNode(IFunctionNode):
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user