Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Repair action from validate correct asset context to fix the write node's filepath #8

1 change: 1 addition & 0 deletions client/ayon_nuke/api/lib.py
Original file line number Diff line number Diff line change
Expand Up @@ -993,6 +993,7 @@ def format_anatomy(data):
},
"frame": "#" * frame_padding,
})
print("data", data)
moonyuet marked this conversation as resolved.
Show resolved Hide resolved
return anatomy.format(data)


Expand Down
30 changes: 28 additions & 2 deletions client/ayon_nuke/plugins/publish/validate_asset_context.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,16 @@
from __future__ import absolute_import

import pyblish.api

import nuke
from ayon_core.lib import StringTemplate
from ayon_core.pipeline.publish import (
RepairAction,
ValidateContentsOrder,
PublishXmlValidationError,
OptionalPyblishPluginMixin
)
from ayon_nuke.api import SelectInstanceNodeAction
from ayon_nuke.api.lib import format_anatomy


class ValidateCorrectAssetContext(
Expand Down Expand Up @@ -110,5 +112,29 @@ def repair(cls, instance):
)
for _key in invalid_keys:
created_instance[_key] = instance.context.data[_key]

create_context.save_changes()
if instance.data["productType"] in {"prerender", "render", "image"}:
cls.reset_write_node_filepath(instance)

@classmethod
def reset_write_node_filepath(cls, instance):
instance_node = instance.data["transientData"]["node"]
write_node = nuke.allNodes(group=instance_node, filter="Write")[0]
data = dict({
"fpath_template": (
"{work}/renders/nuke/{subset}/{subset}.{frame}.{ext}"),
"ext": write_node["file_type"].value(),
"folderPath": instance.context.data["folderPath"],
"task": instance.context.data["task"],
"productName": instance.data["productName"],
"productType": instance.data["productType"]
})
anatomy_filled = format_anatomy(data)

# build file path to workfiles
fdir = str(
anatomy_filled["work"]["default"]["directory"]
).replace("\\", "/")
data["work"] = fdir
fpath = StringTemplate(data["fpath_template"]).format_strict(data)
write_node["file"].setValue(fpath)
BigRoy marked this conversation as resolved.
Show resolved Hide resolved