Skip to content

Commit cb55994

Browse files
committed
use graphql schema to figure out what fields are fetched
1 parent 9cef560 commit cb55994

1 file changed

Lines changed: 17 additions & 5 deletions

File tree

ayon_api/_api_helpers/projects.py

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,8 @@ class ProjectFetchType(Enum):
5050

5151

5252
class ProjectsAPI(BaseServerAPI):
53+
_project_product_base_type_fields = None
54+
5355
def get_project_anatomy_presets(self) -> list[AnatomyPresetDict]:
5456
"""Anatomy presets available on server.
5557
@@ -802,13 +804,9 @@ def _get_project_graphql_fields(
802804
elif field == "productBaseTypes":
803805
must_use_graphql = True
804806
fields.discard(field)
805-
for f_name in DEFAULT_PRODUCT_BASE_TYPE_FIELDS:
807+
for f_name in self._get_project_product_base_type_fields():
806808
graphql_fields.add(f"{field}.{f_name}")
807809

808-
if self.get_server_version_tuple() > (1, 15, 3):
809-
graphql_fields.add("productBaseTypes.icon")
810-
graphql_fields.add("productBaseTypes.color")
811-
812810
elif field.startswith("productBaseTypes"):
813811
must_use_graphql = True
814812
graphql_fields.add(field)
@@ -1021,3 +1019,17 @@ def _get_project_roots_values(
10211019
)
10221020
response.raise_for_status()
10231021
return response.data
1022+
1023+
def _get_project_product_base_type_fields(self) -> set[str]:
1024+
if self._project_product_base_type_fields is not None:
1025+
return self._project_product_base_type_fields
1026+
1027+
graphql_schema = self.get_graphql_schema()
1028+
1029+
field_names = {"name"}
1030+
for type_def in graphql_schema["__schema"]["types"]:
1031+
if type_def["name"] == "ProductBaseType":
1032+
field_names = {field["name"] for field in type_def["fields"]}
1033+
break
1034+
self._project_product_base_type_fields = field_names
1035+
return field_names

0 commit comments

Comments
 (0)