fix(nuke): create plugin correct way of working with families

This commit is contained in:
Jakub Jezek 2019-11-06 15:51:32 +01:00
parent fe918b1bd6
commit 637862f22d
4 changed files with 33 additions and 24 deletions

View file

@ -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))

View file

@ -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()

14
pype/nuke/plugin.py Normal file
View file

@ -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__, {}
)

View file

@ -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
}