diff --git a/client/ayon_core/tools/publisher/control.py b/client/ayon_core/tools/publisher/control.py index f6153da47f..32f3a5f9dc 100644 --- a/client/ayon_core/tools/publisher/control.py +++ b/client/ayon_core/tools/publisher/control.py @@ -12,10 +12,8 @@ from abc import ABCMeta, abstractmethod import six import arrow import pyblish.api -import ayon_api from ayon_core.client import ( - get_asset_by_name, get_subsets, ) from ayon_core.lib.events import QueuedEventSystem @@ -66,24 +64,6 @@ class MainThreadItem: self.callback(*self.args, **self.kwargs) -class AssetDocsCache: - """Cache asset documents for creation part.""" - - def __init__(self, controller): - self._controller = controller - self._asset_docs_by_path = {} - - def reset(self): - self._asset_docs_by_path = {} - - def get_asset_doc_by_folder_path(self, folder_path): - if folder_path not in self._asset_docs_by_path: - project_name = self._controller.project_name - asset_doc = get_asset_by_name(project_name, folder_path) - self._asset_docs_by_path[folder_path] = asset_doc - return copy.deepcopy(self._asset_docs_by_path[folder_path]) - - class PublishReportMaker: """Report for single publishing process. @@ -1653,7 +1633,6 @@ class PublisherController(BasePublisherController): # Cacher of avalon documents self._hierarchy_model = HierarchyModel(self) - self._asset_docs_cache = AssetDocsCache(self) @property def project_name(self): @@ -1816,11 +1795,10 @@ class PublisherController(BasePublisherController): self._create_context.reset_preparation() - # Reset avalon context + # Reset current context self._create_context.reset_current_context() self._hierarchy_model.reset() - self._asset_docs_cache.reset() self._reset_plugins() # Publish part must be reset after plugins @@ -2052,16 +2030,37 @@ class PublisherController(BasePublisherController): """ creator = self._creators[creator_identifier] - project_name = self.project_name - asset_doc = self._asset_docs_cache.get_asset_doc_by_folder_path( - folder_path - ) + instance = None if instance_id: instance = self.instances[instance_id] + project_name = self.project_name + folder_item = self._hierarchy_model.get_folder_item_by_path( + project_name, folder_path + ) + folder_entity = None + task_item = None + task_entity = None + if folder_item is not None: + folder_entity = self._hierarchy_model.get_folder_entity( + project_name, folder_item.entity_id + ) + task_item = self._hierarchy_model.get_task_item_by_name( + project_name, folder_item.entity_id, task_name, "controller" + ) + + if task_item is not None: + task_entity = self._hierarchy_model.get_task_entity( + project_name, task_item.task_id + ) + return creator.get_product_name( - project_name, asset_doc, task_name, variant, instance=instance + project_name, + folder_entity, + task_entity, + variant, + instance=instance ) def trigger_convertor_items(self, convertor_identifiers):