From 2dd251473c472e1f03a7943124460e1afb3ae99c Mon Sep 17 00:00:00 2001 From: aardschok Date: Wed, 9 Aug 2017 12:02:16 +0200 Subject: [PATCH] improved validation --- .../maya/publish/validate_look_contents.py | 22 +++++++++++-------- .../plugins/maya/publish/validate_node_ids.py | 17 ++++++++++++-- 2 files changed, 28 insertions(+), 11 deletions(-) diff --git a/colorbleed/plugins/maya/publish/validate_look_contents.py b/colorbleed/plugins/maya/publish/validate_look_contents.py index 81a22812b4..9f0323c6cc 100644 --- a/colorbleed/plugins/maya/publish/validate_look_contents.py +++ b/colorbleed/plugins/maya/publish/validate_look_contents.py @@ -90,19 +90,23 @@ class ValidateLookContents(pyblish.api.InstancePlugin): """Check if instance content items are part of the default nodes""" invalid = [] - cams = cmds.ls(['frontShape', 'perspShape', 'sideShape', 'topShape'], - long=True) - defaults = cmds.ls(long=True, defaultNodes=True) - defaults.extend(cams) + cams = ["perspShape", "topShape", "frontShape", "sideShape"] + cameras = cmds.ls(cams, long=True) + references = cmds.ls(referencedNodes=True) + default_nodes = cmds.ls(defaultNodes=True, long=True) + + defaults = list(set(cameras + references + default_nodes)) for node in cmds.ls(instance[:], long=True): # might be a transform of a default item listed if cmds.nodeType(node) == "transform": - node = cmds.listRelatives(node, - children=True, - fullPath=True)[0] or None - - print node, node in defaults + children = cmds.listRelatives(node, + children=True, + fullPath=True) + if children: + node = children + else: + continue if node in defaults: invalid.append(node) diff --git a/colorbleed/plugins/maya/publish/validate_node_ids.py b/colorbleed/plugins/maya/publish/validate_node_ids.py index 7ae19dfe1a..b3a1644e93 100644 --- a/colorbleed/plugins/maya/publish/validate_node_ids.py +++ b/colorbleed/plugins/maya/publish/validate_node_ids.py @@ -12,7 +12,7 @@ class ValidateNodeIDs(pyblish.api.InstancePlugin): """ order = colorbleed.api.ValidatePipelineOrder - label = 'Node Ids (ID)' + label = 'Instance Nodes Have ID' hosts = ['maya'] families = ["colorbleed.model", "colorbleed.lookdev", @@ -41,9 +41,22 @@ class ValidateNodeIDs(pyblish.api.InstancePlugin): nodes = lib.filter_out_nodes(set(instance[:]), defaults=True) for node in nodes: if not lib.get_id(node): + + # check if siblings have IDs + valid_hierarchy = cls.validate_children(node) + if valid_hierarchy: + continue + invalid.append(node) return invalid + @staticmethod + def validate_children(node): + """Validate the children of the node if the ID is not present""" - + children = cmds.listRelatives(node, children=True) + for child in children: + if lib.get_id(child): + return True + return False