diff --git a/pype/nuke/__init__.py b/pype/nuke/__init__.py index 42ca633e40..84beeaf89c 100644 --- a/pype/nuke/__init__.py +++ b/pype/nuke/__init__.py @@ -82,6 +82,7 @@ def reload_config(): "{}.nuke.actions".format(AVALON_CONFIG), "{}.nuke.templates".format(AVALON_CONFIG), "{}.nuke.menu".format(AVALON_CONFIG), + "{}.nuke.plugin".format(AVALON_CONFIG), "{}.nuke.lib".format(AVALON_CONFIG), ): log.info("Reloading module: {}...".format(module)) diff --git a/pype/nuke/lib.py b/pype/nuke/lib.py index 28e813c449..69416dd370 100644 --- a/pype/nuke/lib.py +++ b/pype/nuke/lib.py @@ -174,8 +174,13 @@ def format_anatomy(data): anatomy = get_anatomy() log.debug("__ anatomy.templates: {}".format(anatomy.templates)) - # TODO: perhaps should be in try! - padding = int(anatomy.templates['render']['padding']) + try: + padding = int(anatomy.templates['render']['padding']) + except KeyError as e: + log.error("`padding` key is not in `render` " + "Anatomy template. Please, add it there and restart " + "the pipeline (padding: \"4\"): `{}`".format(e)) + version = data.get("version", None) if not version: file = script_name() diff --git a/pype/nuke/plugin.py b/pype/nuke/plugin.py new file mode 100644 index 0000000000..d4b5110d6e --- /dev/null +++ b/pype/nuke/plugin.py @@ -0,0 +1,14 @@ +import re +import avalon.api +import avalon.nuke +from pype import api as pype +from pypeapp import config + +class PypeCreator(avalon.nuke.pipeline.Creator): + """Pype Nuke Creator class wrapper + """ + def __init__(self, *args, **kwargs): + super(PypeCreator, self).__init__(*args, **kwargs) + self.presets = config.get_presets()['plugins']["nuke"]["create"].get( + self.__class__.__name__, {} + ) diff --git a/pype/plugins/nuke/create/create_write.py b/pype/plugins/nuke/create/create_write.py index c3da555259..be1670c055 100644 --- a/pype/plugins/nuke/create/create_write.py +++ b/pype/plugins/nuke/create/create_write.py @@ -3,6 +3,7 @@ import avalon.api import avalon.nuke from pype.nuke.lib import create_write_node from pype import api as pype +from pype.nuke import plugin from pypeapp import config import nuke @@ -10,52 +11,40 @@ 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 CreateWriteRender(avalon.nuke.Creator): +class CreateWriteRender(plugin.PypeCreator): # change this to template preset - preset = "render" + preset = "write" name = "WriteRender" label = "Create Write Render" hosts = ["nuke"] - family = "{}_write".format(preset) - families = preset + family = "render" icon = "sign-out" defaults = ["Main", "Mask"] def __init__(self, *args, **kwargs): super(CreateWriteRender, self).__init__(*args, **kwargs) - self.presets = config.get_presets()['plugins']["nuke"]["create"].get( - self.__class__.__name__, {} - ) self.name = self.data["subset"] data = OrderedDict() - data["family"] = self.family.split("_")[-1] - data["families"] = self.families + data["family"] = self.family + + for k, v in self.data.items(): + if k not in data.keys(): + data.update({k: v}) - {data.update({k: v}) for k, v in self.data.items() - if k not in data.keys()} self.data = data def process(self): - family = self.family - node = 'write' - instance = nuke.toNode(self.data["subset"]) if not instance: write_data = { - "class": node, - "preset": self.preset, + "class": 'write', + "preset": self.family, "avalon": self.data }