mirror of
https://github.com/ynput/ayon-core.git
synced 2026-01-02 08:54:53 +01:00
load also task items
This commit is contained in:
parent
ab54913a43
commit
558ca50ed1
1 changed files with 30 additions and 2 deletions
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue