Skip to content
This repository has been archived by the owner on Sep 20, 2024. It is now read-only.

OpenPypeV3: Add key parent asset to path templating construction #2186

Merged
10 changes: 8 additions & 2 deletions openpype/lib/avalon_context.py
Original file line number Diff line number Diff line change
Expand Up @@ -479,13 +479,18 @@ def get_workdir_data(project_doc, asset_doc, task_name, host_name):
Returns:
dict: Data prepared for filling workdir template.
"""
hierarchy = "/".join(asset_doc["data"]["parents"])

task_type = asset_doc['data']['tasks'].get(task_name, {}).get('type')

project_task_types = project_doc["config"]["tasks"]
task_code = project_task_types.get(task_type, {}).get("short_name")

asset_parents = asset_doc["data"]["parents"]
hierarchy = "/".join(asset_parents)

parent_name = project_doc["name"]
if asset_parents:
parent_name = asset_parents[-1]

data = {
"project": {
"name": project_doc["name"],
Expand All @@ -497,6 +502,7 @@ def get_workdir_data(project_doc, asset_doc, task_name, host_name):
"short": task_code,
},
"asset": asset_doc["name"],
"parent": parent_name,
"app": host_name,
"user": getpass.getuser(),
"hierarchy": hierarchy,
Expand Down
15 changes: 9 additions & 6 deletions openpype/plugins/publish/collect_anatomy_context_data.py
Original file line number Diff line number Diff line change
Expand Up @@ -49,24 +49,27 @@ def process(self, context):
project_entity = context.data["projectEntity"]
asset_entity = context.data["assetEntity"]

hierarchy_items = asset_entity["data"]["parents"]
hierarchy = ""
if hierarchy_items:
hierarchy = os.path.join(*hierarchy_items)

asset_tasks = asset_entity["data"]["tasks"]
task_type = asset_tasks.get(task_name, {}).get("type")

project_task_types = project_entity["config"]["tasks"]
task_code = project_task_types.get(task_type, {}).get("short_name")

asset_parents = asset_entity["data"]["parents"]
hierarchy = "/".join(asset_parents)

parent_name = project_entity["name"]
if asset_parents:
parent_name = asset_parents[-1]

context_data = {
"project": {
"name": project_entity["name"],
"code": project_entity["data"].get("code")
},
"asset": asset_entity["name"],
"hierarchy": hierarchy.replace("\\", "/"),
"parent": parent_name,
"hierarchy": hierarchy,
"task": {
"name": task_name,
"type": task_type,
Expand Down
4 changes: 4 additions & 0 deletions openpype/plugins/publish/collect_anatomy_instance_data.py
Original file line number Diff line number Diff line change
Expand Up @@ -242,7 +242,11 @@ def fill_anatomy_data(self, context):
asset_doc = instance.data.get("assetEntity")
if asset_doc and asset_doc["_id"] != context_asset_doc["_id"]:
parents = asset_doc["data"].get("parents") or list()
parent_name = project_doc["name"]
if parents:
parent_name = parents[-1]
anatomy_updates["hierarchy"] = "/".join(parents)
anatomy_updates["parent"] = parent_name

# Task
task_name = instance.data.get("task")
Expand Down
12 changes: 11 additions & 1 deletion openpype/tools/workfiles/app.py
Original file line number Diff line number Diff line change
Expand Up @@ -68,19 +68,28 @@ def __init__(self, parent, root, anatomy, template_key, session=None):
"config.tasks": True,
}
)

asset_doc = io.find_one(
{
"type": "asset",
"name": asset_name
},
{"data.tasks": True}
{
"data.tasks": True,
"data.parents": True
}
)

task_type = asset_doc["data"]["tasks"].get(task_name, {}).get("type")

project_task_types = project_doc["config"]["tasks"]
task_short = project_task_types.get(task_type, {}).get("short_name")

asset_parents = asset_doc["data"]["parents"]
parent_name = project_doc["name"]
if asset_parents:
parent_name = asset_parents[-1]

self.data = {
"project": {
"name": project_doc["name"],
Expand All @@ -92,6 +101,7 @@ def __init__(self, parent, root, anatomy, template_key, session=None):
"type": task_type,
"short": task_short,
},
"parent": parent_name,
"version": 1,
"user": getpass.getuser(),
"comment": "",
Expand Down
2 changes: 2 additions & 0 deletions website/docs/admin_settings_project_anatomy.md
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,8 @@ We have a few required anatomy templates for OpenPype to work properly, however
| `task[name]` | Name of task |
| `task[type]` | Type of task |
| `task[short]` | Shortname of task |
| `parent` | Name of hierarchical parent |
| `task` | Name of task |
ClementHector marked this conversation as resolved.
Show resolved Hide resolved
| `version` | Version number |
| `subset` | Subset name |
| `family` | Main family name |
Expand Down