mirror of
https://github.com/ynput/ayon-core.git
synced 2025-12-24 21:04:40 +01:00
fix create write [subset, families]
This commit is contained in:
parent
40a5a4a065
commit
c080823a44
4 changed files with 124 additions and 44 deletions
|
|
@ -1,5 +1,4 @@
|
|||
import sys
|
||||
import os
|
||||
from collections import OrderedDict
|
||||
from pprint import pprint
|
||||
from avalon.vendor.Qt import QtGui
|
||||
|
|
@ -27,7 +26,7 @@ def format_anatomy(data):
|
|||
"VERSION": pype.get_version_from_workfile(file)
|
||||
})
|
||||
|
||||
log.info("format_anatomy:anatomy: {}".format(anatomy))
|
||||
# log.info("format_anatomy:anatomy: {}".format(anatomy))
|
||||
return anatomy.format(data)
|
||||
|
||||
|
||||
|
|
@ -35,19 +34,19 @@ def script_name():
|
|||
return nuke.root().knob('name').value()
|
||||
|
||||
|
||||
def create_write_node(name, avalon_data, data_templates):
|
||||
def create_write_node(name, data):
|
||||
from .templates import (
|
||||
get_dataflow,
|
||||
get_colorspace
|
||||
)
|
||||
nuke_dataflow_writes = get_dataflow(**data_templates)
|
||||
nuke_colorspace_writes = get_colorspace(**data_templates)
|
||||
nuke_dataflow_writes = get_dataflow(**data)
|
||||
nuke_colorspace_writes = get_colorspace(**data)
|
||||
try:
|
||||
anatomy_filled = format_anatomy({
|
||||
"subset": avalon_data["subset"],
|
||||
"asset": avalon_data["asset"],
|
||||
"subset": data["avalon"]["subset"],
|
||||
"asset": data["avalon"]["asset"],
|
||||
"task": pype.get_task(),
|
||||
"family": avalon_data["family"],
|
||||
"family": data["avalon"]["family"],
|
||||
"project": {"name": pype.get_project_name(),
|
||||
"code": pype.get_project_code()},
|
||||
"representation": nuke_dataflow_writes.file_type,
|
||||
|
|
@ -57,28 +56,28 @@ def create_write_node(name, avalon_data, data_templates):
|
|||
|
||||
log.debug("anatomy_filled.render: {}".format(anatomy_filled.render))
|
||||
|
||||
data = OrderedDict({
|
||||
_data = OrderedDict({
|
||||
"file": str(anatomy_filled.render.path).replace("\\", "/")
|
||||
})
|
||||
|
||||
# adding dataflow template
|
||||
{data.update({k: v})
|
||||
{_data.update({k: v})
|
||||
for k, v in nuke_dataflow_writes.items()
|
||||
if k not in ["id", "previous"]}
|
||||
|
||||
# adding dataflow template
|
||||
{data.update({k: v})
|
||||
{_data.update({k: v})
|
||||
for k, v in nuke_colorspace_writes.items()}
|
||||
|
||||
data = avalon.nuke.lib.fix_data_for_node_create(data)
|
||||
_data = avalon.nuke.lib.fix_data_for_node_create(_data)
|
||||
|
||||
log.debug(data)
|
||||
log.debug(_data)
|
||||
|
||||
instance = avalon.nuke.lib.add_write_node(
|
||||
name,
|
||||
**data
|
||||
**_data
|
||||
)
|
||||
instance = avalon.nuke.lib.imprint(instance, avalon_data)
|
||||
instance = avalon.nuke.lib.imprint(instance, data["avalon"])
|
||||
return instance
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -8,32 +8,34 @@ def get_anatomy(**kwarg):
|
|||
|
||||
|
||||
def get_dataflow(**kwarg):
|
||||
log.info(kwarg)
|
||||
host = kwarg.get("host", "nuke")
|
||||
cls = kwarg.get("cls", None)
|
||||
family = kwarg.get("family", None)
|
||||
cls = kwarg.get("class", None)
|
||||
preset = kwarg.get("preset", None)
|
||||
assert any([host, cls]), log.error("nuke.templates.get_dataflow():"
|
||||
"Missing mandatory kwargs `host`, `cls`")
|
||||
|
||||
nuke_dataflow = getattr(pype.Dataflow, str(host), None)
|
||||
nuke_dataflow_node = getattr(nuke_dataflow.nodes, str(cls), None)
|
||||
if family:
|
||||
nuke_dataflow_node = getattr(nuke_dataflow_node, str(family), None)
|
||||
if preset:
|
||||
nuke_dataflow_node = getattr(nuke_dataflow_node, str(preset), None)
|
||||
|
||||
log.info("Dataflow: {}".format(nuke_dataflow_node))
|
||||
return nuke_dataflow_node
|
||||
|
||||
|
||||
def get_colorspace(**kwarg):
|
||||
log.info(kwarg)
|
||||
host = kwarg.get("host", "nuke")
|
||||
cls = kwarg.get("cls", None)
|
||||
family = kwarg.get("family", None)
|
||||
cls = kwarg.get("class", None)
|
||||
preset = kwarg.get("preset", None)
|
||||
assert any([host, cls]), log.error("nuke.templates.get_colorspace():"
|
||||
"Missing mandatory kwargs `host`, `cls`")
|
||||
|
||||
nuke_colorspace = getattr(pype.Colorspace, str(host), None)
|
||||
nuke_colorspace_node = getattr(nuke_colorspace, str(cls), None)
|
||||
if family:
|
||||
nuke_colorspace_node = getattr(nuke_colorspace_node, str(family), None)
|
||||
if preset:
|
||||
nuke_colorspace_node = getattr(nuke_colorspace_node, str(preset), None)
|
||||
|
||||
log.info("Colorspace: {}".format(nuke_colorspace_node))
|
||||
return nuke_colorspace_node
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
from collections import OrderedDict
|
||||
import avalon.api
|
||||
import avalon.nuke
|
||||
from pype.nuke import (
|
||||
|
|
@ -5,25 +6,55 @@ from pype.nuke import (
|
|||
)
|
||||
from pype import api as pype
|
||||
|
||||
|
||||
log = pype.Logger.getLogger(__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):
|
||||
name = "WriteRender"
|
||||
label = "Create Write Render"
|
||||
hosts = ["nuke"]
|
||||
family = "render"
|
||||
family = "render" # change this to template
|
||||
families = "write" # do not change!
|
||||
icon = "sign-out"
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
super(CrateWriteRender, self).__init__(*args, **kwargs)
|
||||
|
||||
data = OrderedDict()
|
||||
|
||||
# creating pype subset
|
||||
data["subset"] = subset_to_families(
|
||||
self.data["subset"],
|
||||
self.family,
|
||||
self.families
|
||||
)
|
||||
# swaping family with families
|
||||
data["family"] = self.families
|
||||
data["families"] = self.family
|
||||
|
||||
{data.update({k: v}) for k, v in self.data.items()
|
||||
if k not in data.keys()}
|
||||
self.data = data
|
||||
|
||||
def process(self):
|
||||
instance = super(CrateWriteRender, self).process()
|
||||
|
||||
if not instance:
|
||||
data_templates = {
|
||||
"cls": "write",
|
||||
"family": self.family
|
||||
"class": self.families,
|
||||
# only one is required
|
||||
"preset": self.family,
|
||||
"avalon": self.data
|
||||
}
|
||||
create_write_node(self.name, self.data, data_templates)
|
||||
|
||||
create_write_node(self.name, data_templates)
|
||||
|
||||
return
|
||||
|
||||
|
|
@ -33,18 +64,42 @@ class CrateWritePrerender(avalon.nuke.Creator):
|
|||
label = "Create Write Prerender"
|
||||
hosts = ["nuke"]
|
||||
family = "prerender"
|
||||
families = "write"
|
||||
icon = "sign-out"
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
super(CrateWritePrerender, self).__init__(*args, **kwargs)
|
||||
|
||||
data = OrderedDict()
|
||||
|
||||
# creating pype subset
|
||||
data["subset"] = subset_to_families(
|
||||
self.data["subset"],
|
||||
self.family,
|
||||
self.families
|
||||
)
|
||||
# swaping family with families
|
||||
data["family"] = self.families
|
||||
data["families"] = self.family
|
||||
|
||||
{data.update({k: v}) for k, v in self.data.items()
|
||||
if k not in data.keys()}
|
||||
self.data = data
|
||||
|
||||
def process(self):
|
||||
instance = super(CrateWritePrerender, self).process()
|
||||
|
||||
if not instance:
|
||||
data_templates = {
|
||||
"cls": "write",
|
||||
"family": self.family
|
||||
"class": self.families,
|
||||
# only one is required
|
||||
"preset": self.family,
|
||||
"avalon": self.data
|
||||
}
|
||||
create_write_node(self.name, self.data, data_templates)
|
||||
return None
|
||||
|
||||
create_write_node(self.name, data_templates)
|
||||
|
||||
return
|
||||
|
||||
|
||||
class CrateWriteStill(avalon.nuke.Creator):
|
||||
|
|
@ -52,15 +107,39 @@ class CrateWriteStill(avalon.nuke.Creator):
|
|||
label = "Create Write Still"
|
||||
hosts = ["nuke"]
|
||||
family = "still"
|
||||
families = "write"
|
||||
icon = "image"
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
super(CrateWriteStill, self).__init__(*args, **kwargs)
|
||||
|
||||
data = OrderedDict()
|
||||
|
||||
# creating pype subset
|
||||
data["subset"] = subset_to_families(
|
||||
self.data["subset"],
|
||||
self.family,
|
||||
self.families
|
||||
)
|
||||
# swaping family with families
|
||||
data["family"] = self.families
|
||||
data["families"] = self.family
|
||||
|
||||
{data.update({k: v}) for k, v in self.data.items()
|
||||
if k not in data.keys()}
|
||||
self.data = data
|
||||
|
||||
def process(self):
|
||||
instance = super(CrateWriteStill, self).process()
|
||||
|
||||
if not instance:
|
||||
data_templates = {
|
||||
"cls": "write",
|
||||
"family": self.family
|
||||
"class": self.families,
|
||||
# only one is required
|
||||
"preset": self.family,
|
||||
"avalon": self.data
|
||||
}
|
||||
create_write_node(self.name, self.data, data_templates)
|
||||
|
||||
create_write_node(self.name, data_templates)
|
||||
|
||||
return
|
||||
|
|
|
|||
|
|
@ -2,16 +2,16 @@
|
|||
from avalon.tools import workfiles
|
||||
import nuke
|
||||
# auto fix version paths in write nodes following root name of script
|
||||
cmd = '''
|
||||
import re
|
||||
rootVersion=re.search('[vV]\d+', os.path.split(nuke.root().name())[1]).group()
|
||||
for each in nuke.allNodes():
|
||||
if each.Class() == 'Write':
|
||||
each['file'].setValue(re.sub('[vV]\d+', rootVersion, each['file'].value()))
|
||||
'''
|
||||
nuke.knobDefault('onScriptSave', cmd)
|
||||
|
||||
print '\n>>> menu.py: Function for automatic check of version in write nodes is added\n'
|
||||
# cmd = '''
|
||||
# import re
|
||||
# rootVersion=re.search('[vV]\d+', os.path.split(nuke.root().name())[1]).group()
|
||||
# for each in nuke.allNodes():
|
||||
# if each.Class() == 'Write':
|
||||
# each['file'].setValue(re.sub('[vV]\d+', rootVersion, each['file'].value()))
|
||||
# '''
|
||||
# nuke.knobDefault('onScriptSave', cmd)
|
||||
#
|
||||
# print '\n>>> menu.py: Function for automatic check of version in write nodes is added\n'
|
||||
|
||||
ffmpeg_cmd = '''if nuke.env['LINUX']:
|
||||
nuke.tcl('load ffmpegReader')
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue