From c8e0ca500e5ea11d63ced33af7445aed3af70c44 Mon Sep 17 00:00:00 2001 From: Roy Nieterau Date: Fri, 30 Mar 2018 18:09:01 +0200 Subject: [PATCH] Fix FUS-25: Also check unchecked instances that their Saver state is correct in Comp --- .../publish/validate_saver_passthrough.py | 37 +++++++++++++------ 1 file changed, 26 insertions(+), 11 deletions(-) diff --git a/colorbleed/plugins/fusion/publish/validate_saver_passthrough.py b/colorbleed/plugins/fusion/publish/validate_saver_passthrough.py index 4380f4e380..ca58eba5bd 100644 --- a/colorbleed/plugins/fusion/publish/validate_saver_passthrough.py +++ b/colorbleed/plugins/fusion/publish/validate_saver_passthrough.py @@ -1,29 +1,44 @@ import pyblish.api -class ValidateSaverPassthrough(pyblish.api.InstancePlugin): +class ValidateSaverPassthrough(pyblish.api.ContextPlugin): """Validate saver passthrough is similar to Pyblish publish state""" order = pyblish.api.ValidatorOrder - label = "Validate Saver Active" + label = "Validate Saver Passthrough" families = ["colorbleed.saver"] hosts = ["fusion"] - @classmethod - def get_invalid(cls, instance): + def process(self, context): + + # Workaround for ContextPlugin always running, even if no instance + # is present with the family + instances = pyblish.api.instances_by_plugin(instances=list(context), + plugin=self) + if not instances: + self.log.debug("Ignoring plugin.. (bugfix)") + + invalid_instances = [] + for instance in instances: + invalid = self.is_invalid(instance) + if invalid: + invalid_instances.append(instance) + + if invalid_instances: + self.log.info("Reset pyblish to collect your current scene state, " + "that should fix error.") + raise RuntimeError("Invalid instances: " + "{0}".format(invalid_instances)) + + def is_invalid(self, instance): saver = instance[0] attr = saver.GetAttrs() active = not attr["TOOLB_PassThrough"] if active != instance.data["publish"]: + self.log.info("Saver has different passthrough state than " + "Pyblish: {} ({})".format(instance, saver.Name)) return [saver] return [] - - def process(self, instance): - invalid = self.get_invalid(instance) - if invalid: - raise RuntimeError("Saver has different passthrough state than " - "Pyblish: {} ({})".format(instance, - invalid[0].Name))