From e669ac7ab231b6114d8d289c505af8aaa2a4f65e Mon Sep 17 00:00:00 2001 From: Kayla Man Date: Mon, 6 May 2024 19:04:51 +0800 Subject: [PATCH] support adding tool group env per task level --- .../client/ayon_applications/utils.py | 60 ++++++------------- 1 file changed, 18 insertions(+), 42 deletions(-) diff --git a/server_addon/applications/client/ayon_applications/utils.py b/server_addon/applications/client/ayon_applications/utils.py index 751b8c0835..e05bbee1ca 100644 --- a/server_addon/applications/client/ayon_applications/utils.py +++ b/server_addon/applications/client/ayon_applications/utils.py @@ -287,17 +287,24 @@ def prepare_app_environments( groups_by_name = {} tool_by_group_name = collections.defaultdict(dict) if task_entity: - groups_by_name, environments, app_and_tool_labels = ( - get_tool_group_enviornment_by_entities(app, task_entity, groups_by_name, - tool_by_group_name, environments, - app_and_tool_labels) - ) - elif folder_entity: - groups_by_name, environments, app_and_tool_labels = ( - get_tool_group_enviornment_by_entities(app, folder_entity, groups_by_name, - tool_by_group_name, environments, - app_and_tool_labels) - ) + # Make sure each tool group can be added only once + tools_group_by_entity = task_entity["attrib"].get("tools") + if folder_entity and not tools_group_by_entity: + tools_group_by_entity = folder_entity["attrib"].get("tools") + for key in tools_group_by_entity or []: + tool = app.manager.tools.get(key) + if not tool or not tool.is_valid_for_app(app): + continue + groups_by_name[tool.group.name] = tool.group + tool_by_group_name[tool.group.name][tool.name] = tool + + for group_name in sorted(groups_by_name.keys()): + group = groups_by_name[group_name] + environments.append(group.environment) + for tool_name in sorted(tool_by_group_name[group_name].keys()): + tool = tool_by_group_name[group_name][tool_name] + environments.append(tool.environment) + app_and_tool_labels.append(tool.full_name) log.debug( "Will add environments for apps and tools: {}".format( @@ -351,37 +358,6 @@ def prepare_app_environments( data["env"].pop(key, None) -def get_tool_group_enviornment_by_entities(app, entity, groups_by_name, - tool_by_group_name, environments, - app_and_tool_labels): - """Function to get tool group environment by entities - - Args: - app (dict): application - entity (dict): entity - groups_by_name (dict): group by name - tool_by_group_name (dict): tools by group name - environments (list): enviornments - app_and_tool_labels (list): full name of the application - """ - # Make sure each tool group can be added only once - for key in entity["attrib"].get("tools") or []: - tool = app.manager.tools.get(key) - if not tool or not tool.is_valid_for_app(app): - continue - groups_by_name[tool.group.name] = tool.group - tool_by_group_name[tool.group.name][tool.name] = tool - - for group_name in sorted(groups_by_name.keys()): - group = groups_by_name[group_name] - environments.append(group.environment) - for tool_name in sorted(tool_by_group_name[group_name].keys()): - tool = tool_by_group_name[group_name][tool_name] - environments.append(tool.environment) - app_and_tool_labels.append(tool.full_name) - return groups_by_name, environments, app_and_tool_labels - - def apply_project_environments_value( project_name, env, project_settings=None, env_group=None ):