cleanup write publishing and loading

This commit is contained in:
Milan Kolar 2019-01-18 17:52:40 +01:00
parent e521eaacce
commit 11cf14e282
6 changed files with 51 additions and 51 deletions

View file

@ -20,29 +20,31 @@ class ValidateWriteFamilies(pyblish.api.InstancePlugin):
""" Validates write families. """
order = pyblish.api.ValidatorOrder
label = "Check correct writes families"
label = "Valitade writes families"
hosts = ["nuke"]
families = ["write"]
actions = [pype.nuke.actions.SelectInvalidAction, pype.api.RepairAction]
@staticmethod
def get_invalid(instance):
if not [f for f in instance.data["families"]
if ".frames" in f]:
return
if not instance.data["files"]:
return (instance)
# @staticmethod
# def get_invalid(instance):
# for f in instance.data["families"]:
# if ".frames" in f:
# return
#
# if not instance.data["files"]:
# return (instance)
def process(self, instance):
self.log.debug('instance.data["files"]: {}'.format(instance.data['files']))
invalid = self.get_invalid(instance)
if invalid:
raise ValueError(str("`{}`: Switch `Render` on! "
"> {}".format(__name__, invalid)))
self.log.info("Checked correct writes families")
# if any(".frames" in f for f in instance.data["families"]):
# if not instance.data["files"]:
# raise ValueError("instance {} is set to publish frames\
# but no files were collected, render the frames first or\
# check 'render' checkbox onthe no to 'ON'".format(instance)))
#
#
# self.log.info("Checked correct writes families")
@classmethod
def repair(cls, instance):

View file

@ -36,13 +36,13 @@ def preserve_trim(node):
if start_at_frame:
node['frame_mode'].setValue("start at")
node['frame'].setValue(str(script_start))
log.info("start frame of reader was set to"
log.info("start frame of Read was set to"
"{}".format(script_start))
if offset_frame:
node['frame_mode'].setValue("offset")
node['frame'].setValue(str((script_start + offset_frame)))
log.info("start frame of reader was set to"
log.info("start frame of Read was set to"
"{}".format(script_start))
@ -67,7 +67,7 @@ def loader_shift(node, frame, relative=True):
if relative:
node['frame_mode'].setValue("start at")
node['frame'].setValue(str(script_start))
node['frame'].setValue(str(frame))
return int(script_start)
@ -75,7 +75,7 @@ def loader_shift(node, frame, relative=True):
class LoadSequence(api.Loader):
"""Load image sequence into Nuke"""
families = ["write"]
families = ["write", "source"]
representations = ["*"]
label = "Load sequence"
@ -142,8 +142,9 @@ class LoadSequence(api.Loader):
data_imprint = {}
for k in add_keys:
data_imprint.update({k: context["version"]['data'][k]})
data_imprint.update({"objectName": read_name})
containerise(r,
return containerise(r,
name=name,
namespace=namespace,
context=context,
@ -168,9 +169,9 @@ class LoadSequence(api.Loader):
update_container
)
log.info("this i can see")
node = container["_tool"]
# TODO: prepare also for other readers img/geo/camera
assert node.Class() == "Reader", "Must be Reader"
node = nuke.toNode(container['objectName'])
# TODO: prepare also for other Read img/geo/camera
assert node.Class() == "Read", "Must be Read"
root = api.get_representation_path(representation)
file = ls_img_sequence(os.path.dirname(root), one=True)
@ -189,7 +190,7 @@ class LoadSequence(api.Loader):
# Update the loader's path whilst preserving some values
with preserve_trim(node):
node["file"] = file["path"]
node["file"].setValue(file["path"])
# Set the global in to the start frame of the sequence
global_in_changed = loader_shift(node, start, relative=False)
@ -208,8 +209,8 @@ class LoadSequence(api.Loader):
from avalon.nuke import viewer_update_and_undo_stop
node = container["_tool"]
assert node.Class() == "Reader", "Must be Reader"
node = nuke.toNode(container['objectName'])
assert node.Class() == "Read", "Must be Read"
with viewer_update_and_undo_stop():
nuke.delete(node)

View file

@ -15,31 +15,28 @@ class CollectInstanceFamilies(pyblish.api.ContextPlugin):
if "write" in instance.data["family"]:
node = instance[0]
# set for ftrack to accept
instance.data["families"] = ["ftrack"]
families = []
if instance.data.get('families'):
families.append(instance.data['families'])
if not node["render"].value():
families = ["{}.frames".format(
instance.data["avalonKnob"]["families"])]
# to ignore staging dir op in integrate
instance.data['transfer'] = False
else:
# set for ftrack to accept
# instance.data["families"] = ["ftrack"]
if node["render"].value():
# dealing with local/farm rendering
if node["render_farm"].value():
families = ["{}.farm".format(
instance.data["avalonKnob"]["families"])]
families.append("render.farm")
else:
families = ["{}.local".format(
instance.data["avalonKnob"]["families"])]
families.append("render.local")
else:
families.append("render.frames")
# to ignore staging dir op in integrate
instance.data['transfer'] = False
instance.data["families"].extend(families)
elif "source" in instance.data["family"]:
families = []
families.append(instance.data["avalonKnob"]["families"])
instance.data["families"] = families
# Sort/grouped by family (preserving local index)
context[:] = sorted(context, key=self.sort_by_family)

View file

@ -56,8 +56,8 @@ class CollectNukeInstances(pyblish.api.ContextPlugin):
"fps": int(nuke.root()['fps'].value())
})
if node.Class() == "Write":
instance.data["families"] = [avalon_knob_data["families"]]
# if node.Class() == "Write":
# instance.data["families"] = [avalon_knob_data["families"]]
self.log.info("collected instance: {}".format(instance.data))
instances.append(instance)

View file

@ -64,14 +64,13 @@ class CollectNukeWrites(pyblish.api.ContextPlugin):
# collect families in next file
if "files" not in instance.data:
instance.data["files"] = list()
try:
collected_frames = os.listdir(output_dir)
self.log.debug("collected_frames: {}".format(label))
instance.data["files"].append(collected_frames)
except Exception:
pass
self.log.debug("couldn't collect frames: {}".format(label))
instance.data.update({
"path": path,

View file

@ -20,20 +20,19 @@ class RepairCollectionAction(pyblish.api.Action):
self.log.info("Rendering toggled ON")
class ValidateCollection(pyblish.api.InstancePlugin):
class ValidatePrerenderedFrames(pyblish.api.InstancePlugin):
""" Validates file output. """
order = pyblish.api.ValidatorOrder + 0.1
families = ["render.frames", "still.frames", "prerender.frames"]
label = "Check prerendered frames"
label = "Validate prerendered frame"
hosts = ["nuke"]
actions = [RepairCollectionAction]
def process(self, instance):
self.log.debug('instance.data["files"]: {}'.format(instance.data['files']))
if not instance.data["files"]:
return
assert instance.data["files"], "No frames have been collected"
collections, remainder = clique.assemble(*instance.data['files'])
self.log.info('collections: {}'.format(str(collections)))
@ -57,3 +56,5 @@ class ValidateCollection(pyblish.api.InstancePlugin):
collection.indexes
) is frame_length, "{} missing frames. Use "
"repair to render all frames".format(__name__)
instance.data['collection'] = collection