From becd03a4aa4f633be381885f1c4869d7c3ea61d4 Mon Sep 17 00:00:00 2001 From: Arcaner <52057416+lrhan321@users.noreply.github.com> Date: Sat, 29 Mar 2025 14:20:18 +0800 Subject: [PATCH] fix: enhance file extension condition check for if-else node (#17060) --- api/core/workflow/utils/condition/processor.py | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/api/core/workflow/utils/condition/processor.py b/api/core/workflow/utils/condition/processor.py index c61b3d186..979538778 100644 --- a/api/core/workflow/utils/condition/processor.py +++ b/api/core/workflow/utils/condition/processor.py @@ -375,11 +375,25 @@ def _process_sub_conditions( for condition in sub_conditions: key = FileAttribute(condition.key) values = [file_manager.get_attr(file=file, attr=key) for file in files] + expected_value = condition.value + if key == FileAttribute.EXTENSION: + if not isinstance(expected_value, str): + raise TypeError("Expected value must be a string when key is FileAttribute.EXTENSION") + if expected_value and not expected_value.startswith("."): + expected_value = "." + expected_value + + normalized_values = [] + for value in values: + if value and isinstance(value, str): + if not value.startswith("."): + value = "." + value + normalized_values.append(value) + values = normalized_values sub_group_results = [ _evaluate_condition( value=value, operator=condition.comparison_operator, - expected=condition.value, + expected=expected_value, ) for value in values ]