mirror of
https://github.com/ynput/ayon-core.git
synced 2025-12-24 21:04:40 +01:00
store asset documents by name
This commit is contained in:
parent
5cfd5db5d7
commit
5644921834
1 changed files with 27 additions and 12 deletions
|
|
@ -45,25 +45,34 @@ class AssetDocsCache:
|
|||
def __init__(self, controller):
|
||||
self._controller = controller
|
||||
self._asset_docs = None
|
||||
# TODO use asset ids instead
|
||||
self._task_names_by_asset_name = {}
|
||||
self._asset_docs_by_name = {}
|
||||
|
||||
def reset(self):
|
||||
self._asset_docs = None
|
||||
self._task_names_by_asset_name = {}
|
||||
self._asset_docs_by_name = {}
|
||||
|
||||
def _query(self):
|
||||
if self._asset_docs is None:
|
||||
project_name = self._controller.project_name
|
||||
asset_docs = get_assets(
|
||||
project_name, fields=self.projection.keys()
|
||||
)
|
||||
task_names_by_asset_name = {}
|
||||
for asset_doc in asset_docs:
|
||||
asset_name = asset_doc["name"]
|
||||
asset_tasks = asset_doc.get("data", {}).get("tasks") or {}
|
||||
task_names_by_asset_name[asset_name] = list(asset_tasks.keys())
|
||||
self._asset_docs = asset_docs
|
||||
self._task_names_by_asset_name = task_names_by_asset_name
|
||||
if self._asset_docs is not None:
|
||||
return
|
||||
|
||||
project_name = self._controller.project_name
|
||||
asset_docs = get_assets(
|
||||
project_name, fields=self.projection.keys()
|
||||
)
|
||||
asset_docs_by_name = {}
|
||||
task_names_by_asset_name = {}
|
||||
for asset_doc in asset_docs:
|
||||
asset_name = asset_doc["name"]
|
||||
asset_tasks = asset_doc.get("data", {}).get("tasks") or {}
|
||||
task_names_by_asset_name[asset_name] = list(asset_tasks.keys())
|
||||
asset_docs_by_name[asset_name] = asset_doc
|
||||
|
||||
self._asset_docs = asset_docs
|
||||
self._asset_docs_by_name = asset_docs_by_name
|
||||
self._task_names_by_asset_name = task_names_by_asset_name
|
||||
|
||||
def get_asset_docs(self):
|
||||
self._query()
|
||||
|
|
@ -73,6 +82,12 @@ class AssetDocsCache:
|
|||
self._query()
|
||||
return copy.deepcopy(self._task_names_by_asset_name)
|
||||
|
||||
def get_asset_by_name(self, asset_name):
|
||||
asset_doc = self._asset_docs_by_name.get(asset_name)
|
||||
if asset_doc is None:
|
||||
return None
|
||||
return copy.deepcopy(asset_doc)
|
||||
|
||||
|
||||
class PublishReport:
|
||||
"""Report for single publishing process.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue