diff --git a/pype/plugins/nuke/create/create_write.py b/pype/plugins/nuke/create/create_write.py index ff0375100a..c1b492ac2e 100644 --- a/pype/plugins/nuke/create/create_write.py +++ b/pype/plugins/nuke/create/create_write.py @@ -6,6 +6,8 @@ from pype.nuke import ( ) from pype import api as pype +import nuke + log = pype.Logger.getLogger(__name__, "nuke") @@ -23,7 +25,7 @@ class CrateWriteRender(avalon.nuke.Creator): name = "WriteRender" label = "Create Write Render" hosts = ["nuke"] - family = "{}.write".format(preset) + family = "{}_write".format(preset) families = preset icon = "sign-out" @@ -32,7 +34,7 @@ class CrateWriteRender(avalon.nuke.Creator): data = OrderedDict() - data["family"] = self.family.split(".")[1] + data["family"] = self.family.split("_")[1] data["families"] = self.families {data.update({k: v}) for k, v in self.data.items() @@ -40,13 +42,12 @@ class CrateWriteRender(avalon.nuke.Creator): self.data = data def process(self): - self.data["subset"] = "{}.{}".format(self.families, self.data["subset"]) self.name = self.data["subset"] - instance = super(CrateWriteRender, self).process() + family = self.family.split("_")[0] + node = self.family.split("_")[1] - family = self.family.split(".")[0] - node = self.family.split(".")[1] + instance = nuke.toNode(self.data["subset"]) if not instance: write_data = { @@ -67,7 +68,7 @@ class CrateWritePrerender(avalon.nuke.Creator): name = "WritePrerender" label = "Create Write Prerender" hosts = ["nuke"] - family = "{}.write".format(preset) + family = "{}_write".format(preset) families = preset icon = "sign-out" @@ -76,7 +77,7 @@ class CrateWritePrerender(avalon.nuke.Creator): data = OrderedDict() - data["family"] = self.family.split(".")[1] + data["family"] = self.family.split("_")[1] data["families"] = self.families {data.update({k: v}) for k, v in self.data.items() @@ -84,13 +85,12 @@ class CrateWritePrerender(avalon.nuke.Creator): self.data = data def process(self): - self.data["subset"] = "{}.{}".format(self.families, self.data["subset"]) self.name = self.data["subset"] - instance = super(CrateWritePrerender, self).process() + instance = nuke.toNode(self.data["subset"]) - family = self.family.split(".")[0] - node = self.family.split(".")[1] + family = self.family.split("_")[0] + node = self.family.split("_")[1] if not instance: write_data = { @@ -111,7 +111,7 @@ class CrateWriteStill(avalon.nuke.Creator): name = "WriteStill" label = "Create Write Still" hosts = ["nuke"] - family = "{}.write".format(preset) + family = "{}_write".format(preset) families = preset icon = "image" @@ -120,7 +120,7 @@ class CrateWriteStill(avalon.nuke.Creator): data = OrderedDict() - data["family"] = self.family.split(".")[1] + data["family"] = self.family.split("_")[1] data["families"] = self.families {data.update({k: v}) for k, v in self.data.items() @@ -128,14 +128,12 @@ class CrateWriteStill(avalon.nuke.Creator): self.data = data def process(self): - import nuke - self.data["subset"] = "{}.{}".format(self.families, self.data["subset"]) self.name = self.data["subset"] - instance = super(CrateWriteStill, self).process() + instance = nuke.toNode(self.data["subset"]) - family = self.family.split(".")[0] - node = self.family.split(".")[1] + family = self.family.split("_")[0] + node = self.family.split("_")[1] if not instance: write_data = { diff --git a/pype/plugins/nuke/publish/render_local.py b/pype/plugins/nuke/publish/render_local.py index fb974e6588..55adedb9e5 100644 --- a/pype/plugins/nuke/publish/render_local.py +++ b/pype/plugins/nuke/publish/render_local.py @@ -14,7 +14,7 @@ class NukeRenderLocal(pyblish.api.InstancePlugin): order = pyblish.api.ExtractorOrder label = "Render Local" hosts = ["nuke"] - families = ["render.local"] + families = ["render.local", "prerender.local", "still.local"] def process(self, instance): diff --git a/pype/plugins/nuke/publish/validate_collection.py b/pype/plugins/nuke/publish/validate_collection.py index a9853acc56..12e6160f6b 100644 --- a/pype/plugins/nuke/publish/validate_collection.py +++ b/pype/plugins/nuke/publish/validate_collection.py @@ -14,6 +14,7 @@ class RepairCollectionAction(pyblish.api.Action): files_remove = [os.path.join(context[0].data["outputDir"], f) for f in context[0].data["files"]] for f in files_remove: + os.remove(f) self.log.debug("removing file: {}".format(f)) context[0][0]["render"].setValue(True) self.log.info("Rendering toggled ON") @@ -37,9 +38,12 @@ class ValidateCollection(pyblish.api.InstancePlugin): frame_length = instance.data["lastFrame"] \ - instance.data["firstFrame"] + 1 - assert len(collections) == 1, self.log.info("There are multiple collections in the folder") + if frame_length is not 1: + assert len(collections) == 1, self.log.info( + "There are multiple collections in the folder") + assert collections[0].is_contiguous(), self.log.info("Some frames appear to be missing") - assert collections[0].is_contiguous(), self.log.info("Some frames appear to be missing") + assert remainder is not None, self.log.info("There are some wrong files in folder") self.log.info('frame_length: {}'.format(frame_length)) self.log.info('len(list(instance.data["files"])): {}'.format(