From cf1ad307bb7e76be3a366e9cbcd60974acef7972 Mon Sep 17 00:00:00 2001 From: Jakub Jezek Date: Fri, 2 Aug 2019 18:45:48 +0200 Subject: [PATCH 01/13] fix(nuke): moving creating linked attributes to Create plugin --- pype/nuke/lib.py | 11 +---------- pype/plugins/nuke/create/create_write.py | 20 +++++++++++++++++++- 2 files changed, 20 insertions(+), 11 deletions(-) diff --git a/pype/nuke/lib.py b/pype/nuke/lib.py index 515475276c..0c88fe97bd 100644 --- a/pype/nuke/lib.py +++ b/pype/nuke/lib.py @@ -321,16 +321,7 @@ def create_write_node(name, data, prenodes=None): lnk.makeLink(write_node.name(), "Render") lnk.setName("Render") GN.addKnob(lnk) - - # linking knobs to group property panel - linking_knobs = ["first", "last", "use_limit"] - for k in linking_knobs: - lnk = nuke.Link_Knob(k) - lnk.makeLink(write_node.name(), k) - lnk.setName(k.replace('_', ' ').capitalize()) - lnk.clearFlag(nuke.STARTLINE) - GN.addKnob(lnk) - + return GN diff --git a/pype/plugins/nuke/create/create_write.py b/pype/plugins/nuke/create/create_write.py index d791fe6d1b..588e5ee6f3 100644 --- a/pype/plugins/nuke/create/create_write.py +++ b/pype/plugins/nuke/create/create_write.py @@ -125,6 +125,24 @@ class CreateWritePrerender(avalon.nuke.Creator): write_data.update({ "fpath_template": "{work}/prerenders/{subset}/{subset}.{frame}.{ext}"}) - create_write_node(self.data["subset"], write_data) + # get group node + group_node = create_write_node(self.data["subset"], write_data) + + # open group node + group_node.begin() + for n in nuke.allNodes(): + # get write node + if n.Class() in "Write": + write_node = n + group_node.end() + + # linking knobs to group property panel + linking_knobs = ["first", "last", "use_limit"] + for k in linking_knobs: + lnk = nuke.Link_Knob(k) + lnk.makeLink(write_node.name(), k) + lnk.setName(k.replace('_', ' ').capitalize()) + lnk.clearFlag(nuke.STARTLINE) + group_node.addKnob(lnk) return From 20783b6b27d856d57622dd3e28b23fa4bcfc24b5 Mon Sep 17 00:00:00 2001 From: Jakub Jezek Date: Fri, 2 Aug 2019 18:46:25 +0200 Subject: [PATCH 02/13] fix(nuke): integrate was removing rendered files --- pype/plugins/global/publish/integrate_new.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/pype/plugins/global/publish/integrate_new.py b/pype/plugins/global/publish/integrate_new.py index acb5555ba9..97fe432a0d 100644 --- a/pype/plugins/global/publish/integrate_new.py +++ b/pype/plugins/global/publish/integrate_new.py @@ -410,6 +410,11 @@ class IntegrateAssetNew(pyblish.api.InstancePlugin): Args: instance: the instance to integrate """ + transfers = instance.data.get("transfers", list()) + + for src, dest in transfers: + if os.path.normpath(src) != os.path.normpath(dest): + self.copy_file(src, dest) # Produce hardlinked copies # Note: hardlink can only be produced between two files on the same From b74872a6dd148efbdf0e85e5b6e3c1e70fdab447 Mon Sep 17 00:00:00 2001 From: Jakub Jezek Date: Fri, 2 Aug 2019 18:47:06 +0200 Subject: [PATCH 03/13] fix(nuke): loading was calculating with handles but it should be without --- pype/plugins/nuke/load/load_sequence.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pype/plugins/nuke/load/load_sequence.py b/pype/plugins/nuke/load/load_sequence.py index b2affb3563..fe176ac832 100644 --- a/pype/plugins/nuke/load/load_sequence.py +++ b/pype/plugins/nuke/load/load_sequence.py @@ -91,7 +91,7 @@ class LoadSequence(api.Loader): version = context['version'] version_data = version.get("data", {}) - + log.info("version_data: {}\n".format(version_data)) first = version_data.get("startFrame", None) last = version_data.get("endFrame", None) handles = version_data.get("handles", 0) @@ -103,9 +103,9 @@ class LoadSequence(api.Loader): handle_start = handles handle_end = handles - # create handles offset - first -= handle_start - last += handle_end + # # create handles offset + # first -= handle_start + # last += handle_end # Fallback to asset name when namespace is None if namespace is None: From 4f8b1dfef7a807a3d7ff7323dcdfe9964ec29857 Mon Sep 17 00:00:00 2001 From: Jakub Jezek Date: Fri, 2 Aug 2019 18:48:01 +0200 Subject: [PATCH 04/13] fix(nuke): didnt coult with handle_start, handle_end --- .../nuke/publish/collect_asset_info.py | 2 ++ pype/plugins/nuke/publish/collect_writes.py | 32 ++++++++++++++++--- 2 files changed, 29 insertions(+), 5 deletions(-) diff --git a/pype/plugins/nuke/publish/collect_asset_info.py b/pype/plugins/nuke/publish/collect_asset_info.py index ae49c6e86f..500eaad8fb 100644 --- a/pype/plugins/nuke/publish/collect_asset_info.py +++ b/pype/plugins/nuke/publish/collect_asset_info.py @@ -19,3 +19,5 @@ class CollectAssetInfo(pyblish.api.ContextPlugin): self.log.info("asset_data: {}".format(asset_data)) context.data['handles'] = int(asset_data["data"].get("handles", 0)) + context.data['handle_start'] = int(asset_data["data"].get("handle_start", 0)) + context.data['handle_end'] = int(asset_data["data"].get("handle_end", 0)) diff --git a/pype/plugins/nuke/publish/collect_writes.py b/pype/plugins/nuke/publish/collect_writes.py index f98a3a0f7d..fb1fb37fd5 100644 --- a/pype/plugins/nuke/publish/collect_writes.py +++ b/pype/plugins/nuke/publish/collect_writes.py @@ -14,17 +14,24 @@ class CollectNukeWrites(pyblish.api.InstancePlugin): families = ["render", "render.local", "render.farm"] def process(self, instance): - # if not instance.data["publish"]: # continue - node = instance[0] + group = instance[0] - if node.Class() != "Write": + if group.Class() != "Group": return self.log.debug("checking instance: {}".format(instance)) + group.begin() + + for n in nuke.allNodes(): + if n.Class() != "Write": + continue + node = n + group.end() + # Determine defined file type ext = node["file_type"].value() @@ -34,7 +41,9 @@ class CollectNukeWrites(pyblish.api.InstancePlugin): output_type = "mov" # Get frame range - handles = instance.context.data.get('handles', 0) + handles = instance.context.data['handles'] + handle_start = instance.context.data['handle_start'] + handle_end = instance.context.data['handle_end'] first_frame = int(nuke.root()["first_frame"].getValue()) last_frame = int(nuke.root()["last_frame"].getValue()) @@ -85,7 +94,20 @@ class CollectNukeWrites(pyblish.api.InstancePlugin): if 'render.local' in instance.data['families']: instance.data['families'].append('ftrack') + # Add version data to instance + version_data = { + "handles": handle_start, + "handleStart": handle_start, + "handleEnd": handle_end, + "version": int(version), + "colorspace": node["colorspace"].value(), + "families": [instance.data["family"]], + "subset": instance.data["subset"], + "fps": instance.context.data["fps"] + } + instance.data.update({ + "versionData": version_data, "path": path, "outputDir": output_dir, "ext": ext, @@ -96,5 +118,5 @@ class CollectNukeWrites(pyblish.api.InstancePlugin): "outputType": output_type, "colorspace": node["colorspace"].value(), }) - + instance[0] = node self.log.debug("instance.data: {}".format(instance.data)) From 9a2e0117cb569e41247f0feb04e507e4e2e23e84 Mon Sep 17 00:00:00 2001 From: Jakub Jezek Date: Fri, 2 Aug 2019 18:48:33 +0200 Subject: [PATCH 05/13] fix(nuke): was not collecting properly write nodes inside groups --- pype/plugins/nuke/publish/collect_instances.py | 13 ++++++++----- pype/plugins/nuke/publish/validate_write_nodes.py | 4 ++-- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/pype/plugins/nuke/publish/collect_instances.py b/pype/plugins/nuke/publish/collect_instances.py index 8d770ef0b5..baee7a1769 100644 --- a/pype/plugins/nuke/publish/collect_instances.py +++ b/pype/plugins/nuke/publish/collect_instances.py @@ -3,7 +3,7 @@ import os import nuke import pyblish.api from avalon import io, api -from avalon.nuke.lib import get_avalon_knob_data +from avalon.nuke import get_avalon_knob_data @pyblish.api.log @@ -18,23 +18,26 @@ class CollectNukeInstances(pyblish.api.ContextPlugin): asset_data = io.find_one({"type": "asset", "name": api.Session["AVALON_ASSET"]}) - # add handles into context - context.data['handles'] = context.data['handles'] self.log.debug("asset_data: {}".format(asset_data["data"])) instances = [] # creating instances per write node - for node in nuke.allNodes(): + self.log.debug("nuke.allNodes(): {}".format(nuke.allNodes())) + for node in nuke.allNodes(): try: if node["disable"].value(): continue - except Exception: + except Exception as E: + self.log.warning(E) continue # get data from avalon knob + self.log.debug("node[name]: {}".format(node['name'].value())) avalon_knob_data = get_avalon_knob_data(node) + self.log.debug("avalon_knob_data: {}".format(avalon_knob_data)) + if not avalon_knob_data: continue diff --git a/pype/plugins/nuke/publish/validate_write_nodes.py b/pype/plugins/nuke/publish/validate_write_nodes.py index 105c133ebe..564c912a7a 100644 --- a/pype/plugins/nuke/publish/validate_write_nodes.py +++ b/pype/plugins/nuke/publish/validate_write_nodes.py @@ -14,7 +14,7 @@ class RepairNukeWriteNodeAction(pyblish.api.Action): instances = pype.utils.filter_instances(context, plugin) for instance in instances: - node = instance[0] + node = instance[1] correct_data = nukelib.get_write_node_template_attr(node) for k, v in correct_data.items(): node[k].setValue(v) @@ -33,7 +33,7 @@ class ValidateNukeWriteNode(pyblish.api.InstancePlugin): def process(self, instance): - node = instance[0] + node = instance[1] correct_data = nukelib.get_write_node_template_attr(node) check = [] From 1912db46b85402476d51f7a52b04e56b0682ba72 Mon Sep 17 00:00:00 2001 From: Jakub Jezek Date: Fri, 2 Aug 2019 18:48:53 +0200 Subject: [PATCH 06/13] fix(nuke): removing obsolete plugin --- .../plugins/nuke/publish/extract_post_json.py | 91 ------------------- 1 file changed, 91 deletions(-) delete mode 100644 pype/plugins/nuke/publish/extract_post_json.py diff --git a/pype/plugins/nuke/publish/extract_post_json.py b/pype/plugins/nuke/publish/extract_post_json.py deleted file mode 100644 index fe42781d52..0000000000 --- a/pype/plugins/nuke/publish/extract_post_json.py +++ /dev/null @@ -1,91 +0,0 @@ -import os -import json -import datetime -import time - -import clique -from pprint import pformat -import pyblish.api - - -class ExtractJSON(pyblish.api.ContextPlugin): - """ Extract all instances to a serialized json file. """ - - order = pyblish.api.IntegratorOrder + 1 - label = "Extract to JSON" - families = ["write"] - - def process(self, context): - workspace = os.path.join( - os.path.dirname(context.data["currentFile"]), "workspace", - "instances") - - if not os.path.exists(workspace): - os.makedirs(workspace) - - context_data = context.data.copy() - unwrapped_instance = [] - for i in context_data["instances"]: - unwrapped_instance.append(i.data) - - context_data["instances"] = unwrapped_instance - - timestamp = datetime.datetime.fromtimestamp( - time.time()).strftime("%Y%m%d-%H%M%S") - filename = timestamp + "_instances.json" - - with open(os.path.join(workspace, filename), "w") as outfile: - outfile.write(pformat(context_data, depth=20)) - - def serialize(self, data): - """ - Convert all nested content to serialized objects - - Args: - data (dict): nested data - - Returns: - dict: nested data - """ - - def encoding_obj(value): - try: - value = str(value).replace("\\", "/") - # value = getattr(value, '__dict__', str(value)) - except Exception: - pass - return value - - for key, value in dict(data).items(): - if key in ["records", "instances", "results"]: - # escape all record objects - data[key] = None - continue - - if hasattr(value, '__module__'): - # only deals with module objects - if "plugins" in value.__module__: - # only dealing with plugin objects - data[key] = str(value.__module__) - else: - if ".lib." in value.__module__: - # will allow only anatomy dict - data[key] = self.serialize(value) - else: - data[key] = None - continue - continue - - if isinstance(value, dict): - # loops if dictionary - data[key] = self.serialize(value) - - if isinstance(value, (list or tuple)): - # loops if list or tuple - for i, item in enumerate(value): - value[i] = self.serialize(item) - data[key] = value - - data[key] = encoding_obj(value) - - return data From ad407fed68f2de4a56e79c0f207ec4587e10235b Mon Sep 17 00:00:00 2001 From: Jakub Jezek Date: Fri, 2 Aug 2019 18:49:26 +0200 Subject: [PATCH 07/13] fix(nuke): reading instance node from write and not group --- pype/plugins/nuke/publish/submit_nuke_deadline.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pype/plugins/nuke/publish/submit_nuke_deadline.py b/pype/plugins/nuke/publish/submit_nuke_deadline.py index fb5d0fea75..d7e3292a16 100644 --- a/pype/plugins/nuke/publish/submit_nuke_deadline.py +++ b/pype/plugins/nuke/publish/submit_nuke_deadline.py @@ -29,7 +29,7 @@ class NukeSubmitDeadline(pyblish.api.InstancePlugin): # root = nuke.root() # node_subset_name = instance.data.get("name", None) - node = instance[0] + node = instance[1] DEADLINE_REST_URL = os.environ.get("DEADLINE_REST_URL", "http://localhost:8082") From 8a638d1bf6bb88d748d076235b3ac08b00f79d5b Mon Sep 17 00:00:00 2001 From: Jakub Jezek Date: Fri, 2 Aug 2019 18:49:52 +0200 Subject: [PATCH 08/13] fix(global): fixing regex string to raw --- pype/lib.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pype/lib.py b/pype/lib.py index 15f248b554..a0d238cfa8 100644 --- a/pype/lib.py +++ b/pype/lib.py @@ -215,7 +215,7 @@ def version_up(filepath): dirname = os.path.dirname(filepath) basename, ext = os.path.splitext(os.path.basename(filepath)) - regex = "[._]v\d+" + regex = r"[._]v\d+" matches = re.findall(regex, str(basename), re.IGNORECASE) if not matches: log.info("Creating version...") @@ -223,7 +223,7 @@ def version_up(filepath): new_basename = "{}{}".format(basename, new_label) else: label = matches[-1] - version = re.search("\d+", label).group() + version = re.search(r"\d+", label).group() padding = len(version) new_version = int(version) + 1 From fce8f6b5156452c89dc1fcc3fc45014c850b5e48 Mon Sep 17 00:00:00 2001 From: Jakub Jezek Date: Sun, 4 Aug 2019 20:17:01 +0200 Subject: [PATCH 09/13] fix(nuke): wasnt loading nk scripts as precomp --- pype/plugins/nuke/load/load_script_precomp.py | 28 ++++++++----------- 1 file changed, 11 insertions(+), 17 deletions(-) diff --git a/pype/plugins/nuke/load/load_script_precomp.py b/pype/plugins/nuke/load/load_script_precomp.py index 0b66cfdaec..e84e23a890 100644 --- a/pype/plugins/nuke/load/load_script_precomp.py +++ b/pype/plugins/nuke/load/load_script_precomp.py @@ -1,22 +1,18 @@ from avalon import api, style, io -from pype.nuke.lib import get_avalon_knob_data +from avalon.nuke import get_avalon_knob_data import nuke -import os -from pype.api import Logger -log = Logger().get_logger(__name__, "nuke") - class LinkAsGroup(api.Loader): """Copy the published file to be pasted at the desired location""" representations = ["nk"] - families = ["*"] + families = ["workfile"] label = "Load Precomp" - order = 10 + order = 0 icon = "file" - color = style.colors.dark + color = style.colors.alert def load(self, context, name, namespace, data): @@ -41,12 +37,12 @@ class LinkAsGroup(api.Loader): self.log.info("versionData: {}\n".format(context["version"]["data"])) - # add additional metadata from the version to imprint to Avalon knob - add_keys = ["frameStart", "frameEnd", "handleStart", "handleEnd", "source", "author", "fps"] + add_keys = ["frameStart", "frameEnd", "handleStart", "handleEnd", + "source", "author", "fps"] data_imprint = { - "start_frame": first, + "startingFrame": first, "frameStart": first, "frameEnd": last, "version": vname @@ -67,7 +63,6 @@ class LinkAsGroup(api.Loader): colorspace = context["version"]["data"].get("colorspace", None) self.log.info("colorspace: {}\n".format(colorspace)) - # ['version', 'file', 'reading', 'output', 'useOutput'] P["name"].setValue("{}_{}".format(name, namespace)) @@ -76,7 +71,7 @@ class LinkAsGroup(api.Loader): with P: # iterate trough all nodes in group node and find pype writes writes = [n.name() for n in nuke.allNodes() - if n.Class() == "Write" + if n.Class() == "Group" if get_avalon_knob_data(n)] # create panel for selecting output @@ -84,7 +79,7 @@ class LinkAsGroup(api.Loader): panel_label = "Select write node for output" p = nuke.Panel("Select Write Node") p.addEnumerationPulldown( - panel_label, panel_choices) + panel_label, panel_choices) p.show() P["output"].setValue(p.value(panel_label)) @@ -116,7 +111,7 @@ class LinkAsGroup(api.Loader): node = nuke.toNode(container['objectName']) - root = api.get_representation_path(representation).replace("\\","/") + root = api.get_representation_path(representation).replace("\\", "/") # Get start frame from version data version = io.find_one({ @@ -159,8 +154,7 @@ class LinkAsGroup(api.Loader): else: node["tile_color"].setValue(int("0xff0ff0ff", 16)) - log.info("udated to version: {}".format(version.get("name"))) - + self.log.info("udated to version: {}".format(version.get("name"))) def remove(self, container): from avalon.nuke import viewer_update_and_undo_stop From bbf4957f47fb550ed7f39248a43537f6ca1bfd8d Mon Sep 17 00:00:00 2001 From: Jakub Jezek Date: Sun, 4 Aug 2019 20:18:20 +0200 Subject: [PATCH 10/13] feat(nuke): adding outut node for later use in Load Precomp --- .../nuke/publish/collect_active_viewer.py | 1 + .../nuke/publish/extract_ouput_node.py | 42 +++++++++++++++++++ .../plugins/nuke/publish/remove_ouput_node.py | 22 ++++++++++ 3 files changed, 65 insertions(+) create mode 100644 pype/plugins/nuke/publish/extract_ouput_node.py create mode 100644 pype/plugins/nuke/publish/remove_ouput_node.py diff --git a/pype/plugins/nuke/publish/collect_active_viewer.py b/pype/plugins/nuke/publish/collect_active_viewer.py index 3bcc1367f3..5dc17d8768 100644 --- a/pype/plugins/nuke/publish/collect_active_viewer.py +++ b/pype/plugins/nuke/publish/collect_active_viewer.py @@ -12,3 +12,4 @@ class CollectActiveViewer(pyblish.api.ContextPlugin): def process(self, context): context.data["ViewerProcess"] = nuke.ViewerProcess.node() + context.data["ActiveViewer"] = nuke.activeViewer() diff --git a/pype/plugins/nuke/publish/extract_ouput_node.py b/pype/plugins/nuke/publish/extract_ouput_node.py new file mode 100644 index 0000000000..4d7533f010 --- /dev/null +++ b/pype/plugins/nuke/publish/extract_ouput_node.py @@ -0,0 +1,42 @@ +import nuke +import pyblish.api +from avalon.nuke import maintained_selection + +class CreateOutputNode(pyblish.api.ContextPlugin): + """Adding output node for each ouput write node + So when latly user will want to Load .nk as LifeGroup or Precomp + Nuke will not complain about missing Output node + """ + label = 'Output Node Create' + order = pyblish.api.ExtractorOrder + 0.4 + families = ["workfile"] + hosts = ['nuke'] + + def process(self, context): + # capture selection state + with maintained_selection(): + # deselect all allNodes + self.log.info(context.data["ActiveViewer"]) + + active_viewer = context.data["ActiveViewer"] + active_input = active_viewer.activeInput() + active_node = active_viewer.node() + + + last_viewer_node = active_node.input(active_input) + + name = last_viewer_node.name() + self.log.info("Node name: {}".format(name)) + + # select only instance render node + last_viewer_node['selected'].setValue(True) + output_node = nuke.createNode("Output") + + # deselect all and select the original selection + output_node['selected'].setValue(False) + + # save script + nuke.scriptSave() + + # add node to instance node list + context.data["outputNode"] = output_node diff --git a/pype/plugins/nuke/publish/remove_ouput_node.py b/pype/plugins/nuke/publish/remove_ouput_node.py new file mode 100644 index 0000000000..a5e80e511b --- /dev/null +++ b/pype/plugins/nuke/publish/remove_ouput_node.py @@ -0,0 +1,22 @@ +import nuke +import pyblish.api + + +class RemoveOutputNode(pyblish.api.ContextPlugin): + """Removing output node for each ouput write node + + """ + label = 'Output Node Remove' + order = pyblish.api.IntegratorOrder + families = ["workfile"] + hosts = ['nuke'] + + def process(self, context): + try: + output_node = context.data["outputNode"] + name = output_node["name"].value() + self.log.info("Removing output node: '{}'".format(name)) + + nuke.delete(output_node) + except Exception: + return From b05bebe9c59ef882b14cb7653c6decddf323b999 Mon Sep 17 00:00:00 2001 From: Jakub Jezek Date: Sun, 4 Aug 2019 20:18:46 +0200 Subject: [PATCH 11/13] fix(nuke): adding families --- pype/plugins/nuke/load/load_mov.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pype/plugins/nuke/load/load_mov.py b/pype/plugins/nuke/load/load_mov.py index 3079f4053a..58aee315a6 100644 --- a/pype/plugins/nuke/load/load_mov.py +++ b/pype/plugins/nuke/load/load_mov.py @@ -76,7 +76,7 @@ class LoadMov(api.Loader): """Load mov file into Nuke""" families = ["write", "source", "plate", "render", "review"] - representations = ["mov", "preview", "review", "mp4"] + representations = ["wipmov", "h264", "mov", "preview", "review", "mp4"] label = "Load mov" order = -10 From dbadd134fc75f2648fe5433433abd9a5a03500e8 Mon Sep 17 00:00:00 2001 From: Jakub Jezek Date: Sun, 4 Aug 2019 20:19:32 +0200 Subject: [PATCH 12/13] fix(nuke): attributes consolidation --- pype/plugins/nuke/publish/collect_writes.py | 4 ++++ pype/plugins/nuke/publish/validate_rendered_frames.py | 6 +++--- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/pype/plugins/nuke/publish/collect_writes.py b/pype/plugins/nuke/publish/collect_writes.py index a30a2d4341..c5326e0ba2 100644 --- a/pype/plugins/nuke/publish/collect_writes.py +++ b/pype/plugins/nuke/publish/collect_writes.py @@ -99,6 +99,8 @@ class CollectNukeWrites(pyblish.api.InstancePlugin): "handles": handle_start, "handleStart": handle_start, "handleEnd": handle_end, + "frameStart": first_frame, + "frameEnd": last_frame, "version": int(version), "colorspace": node["colorspace"].value(), "families": [instance.data["family"]], @@ -118,5 +120,7 @@ class CollectNukeWrites(pyblish.api.InstancePlugin): "outputType": output_type, "colorspace": node["colorspace"].value(), }) + + instance.insert(1, instance[0]) instance[0] = node self.log.debug("instance.data: {}".format(instance.data)) diff --git a/pype/plugins/nuke/publish/validate_rendered_frames.py b/pype/plugins/nuke/publish/validate_rendered_frames.py index 9a10128871..968afe2a5b 100644 --- a/pype/plugins/nuke/publish/validate_rendered_frames.py +++ b/pype/plugins/nuke/publish/validate_rendered_frames.py @@ -11,16 +11,16 @@ class RepairCollectionAction(pyblish.api.Action): icon = "wrench" def process(self, context, plugin): - self.log.info(context[0]) + self.log.info(context[0][1]) files_remove = [os.path.join(context[0].data["outputDir"], f) for r in context[0].data.get("representations", []) for f in r.get("files", []) ] - self.log.info(files_remove) + self.log.info("Files to be removed: {}".format(files_remove)) for f in files_remove: os.remove(f) self.log.debug("removing file: {}".format(f)) - context[0][0]["render"].setValue(True) + context[0][1]["render"].setValue(True) self.log.info("Rendering toggled ON") From 7419d56e9337ad350cf88ece9557c58a106f1b82 Mon Sep 17 00:00:00 2001 From: Jakub Jezek Date: Sun, 4 Aug 2019 20:19:56 +0200 Subject: [PATCH 13/13] fix(nukestudio): new attributes fixes --- pype/plugins/nukestudio/publish/collect_hierarchy_context.py | 2 ++ pype/plugins/nukestudio/publish/collect_tag_framestart.py | 5 ++++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/pype/plugins/nukestudio/publish/collect_hierarchy_context.py b/pype/plugins/nukestudio/publish/collect_hierarchy_context.py index 474cdfaa19..536abf5ba4 100644 --- a/pype/plugins/nukestudio/publish/collect_hierarchy_context.py +++ b/pype/plugins/nukestudio/publish/collect_hierarchy_context.py @@ -258,6 +258,8 @@ class CollectHierarchyContext(pyblish.api.ContextPlugin): "handleEnd": handle_end, "frameStart": instance.data["frameStart"], "frameEnd": instance.data["frameEnd"], + "clipIn": instance.data["clipIn"], + "clipOut": instance.data["clipOut"], 'fps': instance.context.data["fps"] } diff --git a/pype/plugins/nukestudio/publish/collect_tag_framestart.py b/pype/plugins/nukestudio/publish/collect_tag_framestart.py index 3ab7979aa7..c2778ea680 100644 --- a/pype/plugins/nukestudio/publish/collect_tag_framestart.py +++ b/pype/plugins/nukestudio/publish/collect_tag_framestart.py @@ -18,7 +18,10 @@ class CollectClipTagFrameStart(api.InstancePlugin): t_family = t_metadata.get("tag.family", "") # gets only task family tags and collect labels - if "startingFrame" in t_family: + if "frameStart" in t_family: t_number = t_metadata.get("tag.number", "") start_frame = int(t_number) instance.data["startingFrame"] = start_frame + self.log.info("Start frame on `{0}` set to `{1}`".format( + instance, start_frame + ))