mirror of
https://github.com/ynput/ayon-core.git
synced 2026-01-01 16:34:53 +01:00
implemented validator of task name existence on asset document
This commit is contained in:
parent
e22cb6a1f7
commit
f34d25f49b
1 changed files with 57 additions and 0 deletions
|
|
@ -0,0 +1,57 @@
|
|||
import collections
|
||||
import pyblish.api
|
||||
from avalon import io
|
||||
|
||||
|
||||
class ValidateTaskExistence(pyblish.api.ContextPlugin):
|
||||
"""Validating tasks on instances are filled and existing."""
|
||||
|
||||
label = "Validate Task Existence"
|
||||
order = pyblish.api.ValidatorOrder
|
||||
|
||||
hosts = ["standalonepublisher"]
|
||||
families = ["render_mov_batch"]
|
||||
|
||||
def process(self, context):
|
||||
asset_names = set()
|
||||
for instance in context:
|
||||
asset_names.add(instance.data["asset"])
|
||||
|
||||
asset_docs = io.find(
|
||||
{
|
||||
"type": "asset",
|
||||
"name": {"$in": list(asset_names)}
|
||||
},
|
||||
{
|
||||
"name": 1,
|
||||
"data.tasks": 1
|
||||
}
|
||||
)
|
||||
tasks_by_asset_names = {}
|
||||
for asset_doc in asset_docs:
|
||||
asset_name = asset_doc["name"]
|
||||
asset_tasks = asset_doc.get("data", {}).get("tasks") or {}
|
||||
tasks_by_asset_names[asset_name] = list(asset_tasks.keys())
|
||||
|
||||
missing_tasks = []
|
||||
for instance in context:
|
||||
asset_name = instance.data["asset"]
|
||||
task_name = instance.data["task"]
|
||||
task_names = tasks_by_asset_names.get(asset_name) or []
|
||||
if task_name and task_name in task_names:
|
||||
continue
|
||||
missing_tasks.append((asset_name, task_name))
|
||||
|
||||
# Everything is OK
|
||||
if not missing_tasks:
|
||||
return
|
||||
|
||||
# Raise an exception
|
||||
msg = "Couldn't find task name/s required for publishing.\n{}"
|
||||
pair_msgs = []
|
||||
for missing_pair in missing_tasks:
|
||||
pair_msgs.append(
|
||||
"Asset: \"{}\" Task: \"{}\"".format(*missing_pair)
|
||||
)
|
||||
|
||||
raise AssertionError(msg.format("\n".join(pair_msgs)))
|
||||
Loading…
Add table
Add a link
Reference in a new issue