Skip to content

validate_renderlayer_aovs

ValidateRenderLayerAOVs

Bases: MayaInstancePlugin, OptionalPyblishPluginMixin

Validate created AOVs / RenderElement is registered in the database

Each render element is registered as a product which is formatted based on the render layer and the render element, example:

<render layer>.<render element>

This translates to something like this:

CHAR.diffuse

This check is needed to ensure the render output is still complete

Source code in client/ayon_maya/plugins/publish/validate_renderlayer_aovs.py
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
class ValidateRenderLayerAOVs(plugin.MayaInstancePlugin,
                              OptionalPyblishPluginMixin):
    """Validate created AOVs / RenderElement is registered in the database

    Each render element is registered as a product which is formatted based on
    the render layer and the render element, example:

        <render layer>.<render element>

    This translates to something like this:

        CHAR.diffuse

    This check is needed to ensure the render output is still complete

    """

    order = pyblish.api.ValidatorOrder + 0.1
    label = "Render Passes / AOVs Are Registered"
    families = ["renderlayer"]
    actions = [ayon_maya.api.action.SelectInvalidAction]
    optional = False

    def process(self, instance):
        if not self.is_active(instance.data):
            return

        invalid = self.get_invalid(instance)
        if invalid:
            raise PublishValidationError(
                "Found unregistered products: {}".format(invalid))

    def get_invalid(self, instance):
        invalid = []

        project_name = instance.context.data["projectName"]
        folder_entity = instance.data["folderEntity"]
        render_passes = instance.data.get("renderPasses", [])
        for render_pass in render_passes:
            is_valid = self.validate_product_registered(
                project_name, folder_entity, render_pass
            )
            if not is_valid:
                invalid.append(render_pass)

        return invalid

    def validate_product_registered(
        self, project_name, folder_entity, product_name
    ):
        """Check if product is registered in the database under the folder"""

        return ayon_api.get_product_by_name(
            project_name, product_name, folder_entity["id"], fields={"id"}
        )

validate_product_registered(project_name, folder_entity, product_name)

Check if product is registered in the database under the folder

Source code in client/ayon_maya/plugins/publish/validate_renderlayer_aovs.py
58
59
60
61
62
63
64
65
def validate_product_registered(
    self, project_name, folder_entity, product_name
):
    """Check if product is registered in the database under the folder"""

    return ayon_api.get_product_by_name(
        project_name, product_name, folder_entity["id"], fields={"id"}
    )