From 1592a1488eee873f8aed8c4297d5f932d06d0bf2 Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Mon, 5 Aug 2019 12:30:23 +0200 Subject: [PATCH 1/2] first check if entity have parents in data --- pype/lib.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/pype/lib.py b/pype/lib.py index e443881d39..d521ee2751 100644 --- a/pype/lib.py +++ b/pype/lib.py @@ -45,13 +45,21 @@ def get_hierarchy(asset_name=None): if not asset_name: asset_name = io.Session.get("AVALON_ASSET", os.environ["AVALON_ASSET"]) - asset = io.find_one({ + asset_entity = io.find_one({ "type": 'asset', "name": asset_name }) + not_set = "PARENTS_NOT_SET" + entity_parents = entity.get("data", {}).get("parents", not_set) + + # If entity already have parents then just return joined + if entity_parents != not_set: + return "/".join(entity_parents) + + # Else query parents through visualParents and store result to entity hierarchy_items = [] - entity = asset + entity = asset_entity while True: parent_id = entity.get("data", {}).get("visualParent") if not parent_id: From 57318adc3e34f72df4a33285d344d3c4768a46a2 Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Mon, 5 Aug 2019 12:30:40 +0200 Subject: [PATCH 2/2] store found hierarchy items as parents to entity --- pype/lib.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/pype/lib.py b/pype/lib.py index d521ee2751..66cef40674 100644 --- a/pype/lib.py +++ b/pype/lib.py @@ -67,6 +67,14 @@ def get_hierarchy(asset_name=None): entity = io.find_one({"_id": parent_id}) hierarchy_items.append(entity["name"]) + # Add parents to entity data for next query + entity_data = asset_entity.get("data", {}) + entity_data["parents"] = hierarchy_items + io.update_many( + {"_id": asset_entity["_id"]}, + {"$set": {"data": entity_data}} + ) + return "/".join(hierarchy_items)