diff --git a/colorbleed/plugins/maya/publish/extract_look.py b/colorbleed/plugins/maya/publish/extract_look.py index 46d45400a4..eb7e7228d0 100644 --- a/colorbleed/plugins/maya/publish/extract_look.py +++ b/colorbleed/plugins/maya/publish/extract_look.py @@ -41,7 +41,7 @@ class ExtractLook(colorbleed.api.Extractor): # exported file by accident self.log.info("Extract sets (Maya ASCII) ...") lookdata = instance.data["lookData"] - sets = lookdata["sets"] + sets = lookdata["relationships"].keys() resources = instance.data["resources"] remap = {} @@ -72,7 +72,7 @@ class ExtractLook(colorbleed.api.Extractor): # Write the JSON data self.log.info("Extract json..") data = {"attributes": lookdata["attributes"], - "sets": lookdata["relationships"]} + "relationships": lookdata["relationships"]} with open(json_path, "w") as f: json.dump(data, f) diff --git a/colorbleed/plugins/maya/publish/validate_look_contents.py b/colorbleed/plugins/maya/publish/validate_look_contents.py index 15ba682540..1bdd3d0aef 100644 --- a/colorbleed/plugins/maya/publish/validate_look_contents.py +++ b/colorbleed/plugins/maya/publish/validate_look_contents.py @@ -1,5 +1,8 @@ +import maya.cmds as cmds + import pyblish.api import colorbleed.api +import colorbleed.maya.lib as lib class ValidateLookContents(pyblish.api.InstancePlugin): @@ -24,16 +27,21 @@ class ValidateLookContents(pyblish.api.InstancePlugin): invalid = self.get_invalid(instance) if invalid: - raise RuntimeError("Invalid look content") + raise RuntimeError("'{}' has invalid look " + "content".format(instance.name)) @classmethod def get_invalid(cls, instance): """Get all invalid nodes""" + cls.log.info("Validating look content for " + "'{}'".format(instance.name)) + + instance_items = cls.validate_instance_items(instance) attributes = list(cls.validate_lookdata_attributes(instance)) relationships = list(cls.validate_relationship_ids(instance)) - invalid = attributes + relationships + invalid = instance_items + attributes + relationships return invalid @@ -58,8 +66,8 @@ class ValidateLookContents(pyblish.api.InstancePlugin): # Validate at least one single relationship is collected if not lookdata["relationships"]: - cls.log.error("Look '{}' has no `relationship` or " - "`sets`".format(instance.name)) + cls.log.error("Look '{}' has no " + "`relationship`".format(instance.name)) invalid.add(instance.name) return invalid @@ -74,8 +82,24 @@ class ValidateLookContents(pyblish.api.InstancePlugin): for objectset, members in relationships.items(): uuid = members["uuid"] if not uuid: - look_name = members["name"] + look_name = objectset cls.log.error("{} has invalid ID ".format(look_name)) invalid.add(look_name) return invalid + + @classmethod + def validate_instance_items(cls, instance): + + required_nodes = lib.get_id_required_nodes(referenced_nodes=False) + + invalid = [node for node in instance if node in required_nodes + and not lib.get_id(node)] + if invalid: + nr_of_invalid = len(invalid) + cls.log.error("Found {} nodes without ID: {}".format(nr_of_invalid, + invalid)) + return invalid + + + diff --git a/colorbleed/plugins/maya/publish/validate_node_ids.py b/colorbleed/plugins/maya/publish/validate_node_ids.py index fe2a0cb6a8..733af05d4f 100644 --- a/colorbleed/plugins/maya/publish/validate_node_ids.py +++ b/colorbleed/plugins/maya/publish/validate_node_ids.py @@ -34,10 +34,8 @@ class ValidateNodeIDs(pyblish.api.InstancePlugin): # We do want to check the referenced nodes as it might be # part of the end product - id_nodes = lib.get_id_required_nodes(defaults=False, - referenced_nodes=True) - - nodes = instance[:] - invalid = [n for n in nodes if n in id_nodes and not lib.get_id(n)] + id_nodes = lib.get_id_required_nodes(referenced_nodes=True) + invalid = [n for n in instance[:] if n in id_nodes + and not lib.get_id(n)] return invalid diff --git a/colorbleed/plugins/maya/publish/validate_rig_contents.py b/colorbleed/plugins/maya/publish/validate_rig_contents.py index 3ef1220e56..d07fafe362 100644 --- a/colorbleed/plugins/maya/publish/validate_rig_contents.py +++ b/colorbleed/plugins/maya/publish/validate_rig_contents.py @@ -100,7 +100,6 @@ class ValidateRigContents(pyblish.api.InstancePlugin): """ errors = [] for node in nodes: - print node if node not in hierarchy: errors.append(node) return errors