from collections import OrderedDict import avalon.api import avalon.nuke from pype.nuke import ( create_write_node ) from pype import api as pype # from pypeapp import Logger import nuke log = pype.Logger().get_logger(__name__, "nuke") def subset_to_families(subset, family, families): subset_sufx = str(subset).replace(family, "") new_subset = families + subset_sufx return "{}.{}".format(family, new_subset) class CrateWriteRender(avalon.nuke.Creator): # change this to template preset preset = "render" name = "WriteRender" label = "Create Write Render" hosts = ["nuke"] family = "{}_write".format(preset) families = preset icon = "sign-out" def __init__(self, *args, **kwargs): super(CrateWriteRender, self).__init__(*args, **kwargs) data = OrderedDict() data["family"] = self.family.split("_")[-1] data["families"] = self.families {data.update({k: v}) for k, v in self.data.items() if k not in data.keys()} self.data = data def process(self): self.name = self.data["subset"] family = self.family node = 'write' instance = nuke.toNode(self.data["subset"]) if not instance: write_data = { "class": node, "preset": self.preset, "avalon": self.data } create_write_node(self.data["subset"], write_data) return class CrateWritePrerender(avalon.nuke.Creator): # change this to template preset preset = "prerender" name = "WritePrerender" label = "Create Write Prerender" hosts = ["nuke"] family = "{}_write".format(preset) families = preset icon = "sign-out" def __init__(self, *args, **kwargs): super(CrateWritePrerender, self).__init__(*args, **kwargs) data = OrderedDict() data["family"] = self.family.split("_")[1] data["families"] = self.families {data.update({k: v}) for k, v in self.data.items() if k not in data.keys()} self.data = data def process(self): self.name = self.data["subset"] instance = nuke.toNode(self.data["subset"]) family = self.family node = 'write' if not instance: write_data = { "class": node, "preset": self.preset, "avalon": self.data } create_write_node(self.data["subset"], write_data) return # # # class CrateWriteStill(avalon.nuke.Creator): # # change this to template preset # preset = "still" # # name = "WriteStill" # label = "Create Write Still" # hosts = ["nuke"] # family = "{}_write".format(preset) # families = preset # icon = "image" # # def __init__(self, *args, **kwargs): # super(CrateWriteStill, self).__init__(*args, **kwargs) # # data = OrderedDict() # # data["family"] = self.family.split("_")[-1] # data["families"] = self.families # # {data.update({k: v}) for k, v in self.data.items() # if k not in data.keys()} # self.data = data # # def process(self): # self.name = self.data["subset"] # # node_name = self.data["subset"].replace( # "_", "_f{}_".format(nuke.frame())) # instance = nuke.toNode(self.data["subset"]) # self.data["subset"] = node_name # # family = self.family # node = 'write' # # if not instance: # write_data = { # "frame_range": [nuke.frame(), nuke.frame()], # "class": node, # "preset": self.preset, # "avalon": self.data # } # # nuke.createNode("FrameHold", "first_frame {}".format(nuke.frame())) # create_write_node(node_name, write_data) # # return