mirror of
https://github.com/ynput/ayon-core.git
synced 2025-12-25 05:14:40 +01:00
utilization of already created action in nuke api
openpype.hosts.nuke.api.action.SelectInvalidAction
This commit is contained in:
parent
dfbc11bca5
commit
0953dc65cc
3 changed files with 26 additions and 56 deletions
|
|
@ -50,6 +50,8 @@ from .utils import (
|
|||
get_colorspace_list
|
||||
)
|
||||
|
||||
from .actions import SelectInvalidAction
|
||||
|
||||
__all__ = (
|
||||
"file_extensions",
|
||||
"has_unsaved_changes",
|
||||
|
|
@ -92,5 +94,7 @@ __all__ = (
|
|||
"create_write_node",
|
||||
|
||||
"colorspace_exists_on_node",
|
||||
"get_colorspace_list"
|
||||
"get_colorspace_list",
|
||||
|
||||
"SelectInvalidAction",
|
||||
)
|
||||
|
|
|
|||
|
|
@ -20,33 +20,31 @@ class SelectInvalidAction(pyblish.api.Action):
|
|||
|
||||
def process(self, context, plugin):
|
||||
|
||||
try:
|
||||
import nuke
|
||||
except ImportError:
|
||||
raise ImportError("Current host is not Nuke")
|
||||
|
||||
errored_instances = get_errored_instances_from_context(context,
|
||||
plugin=plugin)
|
||||
# Get the errored instances for the plug-in
|
||||
errored_instances = get_errored_instances_from_context(
|
||||
context, plugin)
|
||||
|
||||
# Get the invalid nodes for the plug-ins
|
||||
self.log.info("Finding invalid nodes..")
|
||||
invalid = list()
|
||||
invalid_nodes = set()
|
||||
for instance in errored_instances:
|
||||
invalid_nodes = plugin.get_invalid(instance)
|
||||
invalid = plugin.get_invalid(instance)
|
||||
|
||||
if invalid_nodes:
|
||||
if isinstance(invalid_nodes, (list, tuple)):
|
||||
invalid.append(invalid_nodes[0])
|
||||
else:
|
||||
self.log.warning("Plug-in returned to be invalid, "
|
||||
"but has no selectable nodes.")
|
||||
if not invalid:
|
||||
continue
|
||||
|
||||
# Ensure unique (process each node only once)
|
||||
invalid = list(set(invalid))
|
||||
select_node = instance.data.get("transientData", {}).get("node")
|
||||
if not select_node:
|
||||
raise RuntimeError(
|
||||
"No transientData['node'] found on instance: {}".format(
|
||||
instance)
|
||||
)
|
||||
|
||||
if invalid:
|
||||
self.log.info("Selecting invalid nodes: {}".format(invalid))
|
||||
invalid_nodes.add(select_node)
|
||||
|
||||
if invalid_nodes:
|
||||
self.log.info("Selecting invalid nodes: {}".format(invalid_nodes))
|
||||
reset_selection()
|
||||
select_nodes(invalid)
|
||||
select_nodes(list(invalid_nodes))
|
||||
else:
|
||||
self.log.info("No invalid nodes found.")
|
||||
|
|
|
|||
|
|
@ -4,34 +4,13 @@ from __future__ import absolute_import
|
|||
|
||||
import pyblish.api
|
||||
|
||||
import openpype.hosts.nuke.api.lib as nlib
|
||||
|
||||
from openpype.pipeline.publish import (
|
||||
RepairAction,
|
||||
ValidateContentsOrder,
|
||||
PublishXmlValidationError,
|
||||
OptionalPyblishPluginMixin,
|
||||
get_errored_instances_from_context
|
||||
OptionalPyblishPluginMixin
|
||||
)
|
||||
|
||||
|
||||
class SelectInvalidNodesAction(pyblish.api.Action):
|
||||
"""Select invalid nodes."""
|
||||
|
||||
label = "Select Failed Node"
|
||||
icon = "briefcase"
|
||||
on = "failed"
|
||||
|
||||
def process(self, context, plugin):
|
||||
if not hasattr(plugin, "select"):
|
||||
raise RuntimeError("Plug-in does not have select method.")
|
||||
|
||||
# Get the failed instances
|
||||
self.log.debug("Finding failed plug-ins..")
|
||||
failed_instance = get_errored_instances_from_context(context, plugin)
|
||||
if failed_instance:
|
||||
self.log.debug("Attempting selection ...")
|
||||
plugin.select(failed_instance.pop())
|
||||
from openpype.hosts.nuke.api import SelectInvalidAction
|
||||
|
||||
|
||||
class ValidateCorrectAssetContext(
|
||||
|
|
@ -51,7 +30,7 @@ class ValidateCorrectAssetContext(
|
|||
hosts = ["nuke"]
|
||||
actions = [
|
||||
RepairAction,
|
||||
SelectInvalidNodesAction,
|
||||
SelectInvalidAction
|
||||
]
|
||||
optional = True
|
||||
|
||||
|
|
@ -133,14 +112,3 @@ class ValidateCorrectAssetContext(
|
|||
created_instance[_key] = instance.context.data[_key]
|
||||
|
||||
create_context.save_changes()
|
||||
|
||||
@classmethod
|
||||
def select(cls, instance):
|
||||
"""Select invalid node """
|
||||
invalid = cls.get_invalid(instance)
|
||||
if not invalid:
|
||||
return
|
||||
|
||||
select_node = instance.data["transientData"]["node"]
|
||||
nlib.reset_selection()
|
||||
select_node["selected"].setValue(True)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue