Skip to content

Commit 30851bd

Browse files
authored
Merge pull request #311 from ynput/enhancement/fetch-links-data
Links: Fetch data
2 parents 22c9c24 + 0b11ca8 commit 30851bd

12 files changed

Lines changed: 77 additions & 11 deletions

File tree

ayon_api/__init__.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@
5555
get_server_version,
5656
get_server_version_tuple,
5757
is_product_base_type_supported,
58+
links_graphql_support_data,
5859
get_users,
5960
get_user_by_name,
6061
get_user,
@@ -339,6 +340,7 @@
339340
"get_server_version",
340341
"get_server_version_tuple",
341342
"is_product_base_type_supported",
343+
"links_graphql_support_data",
342344
"get_users",
343345
"get_user_by_name",
344346
"get_user",

ayon_api/_api.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -729,6 +729,13 @@ def is_product_base_type_supported() -> bool:
729729
return con.is_product_base_type_supported()
730730

731731

732+
def links_graphql_support_data() -> bool:
733+
"""Links data can be received by GraphQl.
734+
"""
735+
con = get_server_api_connection()
736+
return con.links_graphql_support_data()
737+
738+
732739
def get_users(
733740
project_name: Optional[str] = None,
734741
usernames: Optional[Iterable[str]] = None,

ayon_api/_api_helpers/base.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,9 @@ def log(self) -> logging.Logger:
2828
def is_product_base_type_supported(self) -> bool:
2929
raise NotImplementedError()
3030

31+
def links_graphql_support_data(self) -> bool:
32+
raise NotImplementedError()
33+
3134
def get_server_version(self) -> str:
3235
raise NotImplementedError()
3336

@@ -142,6 +145,9 @@ def _prepare_fields(
142145
):
143146
raise NotImplementedError()
144147

148+
def _prepare_link_fields(self, fields: set[str]) -> None:
149+
raise NotImplementedError()
150+
145151
def _prepare_advanced_filters(
146152
self, filters: Union[str, dict[str, Any], None]
147153
) -> Optional[str]:

ayon_api/_api_helpers/folders.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -331,6 +331,8 @@ def get_folders(
331331
if own_attributes:
332332
fields.add("ownAttrib")
333333

334+
self._prepare_link_fields(fields)
335+
334336
query = folders_graphql_query(fields)
335337
for attr, filter_value in graphql_filters.items():
336338
query.set_variable_value(attr, filter_value)

ayon_api/_api_helpers/links.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -362,6 +362,7 @@ def get_entities_links(
362362
return output
363363

364364
link_fields = {"id", "links"}
365+
self._prepare_link_fields(link_fields)
365366
query = query_func(link_fields)
366367
for attr, filter_value in filters.items():
367368
query.set_variable_value(attr, filter_value)

ayon_api/_api_helpers/products.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -179,6 +179,8 @@ def get_products(
179179
if filter_value:
180180
graphql_filters[filter_key] = filter_value
181181

182+
self._prepare_link_fields(fields)
183+
182184
query = products_graphql_query(fields)
183185
for attr, filter_value in graphql_filters.items():
184186
query.set_variable_value(attr, filter_value)

ayon_api/_api_helpers/representations.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,8 @@ def get_representations(
108108
fields.discard("files")
109109
fields |= REPRESENTATION_FILES_FIELDS
110110

111+
self._prepare_link_fields(fields)
112+
111113
graphql_filters = {
112114
"projectName": project_name
113115
}

ayon_api/_api_helpers/tasks.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,8 @@ def get_tasks(
106106
if active is not None:
107107
fields.add("active")
108108

109+
self._prepare_link_fields(fields)
110+
109111
query = tasks_graphql_query(fields)
110112
for attr, filter_value in graphql_filters.items():
111113
query.set_variable_value(attr, filter_value)
@@ -267,6 +269,8 @@ def get_tasks_by_folder_paths(
267269
if active is not None:
268270
fields.add("active")
269271

272+
self._prepare_link_fields(fields)
273+
270274
query = tasks_by_folder_paths_graphql_query(fields)
271275
for attr, filter_value in graphql_filters.items():
272276
query.set_variable_value(attr, filter_value)

ayon_api/_api_helpers/versions.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,8 @@ def get_versions(
8787
if active is not None:
8888
fields.add("active")
8989

90+
self._prepare_link_fields(fields)
91+
9092
if own_attributes is not _PLACEHOLDER:
9193
warnings.warn(
9294
(
@@ -116,7 +118,6 @@ def get_versions(
116118
):
117119
return
118120

119-
120121
filters = self._prepare_advanced_filters(filters)
121122
if filters:
122123
graphql_filters["filter"] = filters

ayon_api/_api_helpers/workfiles.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,8 @@ def get_workfile_entities(
9393
fields = set(fields)
9494
self._prepare_fields("workfile", fields)
9595

96+
self._prepare_link_fields(fields)
97+
9698
query = workfiles_info_graphql_query(fields)
9799

98100
for attr, filter_value in filters.items():

0 commit comments

Comments
 (0)