From 9cef560094ee34f4136c7511d83d61b4c1bfc281 Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Tue, 26 May 2026 12:13:41 +0200 Subject: [PATCH 1/3] add icon and color for productBaseTypes files --- ayon_api/_api_helpers/projects.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/ayon_api/_api_helpers/projects.py b/ayon_api/_api_helpers/projects.py index 51c501176..c17068816 100644 --- a/ayon_api/_api_helpers/projects.py +++ b/ayon_api/_api_helpers/projects.py @@ -805,6 +805,10 @@ def _get_project_graphql_fields( for f_name in DEFAULT_PRODUCT_BASE_TYPE_FIELDS: graphql_fields.add(f"{field}.{f_name}") + if self.get_server_version_tuple() > (1, 15, 3): + graphql_fields.add("productBaseTypes.icon") + graphql_fields.add("productBaseTypes.color") + elif field.startswith("productBaseTypes"): must_use_graphql = True graphql_fields.add(field) From cb55994ecc084637def3fd0bbd78ffdc0f705f61 Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Tue, 26 May 2026 18:57:19 +0200 Subject: [PATCH 2/3] use graphql schema to figure out what fields are fetched --- ayon_api/_api_helpers/projects.py | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/ayon_api/_api_helpers/projects.py b/ayon_api/_api_helpers/projects.py index c17068816..4e6fbb20b 100644 --- a/ayon_api/_api_helpers/projects.py +++ b/ayon_api/_api_helpers/projects.py @@ -50,6 +50,8 @@ class ProjectFetchType(Enum): class ProjectsAPI(BaseServerAPI): + _project_product_base_type_fields = None + def get_project_anatomy_presets(self) -> list[AnatomyPresetDict]: """Anatomy presets available on server. @@ -802,13 +804,9 @@ def _get_project_graphql_fields( elif field == "productBaseTypes": must_use_graphql = True fields.discard(field) - for f_name in DEFAULT_PRODUCT_BASE_TYPE_FIELDS: + for f_name in self._get_project_product_base_type_fields(): graphql_fields.add(f"{field}.{f_name}") - if self.get_server_version_tuple() > (1, 15, 3): - graphql_fields.add("productBaseTypes.icon") - graphql_fields.add("productBaseTypes.color") - elif field.startswith("productBaseTypes"): must_use_graphql = True graphql_fields.add(field) @@ -1021,3 +1019,17 @@ def _get_project_roots_values( ) response.raise_for_status() return response.data + + def _get_project_product_base_type_fields(self) -> set[str]: + if self._project_product_base_type_fields is not None: + return self._project_product_base_type_fields + + graphql_schema = self.get_graphql_schema() + + field_names = {"name"} + for type_def in graphql_schema["__schema"]["types"]: + if type_def["name"] == "ProductBaseType": + field_names = {field["name"] for field in type_def["fields"]} + break + self._project_product_base_type_fields = field_names + return field_names \ No newline at end of file From 9408d847186b81eaccf96f6619301060efcfb7a2 Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Tue, 26 May 2026 19:00:31 +0200 Subject: [PATCH 3/3] remove unused import --- ayon_api/_api_helpers/projects.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ayon_api/_api_helpers/projects.py b/ayon_api/_api_helpers/projects.py index 4e6fbb20b..df602d808 100644 --- a/ayon_api/_api_helpers/projects.py +++ b/ayon_api/_api_helpers/projects.py @@ -9,7 +9,6 @@ from ayon_api.constants import ( PROJECT_NAME_REGEX, - DEFAULT_PRODUCT_BASE_TYPE_FIELDS, DEFAULT_PRODUCT_TYPE_FIELDS, ) from ayon_api.utils import prepare_query_string, fill_own_attribs @@ -804,6 +803,7 @@ def _get_project_graphql_fields( elif field == "productBaseTypes": must_use_graphql = True fields.discard(field) + # for f_name in DEFAULT_PRODUCT_BASE_TYPE_FIELDS: for f_name in self._get_project_product_base_type_fields(): graphql_fields.add(f"{field}.{f_name}") @@ -1032,4 +1032,4 @@ def _get_project_product_base_type_fields(self) -> set[str]: field_names = {field["name"] for field in type_def["fields"]} break self._project_product_base_type_fields = field_names - return field_names \ No newline at end of file + return field_names