mirror of
https://github.com/ynput/ayon-core.git
synced 2025-12-24 21:04:40 +01:00
48 lines
1.4 KiB
Python
48 lines
1.4 KiB
Python
import os
|
|
|
|
import pyblish.api
|
|
import pype.api
|
|
from avalon import harmony
|
|
|
|
|
|
class ValidateInstanceRepair(pyblish.api.Action):
|
|
"""Repair the instance."""
|
|
|
|
label = "Repair"
|
|
icon = "wrench"
|
|
on = "failed"
|
|
|
|
def process(self, context, plugin):
|
|
|
|
# Get the errored instances
|
|
failed = []
|
|
for result in context.data["results"]:
|
|
if (result["error"] is not None and result["instance"] is not None
|
|
and result["instance"] not in failed):
|
|
failed.append(result["instance"])
|
|
|
|
# Apply pyblish.logic to get the instances for the plug-in
|
|
instances = pyblish.api.instances_by_plugin(failed, plugin)
|
|
|
|
for instance in instances:
|
|
data = harmony.read(instance[0])
|
|
data["asset"] = os.environ["AVALON_ASSET"]
|
|
harmony.imprint(instance[0], data)
|
|
|
|
|
|
class ValidateInstance(pyblish.api.InstancePlugin):
|
|
"""Validate the instance asset is the current asset."""
|
|
|
|
label = "Validate Instance"
|
|
hosts = ["harmony"]
|
|
actions = [ValidateInstanceRepair]
|
|
order = pype.api.ValidateContentsOrder
|
|
|
|
def process(self, instance):
|
|
instance_asset = instance.data["asset"]
|
|
current_asset = os.environ["AVALON_ASSET"]
|
|
msg = (
|
|
"Instance asset is not the same as current asset:"
|
|
f"\nInstance: {instance_asset}\nCurrent: {current_asset}"
|
|
)
|
|
assert instance_asset == current_asset, msg
|