From 30f854e87201cb65ac350646bfa88e595c73034b Mon Sep 17 00:00:00 2001 From: Jakub Jezek Date: Tue, 19 Nov 2019 17:46:16 +0100 Subject: [PATCH 1/4] fix(nuke): family and families definition improvement collect instances --- pype/plugins/nuke/publish/collect_instances.py | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/pype/plugins/nuke/publish/collect_instances.py b/pype/plugins/nuke/publish/collect_instances.py index 28b11f6550..40fed8e89e 100644 --- a/pype/plugins/nuke/publish/collect_instances.py +++ b/pype/plugins/nuke/publish/collect_instances.py @@ -59,16 +59,19 @@ class CollectNukeInstances(pyblish.api.ContextPlugin): node.end() family = avalon_knob_data["family"] + families = [avalon_knob_data["families"]] if node["render"].value(): self.log.info("flagged for render") - family = "render.local" + add_femily = "render.local" # dealing with local/farm rendering if node["render_farm"].value(): self.log.info("adding render farm family") - family = "render.farm" - instance.data['transfer'] = False + add_femily = "render.farm" + instance.data["transfer"] = False + families.append(add_femily) else: - family = "render.no" + # add family into families + families.insert(0, family) instance.data.update({ "subset": subset, @@ -76,8 +79,8 @@ class CollectNukeInstances(pyblish.api.ContextPlugin): "label": node.name(), "name": node.name(), "subset": subset, - "family": avalon_knob_data["family"], - "families": [avalon_knob_data["families"], family], + "family": family, + "families": families, "avalonKnob": avalon_knob_data, "publish": node.knob('publish').value(), "step": 1, From f0618af38ea4811a39484ad94cd74b91a9e8e51c Mon Sep 17 00:00:00 2001 From: Jakub Jezek Date: Tue, 19 Nov 2019 17:46:52 +0100 Subject: [PATCH 2/4] feat(nuke): upgrading collect legacy write to see new version of write --- .../nuke/publish/collect_legacy_write.py | 35 +++++++++++-------- 1 file changed, 20 insertions(+), 15 deletions(-) diff --git a/pype/plugins/nuke/publish/collect_legacy_write.py b/pype/plugins/nuke/publish/collect_legacy_write.py index 05dbe4216c..74280b743a 100644 --- a/pype/plugins/nuke/publish/collect_legacy_write.py +++ b/pype/plugins/nuke/publish/collect_legacy_write.py @@ -1,25 +1,30 @@ -import nuke - import pyblish.api -class CollectWriteLegacy(pyblish.api.ContextPlugin): +class CollectWriteLegacy(pyblish.api.InstancePlugin): """Collect legacy write nodes.""" - order = pyblish.api.CollectorOrder - label = "Collect Write Legacy" + order = pyblish.api.CollectorOrder + 0.0101 + label = "Collect Write node Legacy" hosts = ["nuke", "nukeassist"] - def process(self, context): + def process(self, instance): + self.log.info(instance[:]) + node = instance[0] - for node in nuke.allNodes(): - if node.Class() != "Write": - continue + if node.Class() not in ["Group", "Write"]: + return - if "avalon" not in node.knobs().keys(): - continue + family_knobs = ["ak:family", "avalon:family"] + test = [k for k in node.knobs().keys() if k in family_knobs] + self.log.info(test) - instance = context.create_instance( - node.name(), family="write.legacy" - ) - instance.append(node) + if len(test) == 1: + if "render" in node[test[0]].value(): + self.log.info("render") + return + + instance.data.update( + {"family": "write.legacy", + "families": []} + ) From 1e67a5bc5b7ab86a31ac6b5f12357e3876327ac8 Mon Sep 17 00:00:00 2001 From: Jakub Jezek Date: Tue, 19 Nov 2019 17:47:16 +0100 Subject: [PATCH 3/4] feat(nuke): improvements on fix method --- .../nuke/publish/validate_write_legacy.py | 34 ++++++++++++++++--- 1 file changed, 29 insertions(+), 5 deletions(-) diff --git a/pype/plugins/nuke/publish/validate_write_legacy.py b/pype/plugins/nuke/publish/validate_write_legacy.py index b452e60ba4..58beb56eba 100644 --- a/pype/plugins/nuke/publish/validate_write_legacy.py +++ b/pype/plugins/nuke/publish/validate_write_legacy.py @@ -4,8 +4,9 @@ import os import nuke from avalon import api +import re import pyblish.api - +from avalon.nuke import get_avalon_knob_data class RepairWriteLegacyAction(pyblish.api.Action): @@ -26,24 +27,47 @@ class RepairWriteLegacyAction(pyblish.api.Action): instances = pyblish.api.instances_by_plugin(failed, plugin) for instance in instances: - data = toml.loads(instance[0]["avalon"].value()) + if "Write" in instance[0].Class(): + data = toml.loads(instance[0]["avalon"].value()) + else: + data = get_avalon_knob_data(instance[0]) + + self.log.info(data) + data["xpos"] = instance[0].xpos() data["ypos"] = instance[0].ypos() data["input"] = instance[0].input(0) data["publish"] = instance[0]["publish"].value() data["render"] = instance[0]["render"].value() data["render_farm"] = instance[0]["render_farm"].value() + data["review"] = instance[0]["review"].value() - nuke.delete(instance[0]) + # nuke.delete(instance[0]) + + task = os.environ["AVALON_TASK"] + sanitized_task = re.sub('[^0-9a-zA-Z]+', '', task) + subset_name = "render{}Main".format( + sanitized_task.capitalize()) + + Create_name = "CreateWriteRender" + + creator_plugin = None + for Creator in api.discover(api.Creator): + if Creator.__name__ != Create_name: + continue + + creator_plugin = Creator + + # return api.create() + creator_plugin(data["subset"], data["asset"]).process() - family = "render{}".format(os.environ["AVALON_TASK"].capitalize()) - api.create(data["subset"], data["asset"], family) node = nuke.toNode(data["subset"]) node.setXYpos(data["xpos"], data["ypos"]) node.setInput(0, data["input"]) node["publish"].setValue(data["publish"]) node["render"].setValue(data["render"]) node["render_farm"].setValue(data["render_farm"]) + node["review"].setValue(data["review"]) class ValidateWriteLegacy(pyblish.api.InstancePlugin): From 40ff53098f854b2fc039b27590f652cc5b8f60ef Mon Sep 17 00:00:00 2001 From: Jakub Jezek Date: Thu, 21 Nov 2019 18:33:07 +0100 Subject: [PATCH 4/4] typo(nuke): fixing add_family --- pype/plugins/nuke/publish/collect_instances.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pype/plugins/nuke/publish/collect_instances.py b/pype/plugins/nuke/publish/collect_instances.py index 40fed8e89e..2500f3fca5 100644 --- a/pype/plugins/nuke/publish/collect_instances.py +++ b/pype/plugins/nuke/publish/collect_instances.py @@ -62,13 +62,13 @@ class CollectNukeInstances(pyblish.api.ContextPlugin): families = [avalon_knob_data["families"]] if node["render"].value(): self.log.info("flagged for render") - add_femily = "render.local" + add_family = "render.local" # dealing with local/farm rendering if node["render_farm"].value(): self.log.info("adding render farm family") - add_femily = "render.farm" + add_family = "render.farm" instance.data["transfer"] = False - families.append(add_femily) + families.append(add_family) else: # add family into families families.insert(0, family)