updated lookdev validations and extractor

This commit is contained in:
aardschok 2017-08-10 13:56:44 +02:00
parent c0cfc0bc03
commit 1d94a9f0b2
4 changed files with 34 additions and 13 deletions

View file

@ -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)

View file

@ -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

View file

@ -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

View file

@ -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