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:
Jakub Trllo 2023-09-22 14:18:57 +02:00 committed by GitHub
parent 87ed2f960d
commit bfb5868417
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 41 additions and 5 deletions

View file

@ -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.

View file

@ -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)

View file

@ -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)

View file

@ -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)