validate list of node types

This commit is contained in:
Ondrej Samohel 2021-05-12 17:52:14 +02:00 committed by Ondrej Samohel
parent df235d3ad1
commit 5f79df6dd6
No known key found for this signature in database
GPG key ID: 02376E18990A97C6
3 changed files with 49 additions and 0 deletions

View file

@ -1,6 +1,7 @@
# -*- coding: utf-8 -*-
"""Maya validator for render settings."""
import re
from collections import OrderedDict
from maya import cmds, mel
@ -213,6 +214,44 @@ class ValidateRenderSettings(pyblish.api.InstancePlugin):
cls.log.error("Expecting padding of {} ( {} )".format(
cls.DEFAULT_PADDING, "0" * cls.DEFAULT_PADDING))
# load validation definitions from settings
validation_settings = (
instance.context.data["project_settings"]["maya"]["publish"]["ValidateRenderSettings"].get(
"{}_render_attributes".format(renderer))
)
from pprint import pprint
pprint(validation_settings)
# go through definitions and test if such node.attribute exists.
# if so, compare its value from the one required.
for attr, value in OrderedDict(validation_settings).items():
# first get node of that type
cls.log.debug("{}: {}".format(attr, value))
node_type = attr.split(".")[0]
attribute_name = ".".join(attr.split(".")[1:])
nodes = cmds.ls(type=node_type)
if not isinstance(nodes, list):
cls.log.warning("No nodes of '{}' found.".format(node_type))
continue
for node in nodes:
try:
render_value = cmds.getAttr(
"{}.{}".format(node, attribute_name))
except RuntimeError as e:
invalid = True
cls.log.error(
"Cannot get value of {}.{}".format(
node, attribute_name))
else:
if value != render_value:
invalid = True
cls.log.error(
("Invalid value {} set on {}.{}. "
"Expecting {}").format(
render_value, node, attribute_name, value)
)
return invalid
@classmethod

View file

@ -135,6 +135,12 @@
"enabled": false,
"attributes": {}
},
"ValidateRenderSettings": {
"arnold_render_attributes": [],
"vray_render_attributes": [],
"redshift_render_attributes": [],
"renderman_render_attributes": []
},
"ValidateModelName": {
"enabled": false,
"material_file": {

View file

@ -81,6 +81,7 @@
"children": [
{
"type": "dict-modifiable",
"store_as_list": true,
"key": "arnold_render_attributes",
"label": "Arnold Render Attributes",
"use_label_wrap": true,
@ -90,6 +91,7 @@
},
{
"type": "dict-modifiable",
"store_as_list": true,
"key": "vray_render_attributes",
"label": "Vray Render Attributes",
"use_label_wrap": true,
@ -99,6 +101,7 @@
},
{
"type": "dict-modifiable",
"store_as_list": true,
"key": "redshift_render_attributes",
"label": "Redshift Render Attributes",
"use_label_wrap": true,
@ -108,6 +111,7 @@
},
{
"type": "dict-modifiable",
"store_as_list": true,
"key": "renderman_render_attributes",
"label": "Renderman Render Attributes",
"use_label_wrap": true,