Skip to content

validate_layers_visibility

ValidateLayersVisiblity

Bases: InstancePlugin

Validate existence of renderPass layers.

Source code in client/ayon_tvpaint/plugins/publish/validate_layers_visibility.py
 6
 7
 8
 9
10
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
class ValidateLayersVisiblity(pyblish.api.InstancePlugin):
    """Validate existence of renderPass layers."""

    label = "Validate Layers Visibility"
    order = pyblish.api.ValidatorOrder
    families = ["review", "render"]

    settings_category = "tvpaint"

    def process(self, instance):
        layers = instance.data.get("layers")
        # Instance have empty layers
        # - it is not job of this validator to check that
        if not layers:
            return
        layer_names = set()
        for layer in layers:
            layer_names.add(layer["name"])
            if layer["visible"]:
                return

        instance_label = (
            instance.data.get("label") or instance.data["name"]
        )

        raise PublishXmlValidationError(
            self,
            "All layers of instance \"{}\" are not visible.".format(
                instance_label
            ),
            formatting_data={
                "instance_name": instance_label,
                "layer_names": "<br/>".join([
                    "- {}".format(layer_name)
                    for layer_name in layer_names
                ])
            }
        )