fix(api): 使用 ast.literal_eval 代替 eval,取消不正确的计算属性值返回。 (#688)

* fix(api): 使用 ast.literal_eval 代替 eval,取消不正确的计算属性值返回。

* fix(api): 修复属性值计算逻辑,直接返回渲染结果。
This commit is contained in:
thexqn
2025-04-04 19:19:42 +08:00
committed by GitHub
parent 5ceb8ff6f9
commit 435bb2a2c8

View File

@@ -180,14 +180,15 @@ class AttributeValueManager(object):
@staticmethod
def _compute_attr_value_from_expr(expr, ci_dict):
t = jinja2.Template(expr).render(ci_dict)
try:
return eval(t)
result = jinja2.Template(expr).render(ci_dict)
return result
except Exception as e:
current_app.logger.warning(str(e))
return t
current_app.logger.warning(
f"Expression evaluation error - Expression: '{expr}'"
f"Input parameters: {ci_dict}, Error type: {type(e).__name__}, Error message: {str(e)}"
)
return None
@staticmethod
def _compute_attr_value_from_script(script, ci_dict):
script = jinja2.Template(script).render(ci_dict)