filled anatomyData in publish plugins

This commit is contained in:
clement.hector 2021-10-26 17:22:27 +02:00
parent 17af919d75
commit 7ec884f2d5
10 changed files with 76 additions and 31 deletions

View file

@ -126,7 +126,8 @@ class CollectFarmRender(openpype.lib.abstract_collect_render.
# because of using 'renderFarm' as a family, replace 'Farm' with
# capitalized task name - issue of avalon-core Creator app
subset_name = node.split("/")[1]
task_name = context.data["anatomyData"]["task"].capitalize()
task_name = context.data["anatomyData"]["task"][
"name"].capitalize()
replace_str = ""
if task_name.lower() not in subset_name.lower():
replace_str = task_name

View file

@ -28,7 +28,7 @@ class CollectPalettes(pyblish.api.ContextPlugin):
# skip collecting if not in allowed task
if self.allowed_tasks:
task_name = context.data["anatomyData"]["task"].lower()
task_name = context.data["anatomyData"]["task"]["name"].lower()
if (not any([re.search(pattern, task_name)
for pattern in self.allowed_tasks])):
return

View file

@ -49,10 +49,26 @@ class CollectHarmonyScenes(pyblish.api.InstancePlugin):
# fix anatomy data
anatomy_data_new = copy.deepcopy(anatomy_data)
project_entity = context.data["projectEntity"]
asset_entity = context.data["assetEntity"]
task_type = asset_entity["data"]["tasks"].get(task, {}).get("type")
if task_type:
task_code = project_entity["config"]["tasks"][task_type][
"short_name"]
else:
task_code = None
# updating hierarchy data
anatomy_data_new.update({
"asset": asset_data["name"],
"task": task,
"task": {
"name": task,
"type": task_type,
"short": task_code,
},
"subset": subset_name
})

View file

@ -27,6 +27,7 @@ class CollectHarmonyZips(pyblish.api.InstancePlugin):
anatomy_data = instance.context.data["anatomyData"]
repres = instance.data["representations"]
files = repres[0]["files"]
project_entity = context.data["projectEntity"]
if files.endswith(".zip"):
# A zip file was dropped
@ -45,14 +46,28 @@ class CollectHarmonyZips(pyblish.api.InstancePlugin):
self.log.info("Copied data: {}".format(new_instance.data))
task_type = asset_data["data"]["tasks"].get(task, {}).get("type")
if task_type:
task_code = project_entity["config"]["tasks"][task_type][
"short_name"]
else:
task_code = None
# fix anatomy data
anatomy_data_new = copy.deepcopy(anatomy_data)
# updating hierarchy data
anatomy_data_new.update({
"asset": asset_data["name"],
"task": task,
"subset": subset_name
})
anatomy_data_new.update(
{
"asset": asset_data["name"],
"task": {
"name": task,
"type": task_type,
"short": task_code,
},
"subset": subset_name,
}
)
new_instance.data["label"] = f"{instance_name}"
new_instance.data["subset"] = subset_name

View file

@ -31,8 +31,10 @@ class ExtractHarmonyZip(openpype.api.Extractor):
# Presets
create_workfile = True
default_task = "harmonyIngest"
default_task_type = "Ingest"
default_task = {
"name": "harmonyIngest",
"type": "Ingest",
}
default_task_status = "Ingested"
assetversion_status = "Ingested"
@ -220,9 +222,9 @@ class ExtractHarmonyZip(openpype.api.Extractor):
anatomy = openpype.api.Anatomy()
project_entity = instance.context.data["projectEntity"]
task_name = instance.data.get("task")
task_type = instance.data['tasks'].get(task_name, {}).get('type')
task_short = project_entity['config']['tasks'][task_type]['short_name']
task_name = instance.data.get("task").get("name")
task_type = instance.data.get("task").get("type")
task_short = instance.data.get("task").get("short")
data = {
"root": api.registered_root(),

View file

@ -1361,6 +1361,10 @@ def _prepare_last_workfile(data, workdir, workfile_template_key):
anatomy = data["anatomy"]
# Find last workfile
file_template = anatomy.templates["work"]["file"]
# Replace {task} by '{task[name]}' for backward compatibility
if '{task}' in file_template:
file_template = file_template.replace('{task}', '{task[name]}')
workdir_data.update({
"version": 1,
"user": get_openpype_username(),

View file

@ -109,7 +109,7 @@ class CollectFtrackApi(pyblish.api.ContextPlugin):
"Checking entities of instance \"{}\"".format(str(instance))
)
instance_asset_name = instance.data.get("asset")
instance_task_name = instance.data.get("task")
instance_task_name = instance.data.get("task").get("name")
if not instance_asset_name and not instance_task_name:
self.log.debug("Instance does not have set context keys.")

View file

@ -54,6 +54,15 @@ class CollectAnatomyContextData(pyblish.api.ContextPlugin):
if hierarchy_items:
hierarchy = os.path.join(*hierarchy_items)
task_type = asset_entity['data']['tasks'].get(
task_name, {}).get('type')
if task_type:
task_code = project_entity['config']['tasks'][task_type][
'short_name']
else:
task_code = None
context_data = {
"project": {
"name": project_entity["name"],
@ -61,7 +70,11 @@ class CollectAnatomyContextData(pyblish.api.ContextPlugin):
},
"asset": asset_entity["name"],
"hierarchy": hierarchy.replace("\\", "/"),
"task": task_name,
"task": {
"name": task_name,
"type": task_type,
"short": task_code,
},
"username": context.data["user"],
"app": context.data["hostName"]
}

View file

@ -238,9 +238,9 @@ class CollectAnatomyInstanceData(pyblish.api.ContextPlugin):
anatomy_updates["hierarchy"] = "/".join(parents)
# Task
task_name = instance.data.get("task")
if task_name:
anatomy_updates["task"] = task_name
task_info = instance.data.get("task")
if task_info:
anatomy_updates["task"] = task_info
# Additional data
resolution_width = instance.data.get("resolutionWidth")

View file

@ -171,19 +171,13 @@ class IntegrateAssetNew(pyblish.api.InstancePlugin):
anatomy_data["hierarchy"] = hierarchy
# Make sure task name in anatomy data is same as on instance.data
task_name = instance.data.get("task")
if task_name:
anatomy_data["task"] = task_name
task_info = instance.data.get("task")
if task_info:
anatomy_data["task"] = task_info
else:
# Just set 'task_name' variable to context task
task_name = anatomy_data["task"]
# Just set 'task_info' variable to context task
task_info = anatomy_data["task"]
# Find task type for current task name
# - this should be already prepared on instance
asset_tasks = (
asset_entity.get("data", {}).get("tasks")
) or {}
task_info = asset_tasks.get(task_name) or {}
task_type = task_info.get("type")
instance.data["task_type"] = task_type
@ -321,7 +315,7 @@ class IntegrateAssetNew(pyblish.api.InstancePlugin):
key_values = {
"families": family,
"tasks": task_name,
"tasks": task_info.get("name"),
"hosts": instance.context.data["hostName"],
"task_types": task_type
}
@ -804,7 +798,7 @@ class IntegrateAssetNew(pyblish.api.InstancePlugin):
# data?
# - should we use context task in that case?
task_name = (
instance.data["anatomyData"]["task"]
instance.data["anatomyData"]["task"].get("name")
or io.Session["AVALON_TASK"]
)
task_type = instance.data["task_type"]