From 09be994ca11cf21c95e2e93e075e21c9ea190bbf Mon Sep 17 00:00:00 2001 From: Kayla Man Date: Tue, 15 Nov 2022 20:48:14 +0800 Subject: [PATCH 01/12] layout publish more than one container issue --- .../maya/plugins/publish/extract_layout.py | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/openpype/hosts/maya/plugins/publish/extract_layout.py b/openpype/hosts/maya/plugins/publish/extract_layout.py index a801d99f42..a5131efca9 100644 --- a/openpype/hosts/maya/plugins/publish/extract_layout.py +++ b/openpype/hosts/maya/plugins/publish/extract_layout.py @@ -15,6 +15,7 @@ class ExtractLayout(publish.Extractor): label = "Extract Layout" hosts = ["maya"] families = ["layout"] + project_container = "AVALON_CONTAINERS" optional = True def process(self, instance): @@ -33,13 +34,17 @@ class ExtractLayout(publish.Extractor): for asset in cmds.sets(str(instance), query=True): # Find the container - grp_name = asset.split(':')[0] - containers = cmds.ls("{}*_CON".format(grp_name)) - - assert len(containers) == 1, \ - "More than one container found for {}".format(asset) - - container = containers[0] + project_container = self.project_container + container_list = cmds.ls(project_container) + assert len(container_list) == 1, \ + "No project container found for {} " \ + "Please create instance with loaded asset".format(asset) + containers = cmds.sets(project_container, query=True) + for con in containers: + if "_CON" not in con: + assert containers == [], \ + "No container found for {}".format(asset) + container = con representation_id = cmds.getAttr( "{}.representation".format(container)) From 0dff5e86c5f3f7b0e917c1538feb4ee23a6eb034 Mon Sep 17 00:00:00 2001 From: Kayla Man Date: Tue, 15 Nov 2022 21:08:48 +0800 Subject: [PATCH 02/12] layout publish more than one container issue --- openpype/hosts/maya/plugins/publish/extract_layout.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/openpype/hosts/maya/plugins/publish/extract_layout.py b/openpype/hosts/maya/plugins/publish/extract_layout.py index a5131efca9..c6eca0b05e 100644 --- a/openpype/hosts/maya/plugins/publish/extract_layout.py +++ b/openpype/hosts/maya/plugins/publish/extract_layout.py @@ -37,13 +37,12 @@ class ExtractLayout(publish.Extractor): project_container = self.project_container container_list = cmds.ls(project_container) assert len(container_list) == 1, \ - "No project container found for {} " \ - "Please create instance with loaded asset".format(asset) + "Please create instance with loaded asset" containers = cmds.sets(project_container, query=True) for con in containers: if "_CON" not in con: assert containers == [], \ - "No container found for {}".format(asset) + "No container found for {}".format(asset) container = con representation_id = cmds.getAttr( From d5b1f58fd25c4fac3bfdc1bc1311ee2913f70498 Mon Sep 17 00:00:00 2001 From: Kayla Man Date: Thu, 17 Nov 2022 19:16:13 +0800 Subject: [PATCH 03/12] layout publish more than one container issue --- openpype/hosts/maya/plugins/publish/extract_layout.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/openpype/hosts/maya/plugins/publish/extract_layout.py b/openpype/hosts/maya/plugins/publish/extract_layout.py index c6eca0b05e..f77835d47f 100644 --- a/openpype/hosts/maya/plugins/publish/extract_layout.py +++ b/openpype/hosts/maya/plugins/publish/extract_layout.py @@ -39,10 +39,15 @@ class ExtractLayout(publish.Extractor): assert len(container_list) == 1, \ "Please create instance with loaded asset" containers = cmds.sets(project_container, query=True) + load_asset = asset.split(':')[0] for con in containers: - if "_CON" not in con: + ass_transform = cmds.listRelatives(con, allParents=True)[0] + if load_asset not in ass_transform: assert containers == [], \ "No container found for {}".format(asset) + if "_CON" not in con: + assert containers == [], \ + "Container missing for {}".format(asset) container = con representation_id = cmds.getAttr( From 103fd66282217ede3a69c04d9e251e23a6a4dbbd Mon Sep 17 00:00:00 2001 From: Kayla Man Date: Fri, 2 Dec 2022 19:53:54 +0800 Subject: [PATCH 04/12] layout publish more than one container issue --- .../maya/plugins/publish/extract_layout.py | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/openpype/hosts/maya/plugins/publish/extract_layout.py b/openpype/hosts/maya/plugins/publish/extract_layout.py index f77835d47f..a11652feb3 100644 --- a/openpype/hosts/maya/plugins/publish/extract_layout.py +++ b/openpype/hosts/maya/plugins/publish/extract_layout.py @@ -39,15 +39,17 @@ class ExtractLayout(publish.Extractor): assert len(container_list) == 1, \ "Please create instance with loaded asset" containers = cmds.sets(project_container, query=True) - load_asset = asset.split(':')[0] + # list the children of the containers + ass_transform = cmds.listRelatives(containers, allParents=True) + ass = cmds.listRelatives(asset, children=True, type="transform") + # compare the group of the asset with + # the children list of the container + # to find the content which is not loaded from the loader + for a in ass: + if a not in ass_transform: + assert containers == [], \ + "no container found in {}".format(a) for con in containers: - ass_transform = cmds.listRelatives(con, allParents=True)[0] - if load_asset not in ass_transform: - assert containers == [], \ - "No container found for {}".format(asset) - if "_CON" not in con: - assert containers == [], \ - "Container missing for {}".format(asset) container = con representation_id = cmds.getAttr( From f96e4f162633425c00b077043624c09982a44d3d Mon Sep 17 00:00:00 2001 From: Kayla Man Date: Sat, 3 Dec 2022 00:20:18 +0800 Subject: [PATCH 05/12] layout publish more than one container issue --- .../maya/plugins/publish/extract_layout.py | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/openpype/hosts/maya/plugins/publish/extract_layout.py b/openpype/hosts/maya/plugins/publish/extract_layout.py index a11652feb3..e0bf158851 100644 --- a/openpype/hosts/maya/plugins/publish/extract_layout.py +++ b/openpype/hosts/maya/plugins/publish/extract_layout.py @@ -37,19 +37,14 @@ class ExtractLayout(publish.Extractor): project_container = self.project_container container_list = cmds.ls(project_container) assert len(container_list) == 1, \ - "Please create instance with loaded asset" - containers = cmds.sets(project_container, query=True) + "Please create instance with loaded asset!" # list the children of the containers - ass_transform = cmds.listRelatives(containers, allParents=True) - ass = cmds.listRelatives(asset, children=True, type="transform") - # compare the group of the asset with - # the children list of the container - # to find the content which is not loaded from the loader - for a in ass: - if a not in ass_transform: + grp_name = asset.split(':')[0] + con_sel = cmds.ls("{}*_CON".format(grp_name)) + if not con_sel: assert containers == [], \ - "no container found in {}".format(a) - for con in containers: + "Use all loaded contents without renaming and grouping!" # noqa + for con in con_sel: container = con representation_id = cmds.getAttr( From f50fef2be8829e273ac08d85a431c1c1352e2b39 Mon Sep 17 00:00:00 2001 From: Kayla Man Date: Sat, 3 Dec 2022 00:21:31 +0800 Subject: [PATCH 06/12] layout publish more than one container issue --- openpype/hosts/maya/plugins/publish/extract_layout.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/openpype/hosts/maya/plugins/publish/extract_layout.py b/openpype/hosts/maya/plugins/publish/extract_layout.py index e0bf158851..67a4bc564e 100644 --- a/openpype/hosts/maya/plugins/publish/extract_layout.py +++ b/openpype/hosts/maya/plugins/publish/extract_layout.py @@ -40,11 +40,11 @@ class ExtractLayout(publish.Extractor): "Please create instance with loaded asset!" # list the children of the containers grp_name = asset.split(':')[0] - con_sel = cmds.ls("{}*_CON".format(grp_name)) - if not con_sel: + containers = cmds.ls("{}*_CON".format(grp_name)) + if not containers: assert containers == [], \ "Use all loaded contents without renaming and grouping!" # noqa - for con in con_sel: + for con in containers: container = con representation_id = cmds.getAttr( From 99c7faf78ff9e1ab2d7692a16f3769074ed895f4 Mon Sep 17 00:00:00 2001 From: Kayla Man Date: Sat, 3 Dec 2022 00:24:29 +0800 Subject: [PATCH 07/12] layer publish more than one container issue --- openpype/hosts/maya/plugins/publish/extract_layout.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/openpype/hosts/maya/plugins/publish/extract_layout.py b/openpype/hosts/maya/plugins/publish/extract_layout.py index 67a4bc564e..bf41ca65ba 100644 --- a/openpype/hosts/maya/plugins/publish/extract_layout.py +++ b/openpype/hosts/maya/plugins/publish/extract_layout.py @@ -40,11 +40,11 @@ class ExtractLayout(publish.Extractor): "Please create instance with loaded asset!" # list the children of the containers grp_name = asset.split(':')[0] - containers = cmds.ls("{}*_CON".format(grp_name)) - if not containers: - assert containers == [], \ + container_sel = cmds.ls("{}*_CON".format(grp_name)) + if not container_sel: + assert container_sel == [], \ "Use all loaded contents without renaming and grouping!" # noqa - for con in containers: + for con in container_sel: container = con representation_id = cmds.getAttr( From 632ee268e172256b63eb88d081abcfe1bbbdee00 Mon Sep 17 00:00:00 2001 From: Kayla Man Date: Sat, 3 Dec 2022 00:26:25 +0800 Subject: [PATCH 08/12] layer publish more than one container issue --- openpype/hosts/maya/plugins/publish/extract_layout.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/openpype/hosts/maya/plugins/publish/extract_layout.py b/openpype/hosts/maya/plugins/publish/extract_layout.py index bf41ca65ba..4ad2248d62 100644 --- a/openpype/hosts/maya/plugins/publish/extract_layout.py +++ b/openpype/hosts/maya/plugins/publish/extract_layout.py @@ -42,8 +42,8 @@ class ExtractLayout(publish.Extractor): grp_name = asset.split(':')[0] container_sel = cmds.ls("{}*_CON".format(grp_name)) if not container_sel: - assert container_sel == [], \ - "Use all loaded contents without renaming and grouping!" # noqa + assert container_sel == [], \ + "Use all loaded contents without renaming and grouping!" # noqa for con in container_sel: container = con From d57fdcf7971bd99422b676a2a9074b2f7eb4e767 Mon Sep 17 00:00:00 2001 From: Kayla Man Date: Sun, 4 Dec 2022 19:16:01 +0800 Subject: [PATCH 09/12] layout publish more than one container issue --- .../maya/plugins/create/create_layout.py | 7 +++++++ .../maya/plugins/publish/extract_layout.py | 21 ++++++++++++------- 2 files changed, 20 insertions(+), 8 deletions(-) diff --git a/openpype/hosts/maya/plugins/create/create_layout.py b/openpype/hosts/maya/plugins/create/create_layout.py index 6dc87430aa..9fc0c5c4bc 100644 --- a/openpype/hosts/maya/plugins/create/create_layout.py +++ b/openpype/hosts/maya/plugins/create/create_layout.py @@ -8,3 +8,10 @@ class CreateLayout(plugin.Creator): label = "Layout" family = "layout" icon = "cubes" + def __init__(self, *args, **kwargs): + super(CreateLayout, self).__init__(*args, **kwargs) + + + # enable this when you want to + # publish group of loaded asset + self.data["groupLoadedAssets"] = False diff --git a/openpype/hosts/maya/plugins/publish/extract_layout.py b/openpype/hosts/maya/plugins/publish/extract_layout.py index 4ad2248d62..6b9af68997 100644 --- a/openpype/hosts/maya/plugins/publish/extract_layout.py +++ b/openpype/hosts/maya/plugins/publish/extract_layout.py @@ -38,14 +38,19 @@ class ExtractLayout(publish.Extractor): container_list = cmds.ls(project_container) assert len(container_list) == 1, \ "Please create instance with loaded asset!" - # list the children of the containers - grp_name = asset.split(':')[0] - container_sel = cmds.ls("{}*_CON".format(grp_name)) - if not container_sel: - assert container_sel == [], \ - "Use all loaded contents without renaming and grouping!" # noqa - for con in container_sel: - container = con + + grp_loaded_ass = instance.data.get("groupLoadedAssets", False) + if grp_loaded_ass: + asset_list = cmds.listRelatives(asset, children=True) + for asset in asset_list: + grp_name = asset.split(':')[0] + else: + grp_name = asset.split(':')[0] + containers = cmds.ls("{}*_CON".format(grp_name)) + assert len(containers) > 0, \ + "Use all loaded contents without renaming" \ + "(and/or grouping if groupLoadedAssets disabled)" # noqa + container = containers[0] representation_id = cmds.getAttr( "{}.representation".format(container)) From 9f7377c304b20dc954f5d0d91c1d1831cdfd1c2e Mon Sep 17 00:00:00 2001 From: Kayla Man Date: Sun, 4 Dec 2022 19:16:51 +0800 Subject: [PATCH 10/12] layout publish more than one container issue --- openpype/hosts/maya/plugins/create/create_layout.py | 1 + 1 file changed, 1 insertion(+) diff --git a/openpype/hosts/maya/plugins/create/create_layout.py b/openpype/hosts/maya/plugins/create/create_layout.py index 9fc0c5c4bc..6f5b363693 100644 --- a/openpype/hosts/maya/plugins/create/create_layout.py +++ b/openpype/hosts/maya/plugins/create/create_layout.py @@ -8,6 +8,7 @@ class CreateLayout(plugin.Creator): label = "Layout" family = "layout" icon = "cubes" + def __init__(self, *args, **kwargs): super(CreateLayout, self).__init__(*args, **kwargs) From 5ed958056a079e5090b75ba1050f6c6bb6c3bcac Mon Sep 17 00:00:00 2001 From: Kayla Man Date: Sun, 4 Dec 2022 19:18:04 +0800 Subject: [PATCH 11/12] layout publish more than one container issue --- openpype/hosts/maya/plugins/create/create_layout.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/openpype/hosts/maya/plugins/create/create_layout.py b/openpype/hosts/maya/plugins/create/create_layout.py index 6f5b363693..1768a3d49e 100644 --- a/openpype/hosts/maya/plugins/create/create_layout.py +++ b/openpype/hosts/maya/plugins/create/create_layout.py @@ -11,8 +11,6 @@ class CreateLayout(plugin.Creator): def __init__(self, *args, **kwargs): super(CreateLayout, self).__init__(*args, **kwargs) - - # enable this when you want to # publish group of loaded asset self.data["groupLoadedAssets"] = False From a4fc2913b49e7430638701ed89cff1eae77248c1 Mon Sep 17 00:00:00 2001 From: Kayla Man Date: Mon, 5 Dec 2022 18:43:13 +0800 Subject: [PATCH 12/12] layout publish more than one container issue --- .../hosts/maya/plugins/publish/extract_layout.py | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/openpype/hosts/maya/plugins/publish/extract_layout.py b/openpype/hosts/maya/plugins/publish/extract_layout.py index 6b9af68997..7921fca069 100644 --- a/openpype/hosts/maya/plugins/publish/extract_layout.py +++ b/openpype/hosts/maya/plugins/publish/extract_layout.py @@ -36,8 +36,10 @@ class ExtractLayout(publish.Extractor): # Find the container project_container = self.project_container container_list = cmds.ls(project_container) - assert len(container_list) == 1, \ - "Please create instance with loaded asset!" + if len(container_list) == 0: + self.log.warning("Project container is not found!") + self.log.warning("The asset(s) may not be properly loaded after published") # noqa + continue grp_loaded_ass = instance.data.get("groupLoadedAssets", False) if grp_loaded_ass: @@ -47,9 +49,10 @@ class ExtractLayout(publish.Extractor): else: grp_name = asset.split(':')[0] containers = cmds.ls("{}*_CON".format(grp_name)) - assert len(containers) > 0, \ - "Use all loaded contents without renaming" \ - "(and/or grouping if groupLoadedAssets disabled)" # noqa + if len(containers) == 0: + self.log.warning("{} isn't from the loader".format(asset)) + self.log.warning("It may not be properly loaded after published") # noqa + continue container = containers[0] representation_id = cmds.getAttr(