Skip to content

Commit 8042046

Browse files
committed
change how links fields are handled
1 parent 3f69489 commit 8042046

7 files changed

Lines changed: 43 additions & 117 deletions

File tree

ayon_api/_api_helpers/folders.py

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

334-
query = folders_graphql_query(
335-
fields,
336-
links_support_data=self.links_graphql_support_data(),
337-
)
334+
self._prepare_link_fields(fields)
335+
336+
query = folders_graphql_query(fields)
338337
for attr, filter_value in graphql_filters.items():
339338
query.set_variable_value(attr, filter_value)
340339

@@ -481,10 +480,7 @@ def get_folder_ids_with_products(
481480
if not folder_ids:
482481
return set()
483482

484-
query = folders_graphql_query(
485-
{"id"},
486-
links_support_data=self.links_graphql_support_data(),
487-
)
483+
query = folders_graphql_query({"id"})
488484
query.set_variable_value("projectName", project_name)
489485
query.set_variable_value("folderHasProducts", True)
490486
if folder_ids:

ayon_api/_api_helpers/products.py

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -179,10 +179,9 @@ def get_products(
179179
if filter_value:
180180
graphql_filters[filter_key] = filter_value
181181

182-
query = products_graphql_query(
183-
fields,
184-
links_support_data=self.links_graphql_support_data(),
185-
)
182+
self._prepare_link_fields(fields)
183+
184+
query = products_graphql_query(fields)
186185
for attr, filter_value in graphql_filters.items():
187186
query.set_variable_value(attr, filter_value)
188187

ayon_api/_api_helpers/representations.py

Lines changed: 3 additions & 4 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
}
@@ -168,10 +170,7 @@ def get_representations(
168170
if filters:
169171
graphql_filters["filter"] = filters
170172

171-
query = representations_graphql_query(
172-
fields,
173-
links_support_data=self.links_graphql_support_data(),
174-
)
173+
query = representations_graphql_query(fields)
175174

176175
for attr, filter_value in graphql_filters.items():
177176
query.set_variable_value(attr, filter_value)

ayon_api/_api_helpers/tasks.py

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

109-
query = tasks_graphql_query(
110-
fields,
111-
links_support_data=self.links_graphql_support_data(),
112-
)
109+
self._prepare_link_fields(fields)
110+
111+
query = tasks_graphql_query(fields)
113112
for attr, filter_value in graphql_filters.items():
114113
query.set_variable_value(attr, filter_value)
115114

@@ -270,10 +269,9 @@ def get_tasks_by_folder_paths(
270269
if active is not None:
271270
fields.add("active")
272271

273-
query = tasks_by_folder_paths_graphql_query(
274-
fields,
275-
links_support_data=self.links_graphql_support_data(),
276-
)
272+
self._prepare_link_fields(fields)
273+
274+
query = tasks_by_folder_paths_graphql_query(fields)
277275
for attr, filter_value in graphql_filters.items():
278276
query.set_variable_value(attr, filter_value)
279277

ayon_api/_api_helpers/versions.py

Lines changed: 5 additions & 13 deletions
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
@@ -130,31 +131,22 @@ def get_versions(
130131
if standard and not latest:
131132
# This query all versions standard + hero
132133
# - hero must be filtered out if is not enabled during loop
133-
query = versions_graphql_query(
134-
fields,
135-
links_support_data=self.links_graphql_support_data(),
136-
)
134+
query = versions_graphql_query(fields)
137135
for attr, filter_value in graphql_filters.items():
138136
query.set_variable_value(attr, filter_value)
139137
queries.append(query)
140138
else:
141139
if hero:
142140
# Add hero query if hero is enabled
143-
hero_query = versions_graphql_query(
144-
fields,
145-
links_support_data=self.links_graphql_support_data(),
146-
)
141+
hero_query = versions_graphql_query(fields)
147142
for attr, filter_value in graphql_filters.items():
148143
hero_query.set_variable_value(attr, filter_value)
149144

150145
hero_query.set_variable_value("heroOnly", True)
151146
queries.append(hero_query)
152147

153148
if standard:
154-
standard_query = versions_graphql_query(
155-
fields,
156-
links_support_data=self.links_graphql_support_data(),
157-
)
149+
standard_query = versions_graphql_query(fields)
158150
for attr, filter_value in graphql_filters.items():
159151
standard_query.set_variable_value(attr, filter_value)
160152

ayon_api/_api_helpers/workfiles.py

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -93,10 +93,9 @@ def get_workfile_entities(
9393
fields = set(fields)
9494
self._prepare_fields("workfile", fields)
9595

96-
query = workfiles_info_graphql_query(
97-
fields,
98-
links_support_data=self.links_graphql_support_data(),
99-
)
96+
self._prepare_link_fields(fields)
97+
98+
query = workfiles_info_graphql_query(fields)
10099

101100
for attr, filter_value in filters.items():
102101
query.set_variable_value(attr, filter_value)

ayon_api/graphql_queries.py

Lines changed: 19 additions & 76 deletions
Original file line numberDiff line numberDiff line change
@@ -15,20 +15,17 @@
1515
def add_links_fields(
1616
entity_field: GraphQlQueryEdgeField,
1717
nested_fields: dict | None,
18-
*,
19-
supports_data: bool = False,
2018
) -> None:
2119
if "links" not in nested_fields:
2220
return
2321
links_fields = nested_fields.pop("links")
24-
2522
link_edge_fields = set(DEFAULT_LINK_FIELDS)
26-
if supports_data:
27-
link_edge_fields.add("data")
2823

2924
if isinstance(links_fields, dict):
3025
simple_fields = set(links_fields)
31-
simple_variant = len(simple_fields - link_edge_fields) == 0
26+
diff = simple_fields - link_edge_fields
27+
diff.discard("data")
28+
simple_variant = len(diff) == 0
3229
else:
3330
simple_variant = True
3431
simple_fields = link_edge_fields
@@ -137,11 +134,7 @@ def product_types_query(fields):
137134
return query
138135

139136

140-
def folders_graphql_query(
141-
fields: set[str],
142-
*,
143-
links_support_data: bool = False,
144-
) -> GraphQlQuery:
137+
def folders_graphql_query(fields: set[str]) -> GraphQlQuery:
145138
query = GraphQlQuery("FoldersQuery")
146139
project_name_var = query.add_variable("projectName", "String!")
147140
folder_ids_var = query.add_variable("folderIds", "[String!]")
@@ -181,11 +174,8 @@ def folders_graphql_query(
181174
folders_field.set_filter("filter", filter_var)
182175

183176
nested_fields = fields_to_dict(fields)
184-
add_links_fields(
185-
folders_field,
186-
nested_fields,
187-
supports_data=links_support_data,
188-
)
177+
178+
add_links_fields(folders_field, nested_fields)
189179

190180
query_queue = collections.deque()
191181
for key, value in nested_fields.items():
@@ -203,11 +193,7 @@ def folders_graphql_query(
203193
return query
204194

205195

206-
def tasks_graphql_query(
207-
fields: set[str],
208-
*,
209-
links_support_data: bool = False,
210-
) -> GraphQlQuery:
196+
def tasks_graphql_query(fields: set[str]) -> GraphQlQuery:
211197
query = GraphQlQuery("TasksQuery")
212198
project_name_var = query.add_variable("projectName", "String!")
213199
task_ids_var = query.add_variable("taskIds", "[String!]")
@@ -237,11 +223,7 @@ def tasks_graphql_query(
237223
tasks_field.set_filter("filter", filter_var)
238224

239225
nested_fields = fields_to_dict(fields)
240-
add_links_fields(
241-
tasks_field,
242-
nested_fields,
243-
supports_data=links_support_data,
244-
)
226+
add_links_fields(tasks_field, nested_fields)
245227

246228
query_queue = collections.deque()
247229
for key, value in nested_fields.items():
@@ -259,11 +241,7 @@ def tasks_graphql_query(
259241
return query
260242

261243

262-
def tasks_by_folder_paths_graphql_query(
263-
fields: set[str],
264-
*,
265-
links_support_data: bool = False,
266-
) -> GraphQlQuery:
244+
def tasks_by_folder_paths_graphql_query(fields: set[str]) -> GraphQlQuery:
267245
query = GraphQlQuery("TasksByFolderPathQuery")
268246
project_name_var = query.add_variable("projectName", "String!")
269247
task_names_var = query.add_variable("taskNames", "[String!]")
@@ -294,11 +272,8 @@ def tasks_by_folder_paths_graphql_query(
294272
tasks_field.set_filter("filter", filter_var)
295273

296274
nested_fields = fields_to_dict(fields)
297-
add_links_fields(
298-
tasks_field,
299-
nested_fields,
300-
supports_data=links_support_data,
301-
)
275+
276+
add_links_fields(tasks_field, nested_fields)
302277

303278
query_queue = collections.deque()
304279
for key, value in nested_fields.items():
@@ -316,11 +291,7 @@ def tasks_by_folder_paths_graphql_query(
316291
return query
317292

318293

319-
def products_graphql_query(
320-
fields: set[str],
321-
*,
322-
links_support_data: bool = False,
323-
) -> GraphQlQuery:
294+
def products_graphql_query(fields: set[str]) -> GraphQlQuery:
324295
query = GraphQlQuery("ProductsQuery")
325296

326297
project_name_var = query.add_variable("projectName", "String!")
@@ -352,11 +323,7 @@ def products_graphql_query(
352323
products_field.set_filter("filter", filter_var)
353324

354325
nested_fields = fields_to_dict(set(fields))
355-
add_links_fields(
356-
products_field,
357-
nested_fields,
358-
supports_data=links_support_data,
359-
)
326+
add_links_fields(products_field, nested_fields)
360327

361328
query_queue = collections.deque()
362329
for key, value in nested_fields.items():
@@ -374,11 +341,7 @@ def products_graphql_query(
374341
return query
375342

376343

377-
def versions_graphql_query(
378-
fields: set[str],
379-
*,
380-
links_support_data: bool = False,
381-
) -> GraphQlQuery:
344+
def versions_graphql_query(fields: set[str]) -> GraphQlQuery:
382345
query = GraphQlQuery("VersionsQuery")
383346

384347
project_name_var = query.add_variable("projectName", "String!")
@@ -411,11 +374,7 @@ def versions_graphql_query(
411374
versions_field.set_filter("filter", filter_var)
412375

413376
nested_fields = fields_to_dict(set(fields))
414-
add_links_fields(
415-
versions_field,
416-
nested_fields,
417-
supports_data=links_support_data,
418-
)
377+
add_links_fields(versions_field, nested_fields)
419378

420379
query_queue = collections.deque()
421380
for key, value in nested_fields.items():
@@ -433,11 +392,7 @@ def versions_graphql_query(
433392
return query
434393

435394

436-
def representations_graphql_query(
437-
fields: set[str],
438-
*,
439-
links_support_data: bool = False,
440-
) -> GraphQlQuery:
395+
def representations_graphql_query(fields: set[str]) -> GraphQlQuery:
441396
query = GraphQlQuery("RepresentationsQuery")
442397

443398
project_name_var = query.add_variable("projectName", "String!")
@@ -468,11 +423,7 @@ def representations_graphql_query(
468423
repres_field.set_filter("filter", filter_var)
469424

470425
nested_fields = fields_to_dict(set(fields))
471-
add_links_fields(
472-
repres_field,
473-
nested_fields,
474-
supports_data=links_support_data,
475-
)
426+
add_links_fields(repres_field, nested_fields)
476427

477428
query_queue = collections.deque()
478429
for key, value in nested_fields.items():
@@ -589,11 +540,7 @@ def representations_hierarchy_qraphql_query(
589540
return query
590541

591542

592-
def workfiles_info_graphql_query(
593-
fields: set[str],
594-
*,
595-
links_support_data: bool = False,
596-
) -> GraphQlQuery:
543+
def workfiles_info_graphql_query(fields: set[str]) -> GraphQlQuery:
597544
query = GraphQlQuery("WorkfilesInfo")
598545
project_name_var = query.add_variable("projectName", "String!")
599546
workfiles_info_ids = query.add_variable("workfileIds", "[String!]")
@@ -617,11 +564,7 @@ def workfiles_info_graphql_query(
617564
workfiles_field.set_filter("tags", tags_var)
618565

619566
nested_fields = fields_to_dict(set(fields))
620-
add_links_fields(
621-
workfiles_field,
622-
nested_fields,
623-
supports_data=links_support_data,
624-
)
567+
add_links_fields(workfiles_field, nested_fields)
625568

626569
query_queue = collections.deque()
627570
for key, value in nested_fields.items():

0 commit comments

Comments
 (0)