From c94b0e76dceba52712d423e714719d4f5e96629b Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Thu, 19 Mar 2026 15:53:43 +0100 Subject: [PATCH 1/2] actually filter graphql project by name --- ayon_api/_api_helpers/projects.py | 1 + 1 file changed, 1 insertion(+) diff --git a/ayon_api/_api_helpers/projects.py b/ayon_api/_api_helpers/projects.py index a909100cf..97c61ec99 100644 --- a/ayon_api/_api_helpers/projects.py +++ b/ayon_api/_api_helpers/projects.py @@ -332,6 +332,7 @@ def get_project( graphql_project = next(self._get_graphql_projects( None, None, + project_name=project_name, fields=graphql_fields, own_attributes=own_attributes, ), None) From 25fd6033a426f80a327926623c9e8777a8893e15 Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Thu, 19 Mar 2026 15:57:41 +0100 Subject: [PATCH 2/2] better merge of rest and graphql project data --- ayon_api/_api_helpers/projects.py | 45 ++++++++++++++++++++----------- 1 file changed, 29 insertions(+), 16 deletions(-) diff --git a/ayon_api/_api_helpers/projects.py b/ayon_api/_api_helpers/projects.py index 97c61ec99..cc21a43ff 100644 --- a/ayon_api/_api_helpers/projects.py +++ b/ayon_api/_api_helpers/projects.py @@ -291,16 +291,14 @@ def get_projects( return projects_by_name = {p["name"]: p for p in projects} - for project in self.get_rest_projects(active, library): + for project in self.get_rest_projects(active=active, library=library): + if own_attributes: + fill_own_attribs(project) + name = project["name"] - graphql_p = projects_by_name.get(name) - if graphql_p: - for key in ( - "productTypes", - "usedTags", - ): - if key in graphql_p: - project[key] = graphql_p[key] + graphql_project = projects_by_name.get(name) + self._merge_project_graphql_data(project, graphql_project) + yield project def get_project( @@ -342,13 +340,9 @@ def get_project( project = self.get_rest_project(project_name) if own_attributes: fill_own_attribs(project) - if graphql_project: - for key in ( - "productTypes", - "usedTags", - ): - if key in graphql_project: - project[key] = graphql_project[key] + + self._merge_project_graphql_data(project, graphql_project) + return project def create_project( @@ -818,6 +812,25 @@ def _get_graphql_projects( self._fill_project_entity_data(project) yield project + def _merge_project_graphql_data( + self, + rest_project: dict[str, Any], + graphql_project: Optional[dict[str, Any]], + ) -> None: + if not graphql_project: + return + + for key, value in graphql_project.items(): + if ( + key not in rest_project + or key in ( + "productBaseTypes", + "productTypes", + "usedTags", + ) + ): + rest_project[key] = value + def _get_project_roots_values( self, project_name: str,