fix: After setting the function library to private, the workflow used should report an error stating that the current function is not authorized to be used (#2742)
This commit is contained in:
parent
cb104cc211
commit
b3feb243d3
@ -11,6 +11,7 @@ import time
|
|||||||
from typing import Dict
|
from typing import Dict
|
||||||
|
|
||||||
from django.db.models import QuerySet
|
from django.db.models import QuerySet
|
||||||
|
from django.utils.translation import gettext as _
|
||||||
|
|
||||||
from application.flow.i_step_node import NodeResult
|
from application.flow.i_step_node import NodeResult
|
||||||
from application.flow.step_node.function_lib_node.i_function_lib_node import IFunctionLibNode
|
from application.flow.step_node.function_lib_node.i_function_lib_node import IFunctionLibNode
|
||||||
@ -39,7 +40,7 @@ def get_field_value(debug_field_list, name, is_required):
|
|||||||
if len(result) > 0:
|
if len(result) > 0:
|
||||||
return result[-1]['value']
|
return result[-1]['value']
|
||||||
if is_required:
|
if is_required:
|
||||||
raise AppApiException(500, f"{name}字段未设置值")
|
raise AppApiException(500, _('Field: {name} No value set').format(name=name))
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
|
||||||
@ -55,9 +56,12 @@ def valid_reference_value(_type, value, name):
|
|||||||
elif _type == 'string':
|
elif _type == 'string':
|
||||||
instance_type = str
|
instance_type = str
|
||||||
else:
|
else:
|
||||||
raise Exception(500, f'字段:{name}类型:{_type} 不支持的类型')
|
raise Exception(_('Field: {name} Type: {_type} Value: {value} Unsupported types').format(name=name,
|
||||||
|
_type=_type))
|
||||||
if not isinstance(value, instance_type):
|
if not isinstance(value, instance_type):
|
||||||
raise Exception(f'字段:{name}类型:{_type}值:{value}类型错误')
|
raise Exception(
|
||||||
|
_('Field: {name} Type: {_type} Value: {value} Type error').format(name=name, _type=_type,
|
||||||
|
value=value))
|
||||||
|
|
||||||
|
|
||||||
def convert_value(name: str, value, _type, is_required, source, node):
|
def convert_value(name: str, value, _type, is_required, source, node):
|
||||||
@ -84,15 +88,26 @@ def convert_value(name: str, value, _type, is_required, source, node):
|
|||||||
v = json.loads(value)
|
v = json.loads(value)
|
||||||
if isinstance(v, dict):
|
if isinstance(v, dict):
|
||||||
return v
|
return v
|
||||||
raise Exception("类型错误")
|
raise Exception(_('type error'))
|
||||||
if _type == 'array':
|
if _type == 'array':
|
||||||
v = json.loads(value)
|
v = json.loads(value)
|
||||||
if isinstance(v, list):
|
if isinstance(v, list):
|
||||||
return v
|
return v
|
||||||
raise Exception("类型错误")
|
raise Exception(_('type error'))
|
||||||
return value
|
return value
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
raise Exception(f'字段:{name}类型:{_type}值:{value}类型错误')
|
raise Exception(
|
||||||
|
_('Field: {name} Type: {_type} Value: {value} Type error').format(name=name, _type=_type,
|
||||||
|
value=value))
|
||||||
|
|
||||||
|
|
||||||
|
def valid_function(function_lib, user_id):
|
||||||
|
if function_lib is None:
|
||||||
|
raise Exception(_('Function does not exist'))
|
||||||
|
if function_lib.permission_type == 'PRIVATE' and str(function_lib.user_id) != str(user_id):
|
||||||
|
raise Exception(_('No permission to use this function {name}').format(name=function_lib.name))
|
||||||
|
if not function_lib.is_active:
|
||||||
|
raise Exception(_('Function {name} is unavailable').format(name=function_lib.name))
|
||||||
|
|
||||||
|
|
||||||
class BaseFunctionLibNodeNode(IFunctionLibNode):
|
class BaseFunctionLibNodeNode(IFunctionLibNode):
|
||||||
@ -102,8 +117,7 @@ class BaseFunctionLibNodeNode(IFunctionLibNode):
|
|||||||
|
|
||||||
def execute(self, function_lib_id, input_field_list, **kwargs) -> NodeResult:
|
def execute(self, function_lib_id, input_field_list, **kwargs) -> NodeResult:
|
||||||
function_lib = QuerySet(FunctionLib).filter(id=function_lib_id).first()
|
function_lib = QuerySet(FunctionLib).filter(id=function_lib_id).first()
|
||||||
if not function_lib.is_active:
|
valid_function(function_lib, self.flow_params_serializer.data.get('user_id'))
|
||||||
raise Exception(f'函数:{function_lib.name} 不可用')
|
|
||||||
params = {field.get('name'): convert_value(field.get('name'), field.get('value'), field.get('type'),
|
params = {field.get('name'): convert_value(field.get('name'), field.get('value'), field.get('type'),
|
||||||
field.get('is_required'),
|
field.get('is_required'),
|
||||||
field.get('source'), self)
|
field.get('source'), self)
|
||||||
|
|||||||
@ -7473,3 +7473,18 @@ msgstr ""
|
|||||||
|
|
||||||
msgid "Batch generate related documents"
|
msgid "Batch generate related documents"
|
||||||
msgstr "Batch generate related problems"
|
msgstr "Batch generate related problems"
|
||||||
|
|
||||||
|
msgid "No permission to use this function {name}"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Function {name} is unavailable"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Field: {name} Type: {_type} Value: {value} Type error"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Field: {name} Type: {_type} Value: {value} Unsupported types"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Field: {name} No value set"
|
||||||
|
msgstr ""
|
||||||
@ -7636,3 +7636,18 @@ msgstr "添加内置函数"
|
|||||||
|
|
||||||
msgid "Batch generate related documents"
|
msgid "Batch generate related documents"
|
||||||
msgstr "批量生成问题"
|
msgstr "批量生成问题"
|
||||||
|
|
||||||
|
msgid "No permission to use this function {name}"
|
||||||
|
msgstr "无权使用此模型 {name}"
|
||||||
|
|
||||||
|
msgid "Function {name} is unavailable"
|
||||||
|
msgstr "函数{name} 不可用"
|
||||||
|
|
||||||
|
msgid "Field: {name} Type: {_type} Value: {value} Type error"
|
||||||
|
msgstr "字段: {name} 类型: {_type} 值: {value} 类型错误"
|
||||||
|
|
||||||
|
msgid "Field: {name} Type: {_type} Value: {value} Unsupported types"
|
||||||
|
msgstr "字段: {name} 类型: {_type} 值: {value} 不支持的类型"
|
||||||
|
|
||||||
|
msgid "Field: {name} No value set"
|
||||||
|
msgstr "字段: {name} 未设置值"
|
||||||
@ -7646,3 +7646,18 @@ msgstr "添加內寘函數"
|
|||||||
|
|
||||||
msgid "Batch generate related documents"
|
msgid "Batch generate related documents"
|
||||||
msgstr "批量生成问题"
|
msgstr "批量生成问题"
|
||||||
|
|
||||||
|
msgid "No permission to use this function {name}"
|
||||||
|
msgstr "無權使用此模型{name}"
|
||||||
|
|
||||||
|
msgid "Function {name} is unavailable"
|
||||||
|
msgstr "函數{name} 不可用"
|
||||||
|
|
||||||
|
msgid "Field: {name} Type: {_type} Value: {value} Type error"
|
||||||
|
msgstr "欄位: {name} 類型: {_type} 值: {value} 類型錯誤"
|
||||||
|
|
||||||
|
msgid "Field: {name} Type: {_type} Value: {value} Unsupported types"
|
||||||
|
msgstr "欄位: {name} 類型: {_type} 值: {value} 不支持的類型"
|
||||||
|
|
||||||
|
msgid "Field: {name} No value set"
|
||||||
|
msgstr "欄位: {name} 未設定值"
|
||||||
Loading…
Reference in New Issue
Block a user