def collect_sets(self, instance): """Collect all objectSets which are of importance for publishing It checks if all nodes in the instance are related to any objectSet which need to be Args: instance (list): all nodes to be published Returns: dict """ sets = dict() for node in instance: related_sets = lib.get_related_sets(node) if not related_sets: continue for objset in related_sets: if objset in sets: continue sets[objset] = {"uuid": lib.get_id(objset), "members": list()} return sets
def get_invalid(cls, instance): """Get all invalid nodes""" cls.log.info("Validating look content for " "'{}'".format(instance.name)) relationships = instance.data["lookData"]["relationships"] invalid = [] renderlayer = instance.data.get("renderlayer", "defaultRenderLayer") with lib.renderlayer(renderlayer): for node in instance: # get the connected objectSets of the node sets = lib.get_related_sets(node) if not sets: continue # check if any objectSets are not present ion the relationships missing_sets = [s for s in sets if s not in relationships] if missing_sets: for set in missing_sets: if '_SET' not in set: # A set of this node is not coming along, this is wrong! cls.log.error("Missing sets '{}' for node " "'{}'".format(missing_sets, node)) invalid.append(node) continue # Ensure the node is in the sets that are collected for shaderset, data in relationships.items(): if shaderset not in sets: # no need to check for a set if the node # isn't in it anyway continue member_nodes = [ member['name'] for member in data['members'] ] if node not in member_nodes: # The node is not found in the collected set # relationships cls.log.error("Missing '{}' in collected set node " "'{}'".format(node, shaderset)) invalid.append(node) continue return invalid