prefill project entity where we know it may be used

This commit is contained in:
Jakub Trllo 2024-07-08 17:43:44 +02:00
parent 3dffcaff01
commit 2f0a6847ab
6 changed files with 37 additions and 10 deletions

View file

@ -2112,6 +2112,7 @@ class CreateContext:
)
kwargs = {"project_entity": project_entity}
# Backwards compatibility for 'project_entity' argument
# - 'get_product_name' signature changed 24/07/08
if not is_func_signature_supported(
creator.get_product_name, *args, **kwargs
):

View file

@ -297,7 +297,6 @@ class BaseCreator:
))
setattr(self, key, value)
@property
def identifier(self):
"""Identifier of creator (must be unique).
@ -493,7 +492,8 @@ class BaseCreator:
task_entity,
variant,
host_name=None,
instance=None
instance=None,
project_entity=None,
):
"""Return product name for passed context.
@ -510,8 +510,9 @@ class BaseCreator:
instance (Optional[CreatedInstance]): Object of 'CreatedInstance'
for which is product name updated. Passed only on product name
update.
"""
project_entity (Optional[dict[str, Any]]): Project entity.
"""
if host_name is None:
host_name = self.create_context.host_name
@ -537,7 +538,8 @@ class BaseCreator:
self.product_type,
variant,
dynamic_data=dynamic_data,
project_settings=self.project_settings
project_settings=self.project_settings,
project_entity=project_entity,
)
def get_instance_attr_defs(self):

View file

@ -126,11 +126,15 @@ def get_product_name(
project_entity (Optional[Dict[str, Any]]): Project entity used when
task short name is required by template.
Returns:
str: Product name.
Raises:
TaskNotSetError: If template requires task which is not provided.
TemplateFillError: If filled template contains placeholder key which
is not collected.
"""
"""
if not product_type:
return ""
@ -156,8 +160,6 @@ def get_product_name(
task_value = task_name
elif "{task[short]}" in template.lower():
# NOTE this is very inefficient approach
# - project entity should be required
if project_entity is None:
project_entity = ayon_api.get_project(project_name)
task_types_by_name = {

View file

@ -166,6 +166,12 @@ class AbstractPublisherBackend(AbstractPublisherCommon):
) -> Union[TaskItem, None]:
pass
@abstractmethod
def get_project_entity(
self, project_name: str
) -> Union[Dict[str, Any], None]:
pass
@abstractmethod
def get_folder_entity(
self, project_name: str, folder_id: str

View file

@ -193,6 +193,9 @@ class PublisherController(
def get_convertor_items(self):
return self._create_model.get_convertor_items()
def get_project_entity(self, project_name):
return self._projects_model.get_project_entity(project_name)
def get_folder_type_items(self, project_name, sender=None):
return self._projects_model.get_folder_type_items(
project_name, sender

View file

@ -9,6 +9,7 @@ from ayon_core.lib.attribute_definitions import (
)
from ayon_core.lib.profiles_filtering import filter_profiles
from ayon_core.lib.attribute_definitions import UIDef
from ayon_core.lib import is_func_signature_supported
from ayon_core.pipeline.create import (
BaseCreator,
AutoCreator,
@ -26,6 +27,7 @@ from ayon_core.tools.publisher.abstract import (
AbstractPublisherBackend,
CardMessageTypes,
)
CREATE_EVENT_SOURCE = "publisher.create.model"
@ -356,13 +358,24 @@ class CreateModel:
project_name, task_item.task_id
)
return creator.get_product_name(
project_entity = self._controller.get_project_entity(project_name)
args = (
project_name,
folder_entity,
task_entity,
variant,
instance=instance
variant
)
kwargs = {
"instance": instance,
"project_entity": project_entity,
}
# Backwards compatibility for 'project_entity' argument
# - 'get_product_name' signature changed 24/07/08
if not is_func_signature_supported(
creator.get_product_name, *args, **kwargs
):
kwargs.pop("project_entity")
return creator.get_product_name(*args, **kwargs)
def create(
self,