From 8c4b303c586669f36f7ffaae8b8e4cdc8dee89d0 Mon Sep 17 00:00:00 2001 From: Toke Stuart Jepsen Date: Tue, 18 Apr 2023 12:45:28 +0100 Subject: [PATCH 01/13] Use get_reference_node and parent in hierarchy. --- openpype/hosts/maya/api/lib.py | 65 +++++++++++++++++++ .../maya/api/workfile_template_builder.py | 17 ++++- 2 files changed, 81 insertions(+), 1 deletion(-) diff --git a/openpype/hosts/maya/api/lib.py b/openpype/hosts/maya/api/lib.py index 61ea3d59df..1af1cb569e 100644 --- a/openpype/hosts/maya/api/lib.py +++ b/openpype/hosts/maya/api/lib.py @@ -3913,3 +3913,68 @@ def get_capture_preset(task_name, task_type, subset, project_settings, log): capture_preset = plugin_settings["capture_preset"] return capture_preset or {} + + +def get_reference_node(members, log=None): + """Get the reference node from the container members + Args: + members: list of node names + + Returns: + str: Reference node name. + + """ + + # Collect the references without .placeHolderList[] attributes as + # unique entries (objects only) and skipping the sharedReferenceNode. + references = set() + for ref in cmds.ls(members, exactType="reference", objectsOnly=True): + + # Ignore any `:sharedReferenceNode` + if ref.rsplit(":", 1)[-1].startswith("sharedReferenceNode"): + continue + + # Ignore _UNKNOWN_REF_NODE_ (PLN-160) + if ref.rsplit(":", 1)[-1].startswith("_UNKNOWN_REF_NODE_"): + continue + + references.add(ref) + + assert references, "No reference node found in container" + + # Get highest reference node (least parents) + highest = min(references, + key=lambda x: len(get_reference_node_parents(x))) + + # Warn the user when we're taking the highest reference node + if len(references) > 1: + if not log: + log = logging.getLogger(__name__) + + log.warning("More than one reference node found in " + "container, using highest reference node: " + "%s (in: %s)", highest, list(references)) + + return highest + + +def get_reference_node_parents(ref): + """Return all parent reference nodes of reference node + + Args: + ref (str): reference node. + + Returns: + list: The upstream parent reference nodes. + + """ + parent = cmds.referenceQuery(ref, + referenceNode=True, + parent=True) + parents = [] + while parent: + parents.append(parent) + parent = cmds.referenceQuery(parent, + referenceNode=True, + parent=True) + return parents diff --git a/openpype/hosts/maya/api/workfile_template_builder.py b/openpype/hosts/maya/api/workfile_template_builder.py index d65e4c74d2..f8169adb52 100644 --- a/openpype/hosts/maya/api/workfile_template_builder.py +++ b/openpype/hosts/maya/api/workfile_template_builder.py @@ -14,7 +14,7 @@ from openpype.tools.workfile_template_build import ( WorkfileBuildPlaceholderDialog, ) -from .lib import read, imprint +from .lib import read, imprint, get_reference_node PLACEHOLDER_SET = "PLACEHOLDERS_SET" @@ -258,8 +258,16 @@ class MayaPlaceholderLoadPlugin(PlaceholderPlugin, PlaceholderLoadMixin): return roots = cmds.sets(container, q=True) + ref_node = get_reference_node(roots) nodes_to_parent = [] for root in roots: + if ref_node: + ref_root = cmds.referenceQuery(root, n=True)[0] + ref_root = ( + cmds.listRelatives(ref_root, parent=True) or [ref_root] + ) + nodes_to_parent.extend(ref_root) + continue if root.endswith("_RN"): refRoot = cmds.referenceQuery(root, n=True)[0] refRoot = cmds.listRelatives(refRoot, parent=True) or [refRoot] @@ -277,10 +285,17 @@ class MayaPlaceholderLoadPlugin(PlaceholderPlugin, PlaceholderLoadMixin): matrix=True, worldSpace=True ) + scene_parent = cmds.listRelatives( + placeholder.scene_identifier, parent=True + ) for node in set(nodes_to_parent): cmds.reorder(node, front=True) cmds.reorder(node, relative=placeholder.data["index"]) cmds.xform(node, matrix=placeholder_form, ws=True) + if scene_parent: + cmds.parent(node, scene_parent) + else: + cmds.parent(node, world=True) holding_sets = cmds.listSets(object=placeholder.scene_identifier) if not holding_sets: From b3237d4cd549da30c5df3e13a44176d46ec9a30d Mon Sep 17 00:00:00 2001 From: Toke Jepsen Date: Tue, 18 Apr 2023 15:10:36 +0100 Subject: [PATCH 02/13] Update openpype/hosts/maya/api/workfile_template_builder.py --- openpype/hosts/maya/api/workfile_template_builder.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openpype/hosts/maya/api/workfile_template_builder.py b/openpype/hosts/maya/api/workfile_template_builder.py index f8169adb52..bbcc2f802a 100644 --- a/openpype/hosts/maya/api/workfile_template_builder.py +++ b/openpype/hosts/maya/api/workfile_template_builder.py @@ -262,7 +262,7 @@ class MayaPlaceholderLoadPlugin(PlaceholderPlugin, PlaceholderLoadMixin): nodes_to_parent = [] for root in roots: if ref_node: - ref_root = cmds.referenceQuery(root, n=True)[0] + ref_root = cmds.referenceQuery(root, nodes=True)[0] ref_root = ( cmds.listRelatives(ref_root, parent=True) or [ref_root] ) From 78a1d4f9664354201c49cf1b85ee61e8abf718a5 Mon Sep 17 00:00:00 2001 From: Toke Jepsen Date: Thu, 20 Apr 2023 08:44:57 +0100 Subject: [PATCH 03/13] Update openpype/hosts/maya/api/workfile_template_builder.py --- openpype/hosts/maya/api/workfile_template_builder.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openpype/hosts/maya/api/workfile_template_builder.py b/openpype/hosts/maya/api/workfile_template_builder.py index bbcc2f802a..9dc91ed772 100644 --- a/openpype/hosts/maya/api/workfile_template_builder.py +++ b/openpype/hosts/maya/api/workfile_template_builder.py @@ -286,7 +286,7 @@ class MayaPlaceholderLoadPlugin(PlaceholderPlugin, PlaceholderLoadMixin): worldSpace=True ) scene_parent = cmds.listRelatives( - placeholder.scene_identifier, parent=True + placeholder.scene_identifier, parent=True, fullPath=True ) for node in set(nodes_to_parent): cmds.reorder(node, front=True) From b253e4366dbc52bad090b453d1697bc4dcf531d0 Mon Sep 17 00:00:00 2001 From: Toke Stuart Jepsen Date: Thu, 20 Apr 2023 09:07:47 +0100 Subject: [PATCH 04/13] Remove methods from plugin.py --- openpype/hosts/maya/api/plugin.py | 67 ++----------------------------- 1 file changed, 3 insertions(+), 64 deletions(-) diff --git a/openpype/hosts/maya/api/plugin.py b/openpype/hosts/maya/api/plugin.py index 714278ba6c..f065c081f4 100644 --- a/openpype/hosts/maya/api/plugin.py +++ b/openpype/hosts/maya/api/plugin.py @@ -18,70 +18,9 @@ from openpype.settings import get_project_settings from .pipeline import containerise from . import lib - -def get_reference_node(members, log=None): - """Get the reference node from the container members - Args: - members: list of node names - - Returns: - str: Reference node name. - - """ - - # Collect the references without .placeHolderList[] attributes as - # unique entries (objects only) and skipping the sharedReferenceNode. - references = set() - for ref in cmds.ls(members, exactType="reference", objectsOnly=True): - - # Ignore any `:sharedReferenceNode` - if ref.rsplit(":", 1)[-1].startswith("sharedReferenceNode"): - continue - - # Ignore _UNKNOWN_REF_NODE_ (PLN-160) - if ref.rsplit(":", 1)[-1].startswith("_UNKNOWN_REF_NODE_"): - continue - - references.add(ref) - - assert references, "No reference node found in container" - - # Get highest reference node (least parents) - highest = min(references, - key=lambda x: len(get_reference_node_parents(x))) - - # Warn the user when we're taking the highest reference node - if len(references) > 1: - if not log: - log = Logger.get_logger(__name__) - - log.warning("More than one reference node found in " - "container, using highest reference node: " - "%s (in: %s)", highest, list(references)) - - return highest - - -def get_reference_node_parents(ref): - """Return all parent reference nodes of reference node - - Args: - ref (str): reference node. - - Returns: - list: The upstream parent reference nodes. - - """ - parent = cmds.referenceQuery(ref, - referenceNode=True, - parent=True) - parents = [] - while parent: - parents.append(parent) - parent = cmds.referenceQuery(parent, - referenceNode=True, - parent=True) - return parents +# Backwards compatibility: these functions has been moved to lib. +get_reference_node = lib.get_reference_node +get_reference_node_parents = lib.get_reference_node_parents def get_custom_namespace(custom_namespace): From f6c32300c20689e6fe33c368f2108c4fc7334fe8 Mon Sep 17 00:00:00 2001 From: Toke Stuart Jepsen Date: Fri, 21 Apr 2023 10:32:26 +0100 Subject: [PATCH 05/13] Log warning when using plugin methods. --- openpype/hosts/maya/api/plugin.py | 32 ++++++++++++++++++++++++++----- 1 file changed, 27 insertions(+), 5 deletions(-) diff --git a/openpype/hosts/maya/api/plugin.py b/openpype/hosts/maya/api/plugin.py index f065c081f4..87015a0ae9 100644 --- a/openpype/hosts/maya/api/plugin.py +++ b/openpype/hosts/maya/api/plugin.py @@ -18,9 +18,31 @@ from openpype.settings import get_project_settings from .pipeline import containerise from . import lib + +log = Logger.get_logger() + + # Backwards compatibility: these functions has been moved to lib. -get_reference_node = lib.get_reference_node -get_reference_node_parents = lib.get_reference_node_parents +def get_reference_node(*args, **kwargs): + """ + Deprecated: + This funcation was moved ... and will be removed in 3.16.x. + """ + msg = "Function 'get_reference_node' has been moved." + log.warning(msg) + cmds.warning(msg) + return lib.get_reference_node(*args, **kwargs) + + +def get_reference_node_parents(*args, **kwargs): + """ + Deprecated: + This funcation was moved ... and will be removed in 3.16.x. + """ + msg = "Function 'get_reference_node_parents' has been moved." + log.warning(msg) + cmds.warning(msg) + return lib.get_reference_node_parents(*args, **kwargs) def get_custom_namespace(custom_namespace): @@ -182,7 +204,7 @@ class ReferenceLoader(Loader): if not nodes: return - ref_node = get_reference_node(nodes, self.log) + ref_node = lib.get_reference_node(nodes, self.log) container = containerise( name=name, namespace=namespace, @@ -211,7 +233,7 @@ class ReferenceLoader(Loader): # Get reference node from container members members = get_container_members(node) - reference_node = get_reference_node(members, self.log) + reference_node = lib.get_reference_node(members, self.log) namespace = cmds.referenceQuery(reference_node, namespace=True) file_type = { @@ -359,7 +381,7 @@ class ReferenceLoader(Loader): # Assume asset has been referenced members = cmds.sets(node, query=True) - reference_node = get_reference_node(members, self.log) + reference_node = lib.get_reference_node(members, self.log) assert reference_node, ("Imported container not supported; " "container must be referenced.") From f4117a7a5cd84df6ce53e4afd2a91fbb601fc705 Mon Sep 17 00:00:00 2001 From: Toke Stuart Jepsen Date: Wed, 26 Apr 2023 10:35:40 +0100 Subject: [PATCH 06/13] Clean up of placeholder. --- .../hosts/maya/api/workfile_template_builder.py | 4 ++++ .../pipeline/workfile/workfile_template_builder.py | 13 +++++++++++++ 2 files changed, 17 insertions(+) diff --git a/openpype/hosts/maya/api/workfile_template_builder.py b/openpype/hosts/maya/api/workfile_template_builder.py index 9dc91ed772..eb90dfdc37 100644 --- a/openpype/hosts/maya/api/workfile_template_builder.py +++ b/openpype/hosts/maya/api/workfile_template_builder.py @@ -242,6 +242,10 @@ class MayaPlaceholderLoadPlugin(PlaceholderPlugin, PlaceholderLoadMixin): cmds.hide(node) cmds.setAttr(node + ".hiddenInOutliner", True) + def delete_placeholder(self, placeholder): + """Remove placeholder if building was successful""" + cmds.delete(placeholder._scene_identifier) + def load_succeed(self, placeholder, container): self._parent_in_hierarchy(placeholder, container) diff --git a/openpype/pipeline/workfile/workfile_template_builder.py b/openpype/pipeline/workfile/workfile_template_builder.py index a3d7340367..3d28d862a3 100644 --- a/openpype/pipeline/workfile/workfile_template_builder.py +++ b/openpype/pipeline/workfile/workfile_template_builder.py @@ -1555,6 +1555,15 @@ class PlaceholderLoadMixin(object): self.load_succeed(placeholder, container) self.cleanup_placeholder(placeholder, failed) + if failed: + self.log.debug( + "Placeholder cleanup skipped due to failed placeholder " + "population." + ) + return + if not placeholder.data["keep_placeholder"]: + self.delete_placeholder(placeholder) + def load_failed(self, placeholder, representation): if hasattr(placeholder, "load_failed"): placeholder.load_failed(representation) @@ -1577,6 +1586,10 @@ class PlaceholderLoadMixin(object): pass + def delete_placeholder(self, placeholder, failed): + """Called when all item population is done.""" + self.log.debug("Clean up of placeholder is not implemented.") + class PlaceholderCreateMixin(object): """Mixin prepared for creating placeholder plugins. From fa73bbb568b78f2abae63ac8979dac99a163a9bc Mon Sep 17 00:00:00 2001 From: Toke Stuart Jepsen Date: Wed, 26 Apr 2023 11:26:35 +0100 Subject: [PATCH 07/13] Account for "create_first_version" setting. --- openpype/pipeline/workfile/workfile_template_builder.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/openpype/pipeline/workfile/workfile_template_builder.py b/openpype/pipeline/workfile/workfile_template_builder.py index 3d28d862a3..ef8930daf7 100644 --- a/openpype/pipeline/workfile/workfile_template_builder.py +++ b/openpype/pipeline/workfile/workfile_template_builder.py @@ -477,7 +477,9 @@ class AbstractTemplateBuilder(object): create_first_version = template_preset["create_first_version"] # check if first version is created - created_version_workfile = self.create_first_workfile_version() + created_version_workfile = False + if create_first_version: + created_version_workfile = self.create_first_workfile_version() # if first version is created, import template # and populate placeholders From 9747398ce8cb4803139bdae489dbc3eb01de1634 Mon Sep 17 00:00:00 2001 From: Toke Stuart Jepsen Date: Fri, 28 Apr 2023 15:25:37 +0100 Subject: [PATCH 08/13] Rename "cleanup_placeholder" to "post_representation_load" --- openpype/hosts/maya/api/workfile_template_builder.py | 2 +- openpype/hosts/nuke/api/workfile_template_builder.py | 4 ++-- openpype/pipeline/workfile/workfile_template_builder.py | 8 ++++---- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/openpype/hosts/maya/api/workfile_template_builder.py b/openpype/hosts/maya/api/workfile_template_builder.py index eb90dfdc37..11b8c8bd4b 100644 --- a/openpype/hosts/maya/api/workfile_template_builder.py +++ b/openpype/hosts/maya/api/workfile_template_builder.py @@ -233,7 +233,7 @@ class MayaPlaceholderLoadPlugin(PlaceholderPlugin, PlaceholderLoadMixin): def get_placeholder_options(self, options=None): return self.get_load_plugin_options(options) - def cleanup_placeholder(self, placeholder, failed): + def post_representation_load(self, placeholder, failed): """Hide placeholder, add them to placeholder set """ node = placeholder._scene_identifier diff --git a/openpype/hosts/nuke/api/workfile_template_builder.py b/openpype/hosts/nuke/api/workfile_template_builder.py index 72d4ffb476..235a8d1c59 100644 --- a/openpype/hosts/nuke/api/workfile_template_builder.py +++ b/openpype/hosts/nuke/api/workfile_template_builder.py @@ -189,7 +189,7 @@ class NukePlaceholderLoadPlugin(NukePlaceholderPlugin, PlaceholderLoadMixin): def get_placeholder_options(self, options=None): return self.get_load_plugin_options(options) - def cleanup_placeholder(self, placeholder, failed): + def post_representation_load(self, placeholder, failed): # deselect all selected nodes placeholder_node = nuke.toNode(placeholder.scene_identifier) @@ -603,7 +603,7 @@ class NukePlaceholderCreatePlugin( def get_placeholder_options(self, options=None): return self.get_create_plugin_options(options) - def cleanup_placeholder(self, placeholder, failed): + def post_representation_load(self, placeholder, failed): # deselect all selected nodes placeholder_node = nuke.toNode(placeholder.scene_identifier) diff --git a/openpype/pipeline/workfile/workfile_template_builder.py b/openpype/pipeline/workfile/workfile_template_builder.py index ef8930daf7..e8738bd259 100644 --- a/openpype/pipeline/workfile/workfile_template_builder.py +++ b/openpype/pipeline/workfile/workfile_template_builder.py @@ -1555,7 +1555,7 @@ class PlaceholderLoadMixin(object): else: failed = False self.load_succeed(placeholder, container) - self.cleanup_placeholder(placeholder, failed) + self.post_representation_load(placeholder, failed) if failed: self.log.debug( @@ -1574,7 +1574,7 @@ class PlaceholderLoadMixin(object): if hasattr(placeholder, "load_succeed"): placeholder.load_succeed(container) - def cleanup_placeholder(self, placeholder, failed): + def post_representation_load(self, placeholder, failed): """Cleanup placeholder after load of single representation. Can be called multiple times during placeholder item populating and is @@ -1751,7 +1751,7 @@ class PlaceholderCreateMixin(object): failed = False self.create_succeed(placeholder, creator_instance) - self.cleanup_placeholder(placeholder, failed) + self.post_representation_load(placeholder, failed) def create_failed(self, placeholder, creator_data): if hasattr(placeholder, "create_failed"): @@ -1761,7 +1761,7 @@ class PlaceholderCreateMixin(object): if hasattr(placeholder, "create_succeed"): placeholder.create_succeed(creator_instance) - def cleanup_placeholder(self, placeholder, failed): + def post_representation_load(self, placeholder, failed): """Cleanup placeholder after load of single representation. Can be called multiple times during placeholder item populating and is From 8cf509fbd105b3e54362db39a35975ad6ace3683 Mon Sep 17 00:00:00 2001 From: Toke Stuart Jepsen Date: Thu, 11 May 2023 10:17:51 +0100 Subject: [PATCH 09/13] Fix for multiple placeholder matches. --- openpype/hosts/maya/api/workfile_template_builder.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/openpype/hosts/maya/api/workfile_template_builder.py b/openpype/hosts/maya/api/workfile_template_builder.py index 11b8c8bd4b..1380d65ba9 100644 --- a/openpype/hosts/maya/api/workfile_template_builder.py +++ b/openpype/hosts/maya/api/workfile_template_builder.py @@ -268,11 +268,13 @@ class MayaPlaceholderLoadPlugin(PlaceholderPlugin, PlaceholderLoadMixin): if ref_node: ref_root = cmds.referenceQuery(root, nodes=True)[0] ref_root = ( - cmds.listRelatives(ref_root, parent=True) or [ref_root] + cmds.listRelatives(ref_root, parent=True, path=True) or + [ref_root] ) nodes_to_parent.extend(ref_root) continue if root.endswith("_RN"): + # Backwards compatibility for hardcoded reference names. refRoot = cmds.referenceQuery(root, n=True)[0] refRoot = cmds.listRelatives(refRoot, parent=True) or [refRoot] nodes_to_parent.extend(refRoot) From d2842b0cd7586f1a842a9f957575d49b7e1a2def Mon Sep 17 00:00:00 2001 From: Toke Stuart Jepsen Date: Thu, 11 May 2023 17:55:25 +0100 Subject: [PATCH 10/13] post_representation_load > post_placeholder_process --- openpype/hosts/maya/api/workfile_template_builder.py | 2 +- openpype/hosts/nuke/api/workfile_template_builder.py | 4 ++-- openpype/pipeline/workfile/workfile_template_builder.py | 8 ++++---- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/openpype/hosts/maya/api/workfile_template_builder.py b/openpype/hosts/maya/api/workfile_template_builder.py index 1380d65ba9..d392ceebec 100644 --- a/openpype/hosts/maya/api/workfile_template_builder.py +++ b/openpype/hosts/maya/api/workfile_template_builder.py @@ -233,7 +233,7 @@ class MayaPlaceholderLoadPlugin(PlaceholderPlugin, PlaceholderLoadMixin): def get_placeholder_options(self, options=None): return self.get_load_plugin_options(options) - def post_representation_load(self, placeholder, failed): + def post_placeholder_process(self, placeholder, failed): """Hide placeholder, add them to placeholder set """ node = placeholder._scene_identifier diff --git a/openpype/hosts/nuke/api/workfile_template_builder.py b/openpype/hosts/nuke/api/workfile_template_builder.py index 235a8d1c59..8cb1e7839a 100644 --- a/openpype/hosts/nuke/api/workfile_template_builder.py +++ b/openpype/hosts/nuke/api/workfile_template_builder.py @@ -189,7 +189,7 @@ class NukePlaceholderLoadPlugin(NukePlaceholderPlugin, PlaceholderLoadMixin): def get_placeholder_options(self, options=None): return self.get_load_plugin_options(options) - def post_representation_load(self, placeholder, failed): + def post_placeholder_process(self, placeholder, failed): # deselect all selected nodes placeholder_node = nuke.toNode(placeholder.scene_identifier) @@ -603,7 +603,7 @@ class NukePlaceholderCreatePlugin( def get_placeholder_options(self, options=None): return self.get_create_plugin_options(options) - def post_representation_load(self, placeholder, failed): + def post_placeholder_process(self, placeholder, failed): # deselect all selected nodes placeholder_node = nuke.toNode(placeholder.scene_identifier) diff --git a/openpype/pipeline/workfile/workfile_template_builder.py b/openpype/pipeline/workfile/workfile_template_builder.py index e8738bd259..f4dca685d1 100644 --- a/openpype/pipeline/workfile/workfile_template_builder.py +++ b/openpype/pipeline/workfile/workfile_template_builder.py @@ -1555,7 +1555,7 @@ class PlaceholderLoadMixin(object): else: failed = False self.load_succeed(placeholder, container) - self.post_representation_load(placeholder, failed) + self.post_placeholder_process(placeholder, failed) if failed: self.log.debug( @@ -1574,7 +1574,7 @@ class PlaceholderLoadMixin(object): if hasattr(placeholder, "load_succeed"): placeholder.load_succeed(container) - def post_representation_load(self, placeholder, failed): + def post_placeholder_process(self, placeholder, failed): """Cleanup placeholder after load of single representation. Can be called multiple times during placeholder item populating and is @@ -1751,7 +1751,7 @@ class PlaceholderCreateMixin(object): failed = False self.create_succeed(placeholder, creator_instance) - self.post_representation_load(placeholder, failed) + self.post_placeholder_process(placeholder, failed) def create_failed(self, placeholder, creator_data): if hasattr(placeholder, "create_failed"): @@ -1761,7 +1761,7 @@ class PlaceholderCreateMixin(object): if hasattr(placeholder, "create_succeed"): placeholder.create_succeed(creator_instance) - def post_representation_load(self, placeholder, failed): + def post_placeholder_process(self, placeholder, failed): """Cleanup placeholder after load of single representation. Can be called multiple times during placeholder item populating and is From 67f012e441a18e669c93c7b15ce17a6d9dbcc05d Mon Sep 17 00:00:00 2001 From: Roy Nieterau Date: Mon, 12 Jun 2023 16:03:26 +0200 Subject: [PATCH 11/13] Fix typo + cosmetics --- openpype/hosts/maya/api/plugin.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/openpype/hosts/maya/api/plugin.py b/openpype/hosts/maya/api/plugin.py index 691c7da6cf..967d39674c 100644 --- a/openpype/hosts/maya/api/plugin.py +++ b/openpype/hosts/maya/api/plugin.py @@ -26,7 +26,7 @@ log = Logger.get_logger() def get_reference_node(*args, **kwargs): """ Deprecated: - This funcation was moved ... and will be removed in 3.16.x. + This function was moved and will be removed in 3.16.x. """ msg = "Function 'get_reference_node' has been moved." log.warning(msg) @@ -37,7 +37,7 @@ def get_reference_node(*args, **kwargs): def get_reference_node_parents(*args, **kwargs): """ Deprecated: - This funcation was moved ... and will be removed in 3.16.x. + This function was moved and will be removed in 3.16.x. """ msg = "Function 'get_reference_node_parents' has been moved." log.warning(msg) From dcf3b2749326d173a9a6b635f51f213b83baa6ab Mon Sep 17 00:00:00 2001 From: Toke Jepsen Date: Fri, 23 Jun 2023 14:49:46 +0100 Subject: [PATCH 12/13] Update openpype/pipeline/workfile/workfile_template_builder.py Co-authored-by: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> --- openpype/pipeline/workfile/workfile_template_builder.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openpype/pipeline/workfile/workfile_template_builder.py b/openpype/pipeline/workfile/workfile_template_builder.py index 83d602fa79..489297efe4 100644 --- a/openpype/pipeline/workfile/workfile_template_builder.py +++ b/openpype/pipeline/workfile/workfile_template_builder.py @@ -1574,7 +1574,7 @@ class PlaceholderLoadMixin(object): "population." ) return - if not placeholder.data["keep_placeholder"]: + if not placeholder.data.get("keep_placeholder", True): self.delete_placeholder(placeholder) def load_failed(self, placeholder, representation): From 4a8e5c48179464e59a533b87777c81738d0f255c Mon Sep 17 00:00:00 2001 From: Toke Stuart Jepsen Date: Fri, 23 Jun 2023 14:56:44 +0100 Subject: [PATCH 13/13] Illicit feedback --- openpype/hosts/maya/api/workfile_template_builder.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/openpype/hosts/maya/api/workfile_template_builder.py b/openpype/hosts/maya/api/workfile_template_builder.py index 4471fc2b3b..38ac8f9f8a 100644 --- a/openpype/hosts/maya/api/workfile_template_builder.py +++ b/openpype/hosts/maya/api/workfile_template_builder.py @@ -253,7 +253,7 @@ class MayaPlaceholderLoadPlugin(PlaceholderPlugin, PlaceholderLoadMixin): def post_placeholder_process(self, placeholder, failed): """Hide placeholder, add them to placeholder set """ - node = placeholder._scene_identifier + node = placeholder.scene_identifier cmds.sets(node, addElement=PLACEHOLDER_SET) cmds.hide(node) @@ -261,7 +261,7 @@ class MayaPlaceholderLoadPlugin(PlaceholderPlugin, PlaceholderLoadMixin): def delete_placeholder(self, placeholder): """Remove placeholder if building was successful""" - cmds.delete(placeholder._scene_identifier) + cmds.delete(placeholder.scene_identifier) def load_succeed(self, placeholder, container): self._parent_in_hierarchy(placeholder, container)