Skip to content

Commit 0447948

Browse files
authored
Merge pull request #164 from ynput/enhancement/added-task-to-representation-hierarchy
Repre Hierarchy: Fetch also task entity
2 parents d123f68 + 1c86345 commit 0447948

File tree

4 files changed

+35
-4
lines changed

4 files changed

+35
-4
lines changed

ayon_api/_api.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3345,6 +3345,7 @@ def get_representations_hierarchy(*args, **kwargs):
33453345
representation_ids (Iterable[str]): Representation ids.
33463346
project_fields (Optional[Iterable[str]]): Project fields.
33473347
folder_fields (Optional[Iterable[str]]): Folder fields.
3348+
task_fields (Optional[Iterable[str]]): Task fields.
33483349
product_fields (Optional[Iterable[str]]): Product fields.
33493350
version_fields (Optional[Iterable[str]]): Version fields.
33503351
representation_fields (Optional[Iterable[str]]): Representation
@@ -3369,6 +3370,7 @@ def get_representation_hierarchy(*args, **kwargs):
33693370
representation_id (str): Representation id.
33703371
project_fields (Optional[Iterable[str]]): Project fields.
33713372
folder_fields (Optional[Iterable[str]]): Folder fields.
3373+
task_fields (Optional[Iterable[str]]): Task fields.
33723374
product_fields (Optional[Iterable[str]]): Product fields.
33733375
version_fields (Optional[Iterable[str]]): Version fields.
33743376
representation_fields (Optional[Iterable[str]]): Representation

ayon_api/graphql_queries.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -466,6 +466,7 @@ def representations_parents_qraphql_query(
466466

467467
def representations_hierarchy_qraphql_query(
468468
folder_fields,
469+
task_fields,
469470
product_fields,
470471
version_fields,
471472
representation_fields,
@@ -486,12 +487,17 @@ def representations_hierarchy_qraphql_query(
486487

487488
repres_field.set_filter("ids", repre_ids_var)
488489
version_field = None
489-
if folder_fields or product_fields or version_fields:
490+
if folder_fields or task_fields or product_fields or version_fields:
490491
version_field = repres_field.add_field("version")
491492
if version_fields:
492493
for key, value in fields_to_dict(version_fields).items():
493494
fields_queue.append((key, value, version_field))
494495

496+
if task_fields:
497+
task_field = version_field.add_field("task")
498+
for key, value in fields_to_dict(task_fields).items():
499+
fields_queue.append((key, value, task_field))
500+
495501
product_field = None
496502
if folder_fields or product_fields:
497503
product_field = version_field.add_field("product")

ayon_api/server_api.py

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6381,6 +6381,7 @@ def get_representations_hierarchy(
63816381
representation_ids,
63826382
project_fields=None,
63836383
folder_fields=None,
6384+
task_fields=None,
63846385
product_fields=None,
63856386
version_fields=None,
63866387
representation_fields=None,
@@ -6398,6 +6399,7 @@ def get_representations_hierarchy(
63986399
representation_ids (Iterable[str]): Representation ids.
63996400
project_fields (Optional[Iterable[str]]): Project fields.
64006401
folder_fields (Optional[Iterable[str]]): Folder fields.
6402+
task_fields (Optional[Iterable[str]]): Task fields.
64016403
product_fields (Optional[Iterable[str]]): Product fields.
64026404
version_fields (Optional[Iterable[str]]): Version fields.
64036405
representation_fields (Optional[Iterable[str]]): Representation
@@ -6428,7 +6430,7 @@ def get_representations_hierarchy(
64286430
repre_ids = set(representation_ids)
64296431
output = {
64306432
repre_id: RepresentationHierarchy(
6431-
project, None, None, None, None
6433+
project, None, None, None, None, None
64326434
)
64336435
for repre_id in representation_ids
64346436
}
@@ -6438,6 +6440,11 @@ def get_representations_hierarchy(
64386440
else:
64396441
folder_fields = set(folder_fields)
64406442

6443+
if task_fields is None:
6444+
task_fields = self.get_default_fields_for_type("task")
6445+
else:
6446+
task_fields = set(task_fields)
6447+
64416448
if product_fields is None:
64426449
product_fields = self.get_default_fields_for_type("product")
64436450
else:
@@ -6459,6 +6466,7 @@ def get_representations_hierarchy(
64596466

64606467
query = representations_hierarchy_qraphql_query(
64616468
folder_fields,
6469+
task_fields,
64626470
product_fields,
64636471
version_fields,
64646472
representation_fields,
@@ -6471,12 +6479,16 @@ def get_representations_hierarchy(
64716479
repre_id = repre["id"]
64726480
version = repre.pop("version", {})
64736481
product = version.pop("product", {})
6482+
task = version.pop("task", None)
64746483
folder = product.pop("folder", {})
64756484
self._convert_entity_data(version)
64766485
self._convert_entity_data(product)
64776486
self._convert_entity_data(folder)
6487+
if task:
6488+
self._convert_entity_data(task)
6489+
64786490
output[repre_id] = RepresentationHierarchy(
6479-
project, folder, product, version, repre
6491+
project, folder, task, product, version, repre
64806492
)
64816493

64826494
return output
@@ -6487,6 +6499,7 @@ def get_representation_hierarchy(
64876499
representation_id,
64886500
project_fields=None,
64896501
folder_fields=None,
6502+
task_fields=None,
64906503
product_fields=None,
64916504
version_fields=None,
64926505
representation_fields=None,
@@ -6500,6 +6513,7 @@ def get_representation_hierarchy(
65006513
representation_id (str): Representation id.
65016514
project_fields (Optional[Iterable[str]]): Project fields.
65026515
folder_fields (Optional[Iterable[str]]): Folder fields.
6516+
task_fields (Optional[Iterable[str]]): Task fields.
65036517
product_fields (Optional[Iterable[str]]): Product fields.
65046518
version_fields (Optional[Iterable[str]]): Version fields.
65056519
representation_fields (Optional[Iterable[str]]): Representation
@@ -6517,6 +6531,7 @@ def get_representation_hierarchy(
65176531
[representation_id],
65186532
project_fields=project_fields,
65196533
folder_fields=folder_fields,
6534+
task_fields=task_fields,
65206535
product_fields=product_fields,
65216536
version_fields=version_fields,
65226537
representation_fields=representation_fields,
@@ -6554,6 +6569,7 @@ def get_representations_parents(
65546569
representation_ids,
65556570
project_fields=project_fields,
65566571
folder_fields=folder_fields,
6572+
task_fields=set(),
65576573
product_fields=product_fields,
65586574
version_fields=version_fields,
65596575
representation_fields={"id"},

ayon_api/utils.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,14 @@
2929

3030
RepresentationHierarchy = collections.namedtuple(
3131
"RepresentationHierarchy",
32-
("project", "folder", "product", "version", "representation")
32+
(
33+
"project",
34+
"folder",
35+
"task",
36+
"product",
37+
"version",
38+
"representation",
39+
)
3340
)
3441

3542

0 commit comments

Comments
 (0)