From 5a80083ca582ef28c5512c561d3bffcc8161b11f Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Fri, 15 May 2026 13:47:33 +0200 Subject: [PATCH 1/4] change how 'get_tasks_by_folder_paths' works --- ayon_api/_api_helpers/tasks.py | 76 ++++++++++++++-------------------- 1 file changed, 31 insertions(+), 45 deletions(-) diff --git a/ayon_api/_api_helpers/tasks.py b/ayon_api/_api_helpers/tasks.py index 4ffa2dd5f..8067d49a5 100644 --- a/ayon_api/_api_helpers/tasks.py +++ b/ayon_api/_api_helpers/tasks.py @@ -236,29 +236,21 @@ def get_tasks_by_folder_paths( folder path. """ - folder_paths = set(folder_paths) - if not project_name or not folder_paths: - return {} - - graphql_filters = { - "projectName": project_name, - "folderPaths": list(folder_paths), + output = { + folder_path: [] + for folder_path in folder_paths + } + if not project_name or not output: + return output + + folder_path_by_id = { + folder["id"]: folder["path"] + for folder in self.get_folders( + project_name, + folder_paths=output.keys(), + fields={"id", "path"}, + ) } - - if not prepare_list_filters( - graphql_filters, - ("taskNames", task_names), - ("taskTypes", task_types), - ("taskAssigneesAny", assignees), - ("taskAssigneesAll", assignees_all), - ("taskStatuses", statuses), - ("taskTags", tags), - ): - return {} - - filters = self._prepare_advanced_filters(filters) - if filters: - graphql_filters["filter"] = filters if not fields: fields = self.get_default_fields_for_type("task") @@ -266,31 +258,25 @@ def get_tasks_by_folder_paths( fields = set(fields) self._prepare_fields("task", fields, own_attributes) - if active is not None: - fields.add("active") - - self._prepare_link_fields(fields) - - query = tasks_by_folder_paths_graphql_query(fields) - for attr, filter_value in graphql_filters.items(): - query.set_variable_value(attr, filter_value) + fields.add("folderId") - output = { - folder_path: [] - for folder_path in folder_paths - } - for parsed_data in query.continuous_query(self): - for folder in parsed_data["project"]["folders"]: - folder_path = folder["path"] - for task in folder["tasks"]: - if active is not None and active is not task["active"]: - continue - - self._convert_entity_data(task) + for task_entity in self.get_tasks( + project_name, + folder_ids=folder_path_by_id.keys(), + task_names=task_names, + task_types=task_types, + assignees=assignees, + assignees_all=assignees_all, + statuses=statuses, + tags=tags, + active=active, + filters=filters, + fields=fields, + ): + folder_id = task_entity["folderId"] + folder_path = folder_path_by_id[folder_id] + output[folder_path].append(task_entity) - if own_attributes: - fill_own_attribs(task) - output[folder_path].append(task) return output def get_tasks_by_folder_path( From b7fe3e3da3197c1864b38a49a3e6ea9b2915f529 Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Fri, 15 May 2026 13:48:04 +0200 Subject: [PATCH 2/4] remove unused import --- ayon_api/_api_helpers/tasks.py | 1 - 1 file changed, 1 deletion(-) diff --git a/ayon_api/_api_helpers/tasks.py b/ayon_api/_api_helpers/tasks.py index 8067d49a5..a404435bf 100644 --- a/ayon_api/_api_helpers/tasks.py +++ b/ayon_api/_api_helpers/tasks.py @@ -11,7 +11,6 @@ ) from ayon_api.graphql_queries import ( tasks_graphql_query, - tasks_by_folder_paths_graphql_query, ) from .base import BaseServerAPI From 600b40fc6a3f6c605826600cd24a98a203460278 Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Fri, 15 May 2026 13:50:23 +0200 Subject: [PATCH 3/4] remove 'tasks_by_folder_paths_graphql_query' --- ayon_api/graphql_queries.py | 50 ------------------------------------- 1 file changed, 50 deletions(-) diff --git a/ayon_api/graphql_queries.py b/ayon_api/graphql_queries.py index d376d0d43..c3f85e977 100644 --- a/ayon_api/graphql_queries.py +++ b/ayon_api/graphql_queries.py @@ -243,56 +243,6 @@ def tasks_graphql_query(fields: set[str]) -> GraphQlQuery: return query -def tasks_by_folder_paths_graphql_query(fields: set[str]) -> GraphQlQuery: - query = GraphQlQuery("TasksByFolderPathQuery") - project_name_var = query.add_variable("projectName", "String!") - task_names_var = query.add_variable("taskNames", "[String!]") - task_types_var = query.add_variable("taskTypes", "[String!]") - folder_paths_var = query.add_variable("folderPaths", "[String!]") - assignees_any_var = query.add_variable("taskAssigneesAny", "[String!]") - assignees_all_var = query.add_variable("taskAssigneesAll", "[String!]") - statuses_var = query.add_variable("taskStatuses", "[String!]") - tags_var = query.add_variable("taskTags", "[String!]") - filter_var = query.add_variable("filter", "String!") - - project_field = query.add_field("project") - project_field.set_filter("name", project_name_var) - - folders_field = project_field.add_field_with_edges("folders") - folders_field.add_field("path") - folders_field.set_filter("paths", folder_paths_var) - - tasks_field = folders_field.add_field_with_edges("tasks") - # WARNING: At the moment when this been created 'names' filter - # is not supported - tasks_field.set_filter("names", task_names_var) - tasks_field.set_filter("taskTypes", task_types_var) - tasks_field.set_filter("assigneesAny", assignees_any_var) - tasks_field.set_filter("assignees", assignees_all_var) - tasks_field.set_filter("statuses", statuses_var) - tasks_field.set_filter("tags", tags_var) - tasks_field.set_filter("filter", filter_var) - - nested_fields = fields_to_dict(fields) - - add_links_fields(tasks_field, nested_fields) - - query_queue = collections.deque() - for key, value in nested_fields.items(): - query_queue.append((key, value, tasks_field)) - - while query_queue: - item = query_queue.popleft() - key, value, parent = item - field = parent.add_field(key) - if value is FIELD_VALUE: - continue - - for k, v in value.items(): - query_queue.append((k, v, field)) - return query - - def products_graphql_query(fields: set[str]) -> GraphQlQuery: query = GraphQlQuery("ProductsQuery") From a0b91efc6ac2a27e2f5931810a505ff30f36d6f6 Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Fri, 15 May 2026 13:58:44 +0200 Subject: [PATCH 4/4] single line import --- ayon_api/_api_helpers/tasks.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/ayon_api/_api_helpers/tasks.py b/ayon_api/_api_helpers/tasks.py index a404435bf..1cae5caa5 100644 --- a/ayon_api/_api_helpers/tasks.py +++ b/ayon_api/_api_helpers/tasks.py @@ -9,9 +9,7 @@ create_entity_id, NOT_SET, ) -from ayon_api.graphql_queries import ( - tasks_graphql_query, -) +from ayon_api.graphql_queries import tasks_graphql_query from .base import BaseServerAPI