mirror of
https://github.com/ynput/ayon-core.git
synced 2026-01-01 16:34:53 +01:00
AYON: Fix task type short name conversion (#5641)
* fix task type short name conversion * workfiles tool can query project entity * use project entity to fill task template data
This commit is contained in:
parent
87ed2f960d
commit
bfb5868417
5 changed files with 41 additions and 5 deletions
|
|
@ -442,6 +442,16 @@ class AbstractWorkfilesBackend(AbstractWorkfilesCommon):
|
|||
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
def get_project_entity(self):
|
||||
"""Get current project entity.
|
||||
|
||||
Returns:
|
||||
dict[str, Any]: Project entity data.
|
||||
"""
|
||||
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
def get_folder_entity(self, folder_id):
|
||||
"""Get folder entity by id.
|
||||
|
|
|
|||
|
|
@ -193,6 +193,9 @@ class BaseWorkfileController(
|
|||
self._project_anatomy = Anatomy(self.get_current_project_name())
|
||||
return self._project_anatomy
|
||||
|
||||
def get_project_entity(self):
|
||||
return self._entities_model.get_project_entity()
|
||||
|
||||
def get_folder_entity(self, folder_id):
|
||||
return self._entities_model.get_folder_entity(folder_id)
|
||||
|
||||
|
|
|
|||
|
|
@ -77,8 +77,11 @@ class EntitiesModel(object):
|
|||
event_source = "entities.model"
|
||||
|
||||
def __init__(self, controller):
|
||||
project_cache = CacheItem()
|
||||
project_cache.set_invalid({})
|
||||
folders_cache = CacheItem()
|
||||
folders_cache.set_invalid({})
|
||||
self._project_cache = project_cache
|
||||
self._folders_cache = folders_cache
|
||||
self._tasks_cache = {}
|
||||
|
||||
|
|
@ -90,6 +93,7 @@ class EntitiesModel(object):
|
|||
self._controller = controller
|
||||
|
||||
def reset(self):
|
||||
self._project_cache.set_invalid({})
|
||||
self._folders_cache.set_invalid({})
|
||||
self._tasks_cache = {}
|
||||
|
||||
|
|
@ -99,6 +103,13 @@ class EntitiesModel(object):
|
|||
def refresh(self):
|
||||
self._refresh_folders_cache()
|
||||
|
||||
def get_project_entity(self):
|
||||
if not self._project_cache.is_valid:
|
||||
project_name = self._controller.get_current_project_name()
|
||||
project_entity = ayon_api.get_project(project_name)
|
||||
self._project_cache.update_data(project_entity)
|
||||
return self._project_cache.get_data()
|
||||
|
||||
def get_folder_items(self, sender):
|
||||
if not self._folders_cache.is_valid:
|
||||
self._refresh_folders_cache(sender)
|
||||
|
|
|
|||
|
|
@ -43,13 +43,21 @@ def get_folder_template_data(folder):
|
|||
}
|
||||
|
||||
|
||||
def get_task_template_data(task):
|
||||
def get_task_template_data(project_entity, task):
|
||||
if not task:
|
||||
return {}
|
||||
short_name = None
|
||||
task_type_name = task["taskType"]
|
||||
for task_type_info in project_entity["config"]["taskTypes"]:
|
||||
if task_type_info["name"] == task_type_name:
|
||||
short_name = task_type_info["shortName"]
|
||||
break
|
||||
|
||||
return {
|
||||
"task": {
|
||||
"name": task["name"],
|
||||
"type": task["taskType"]
|
||||
"type": task_type_name,
|
||||
"short": short_name,
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -145,12 +153,13 @@ class WorkareaModel:
|
|||
self._fill_data_by_folder_id[folder_id] = fill_data
|
||||
return copy.deepcopy(fill_data)
|
||||
|
||||
def _get_task_data(self, folder_id, task_id):
|
||||
def _get_task_data(self, project_entity, folder_id, task_id):
|
||||
task_data = self._task_data_by_folder_id.setdefault(folder_id, {})
|
||||
if task_id not in task_data:
|
||||
task = self._controller.get_task_entity(task_id)
|
||||
if task:
|
||||
task_data[task_id] = get_task_template_data(task)
|
||||
task_data[task_id] = get_task_template_data(
|
||||
project_entity, task)
|
||||
return copy.deepcopy(task_data[task_id])
|
||||
|
||||
def _prepare_fill_data(self, folder_id, task_id):
|
||||
|
|
@ -159,7 +168,8 @@ class WorkareaModel:
|
|||
|
||||
base_data = self._get_base_data()
|
||||
folder_data = self._get_folder_data(folder_id)
|
||||
task_data = self._get_task_data(folder_id, task_id)
|
||||
project_entity = self._controller.get_project_entity()
|
||||
task_data = self._get_task_data(project_entity, folder_id, task_id)
|
||||
|
||||
base_data.update(folder_data)
|
||||
base_data.update(task_data)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue