From 558ca50ed18c69127729b66d95f4c61fee17da30 Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Fri, 30 Apr 2021 12:27:20 +0200 Subject: [PATCH] load also task items --- .../project_manager/project_manager/model.py | 32 +++++++++++++++++-- 1 file changed, 30 insertions(+), 2 deletions(-) diff --git a/openpype/tools/project_manager/project_manager/model.py b/openpype/tools/project_manager/project_manager/model.py index f25b187b6c..947dd5087f 100644 --- a/openpype/tools/project_manager/project_manager/model.py +++ b/openpype/tools/project_manager/project_manager/model.py @@ -1,4 +1,5 @@ import collections +import copy from queue import Queue from uuid import uuid4 @@ -112,14 +113,20 @@ class HierarchyModel(QtCore.QAbstractItemModel): {"type": "asset"}, AssetItem.query_projection ) + asset_docs_by_id = { + asset_doc["_id"]: asset_doc + for asset_doc in asset_docs + } asset_docs_by_parent_id = collections.defaultdict(list) - for asset_doc in asset_docs: + for asset_doc in asset_docs_by_id.values(): parent_id = asset_doc["data"]["visualParent"] asset_docs_by_parent_id[parent_id].append(asset_doc) appending_queue = Queue() appending_queue.put((None, project_item)) + asset_items_by_id = {} + while not appending_queue.empty(): parent_id, parent_item = appending_queue.get() if parent_id not in asset_docs_by_parent_id: @@ -127,12 +134,33 @@ class HierarchyModel(QtCore.QAbstractItemModel): new_items = [] for asset_doc in asset_docs_by_parent_id[parent_id]: + # Create new Item new_item = AssetItem(asset_doc) + # Store item to be added under parent in bulk new_items.append(new_item) - appending_queue.put((asset_doc["_id"], new_item)) + + # Store item by id for task processing + asset_id = asset_doc["_id"] + asset_items_by_id[asset_id] = new_item + # Add item to appending queue + appending_queue.put((asset_id, new_item)) self.add_items(new_items, parent_item) + for asset_id, asset_item in asset_items_by_id.items(): + asset_doc = asset_docs_by_id[asset_id] + asset_tasks = asset_doc["data"]["tasks"] + if not asset_tasks: + continue + + task_items = [] + for task_name, task_data in asset_tasks.items(): + _task_data = copy.deepcopy(task_data) + _task_data["name"] = task_name + task_item = TaskItem(_task_data) + task_items.append(task_item) + self.add_items(task_items, asset_item) + def rowCount(self, parent=None): if parent is None or not parent.isValid(): parent_item = self._root_item