mirror of
https://github.com/ynput/ayon-core.git
synced 2025-12-24 21:04:40 +01:00
prefill project entity where we know it may be used
This commit is contained in:
parent
3dffcaff01
commit
2f0a6847ab
6 changed files with 37 additions and 10 deletions
|
|
@ -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
|
||||
):
|
||||
|
|
|
|||
|
|
@ -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):
|
||||
|
|
|
|||
|
|
@ -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 = {
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue