mirror of
https://github.com/ynput/ayon-core.git
synced 2025-12-24 21:04:40 +01:00
Added docstring and changed doc to dict in var-names
This commit is contained in:
parent
3fc2180e51
commit
f9137bdb04
1 changed files with 44 additions and 34 deletions
|
|
@ -65,30 +65,32 @@ def set_op_project(dbcon: AvalonMongoDB, project_id: str):
|
|||
def update_op_assets(
|
||||
dbcon: AvalonMongoDB,
|
||||
gazu_project: dict,
|
||||
project_doc: dict,
|
||||
project_dict: dict,
|
||||
entities_list: List[dict],
|
||||
asset_doc_ids: Dict[str, dict],
|
||||
asset_dict_ids: Dict[str, dict],
|
||||
) -> List[Dict[str, dict]]:
|
||||
"""Update OpenPype assets.
|
||||
Set 'data' and 'parent' fields.
|
||||
|
||||
Args:
|
||||
dbcon (AvalonMongoDB): Connection to DB
|
||||
gazu_project dict): Dict of gazu,
|
||||
project_dict dict): Dict of project,
|
||||
entities_list (List[dict]): List of zou entities to update
|
||||
asset_doc_ids (Dict[str, dict]): Dicts of [{zou_id: asset_doc}, ...]
|
||||
asset_dict_ids (Dict[str, dict]): Dicts of [{zou_id: asset_doc}, ...]
|
||||
|
||||
Returns:
|
||||
List[Dict[str, dict]]: List of (doc_id, update_dict) tuples
|
||||
"""
|
||||
if not project_doc:
|
||||
if not project_dict:
|
||||
return
|
||||
|
||||
project_name = project_doc["name"]
|
||||
project_name = project_dict["name"]
|
||||
|
||||
assets_with_update = []
|
||||
for item in entities_list:
|
||||
# Check asset exists
|
||||
item_doc = asset_doc_ids.get(item["id"])
|
||||
item_doc = asset_dict_ids.get(item["id"])
|
||||
if not item_doc: # Create asset
|
||||
op_asset = create_op_asset(item)
|
||||
insert_result = dbcon.insert_one(op_asset)
|
||||
|
|
@ -105,7 +107,7 @@ def update_op_assets(
|
|||
try:
|
||||
frame_in = int(
|
||||
item_data.pop(
|
||||
"frame_in", project_doc["data"].get("frameStart")
|
||||
"frame_in", project_dict["data"].get("frameStart")
|
||||
)
|
||||
)
|
||||
except (TypeError, ValueError):
|
||||
|
|
@ -124,14 +126,14 @@ def update_op_assets(
|
|||
if frames_duration:
|
||||
frame_out = frame_in + frames_duration - 1
|
||||
else:
|
||||
frame_out = project_doc["data"].get("frameEnd", frame_in)
|
||||
frame_out = project_dict["data"].get("frameEnd", frame_in)
|
||||
item_data["frameEnd"] = frame_out
|
||||
# Fps, fallback to project's value or default value (25.0)
|
||||
try:
|
||||
fps = float(item_data.get("fps"))
|
||||
except (TypeError, ValueError):
|
||||
fps = float(gazu_project.get(
|
||||
"fps", project_doc["data"].get("fps", 25)))
|
||||
"fps", project_dict["data"].get("fps", 25)))
|
||||
item_data["fps"] = fps
|
||||
# Resolution, fall back to project default
|
||||
match_res = re.match(
|
||||
|
|
@ -142,27 +144,27 @@ def update_op_assets(
|
|||
item_data["resolutionWidth"] = int(match_res.group(1))
|
||||
item_data["resolutionHeight"] = int(match_res.group(2))
|
||||
else:
|
||||
item_data["resolutionWidth"] = project_doc["data"].get(
|
||||
item_data["resolutionWidth"] = project_dict["data"].get(
|
||||
"resolutionWidth")
|
||||
item_data["resolutionHeight"] = project_doc["data"].get(
|
||||
item_data["resolutionHeight"] = project_dict["data"].get(
|
||||
"resolutionHeight")
|
||||
# Properties that doesn't fully exist in Kitsu.
|
||||
# Guessing those property names below:
|
||||
# Pixel Aspect Ratio
|
||||
item_data["pixelAspect"] = item_data.get(
|
||||
"pixel_aspect", project_doc["data"].get("pixelAspect"))
|
||||
"pixel_aspect", project_dict["data"].get("pixelAspect"))
|
||||
# Handle Start
|
||||
item_data["handleStart"] = item_data.get(
|
||||
"handle_start", project_doc["data"].get("handleStart"))
|
||||
"handle_start", project_dict["data"].get("handleStart"))
|
||||
# Handle End
|
||||
item_data["handleEnd"] = item_data.get(
|
||||
"handle_end", project_doc["data"].get("handleEnd"))
|
||||
"handle_end", project_dict["data"].get("handleEnd"))
|
||||
# Clip In
|
||||
item_data["clipIn"] = item_data.get(
|
||||
"clip_in", project_doc["data"].get("clipIn"))
|
||||
"clip_in", project_dict["data"].get("clipIn"))
|
||||
# Clip Out
|
||||
item_data["clipOut"] = item_data.get(
|
||||
"clip_out", project_doc["data"].get("clipOut"))
|
||||
"clip_out", project_dict["data"].get("clipOut"))
|
||||
|
||||
# Tasks
|
||||
tasks_list = []
|
||||
|
|
@ -204,9 +206,14 @@ def update_op_assets(
|
|||
entity_root_asset_name = "Shots"
|
||||
|
||||
# Root parent folder if exist
|
||||
visual_parent_doc_id = (
|
||||
asset_doc_ids[parent_zou_id].get("_id") if parent_zou_id else None
|
||||
)
|
||||
visual_parent_doc_id = None
|
||||
if parent_zou_id is not None:
|
||||
parent_zou_id_dict = asset_dict_ids.get(parent_zou_id)
|
||||
if parent_zou_id_dict is not None:
|
||||
visual_parent_doc_id = (
|
||||
parent_zou_id_dict.get("_id")
|
||||
if parent_zou_id_dict else None)
|
||||
|
||||
if visual_parent_doc_id is None:
|
||||
# Find root folder doc ("Assets" or "Shots")
|
||||
root_folder_doc = get_asset_by_name(
|
||||
|
|
@ -225,12 +232,15 @@ def update_op_assets(
|
|||
item_data["parents"] = []
|
||||
ancestor_id = parent_zou_id
|
||||
while ancestor_id is not None:
|
||||
parent_doc = asset_doc_ids[ancestor_id]
|
||||
item_data["parents"].insert(0, parent_doc["name"])
|
||||
parent_doc = asset_dict_ids.get(ancestor_id)
|
||||
if parent_doc is not None:
|
||||
item_data["parents"].insert(0, parent_doc["name"])
|
||||
|
||||
# Get parent entity
|
||||
parent_entity = parent_doc["data"]["zou"]
|
||||
ancestor_id = parent_entity.get("parent_id")
|
||||
# Get parent entity
|
||||
parent_entity = parent_doc["data"]["zou"]
|
||||
ancestor_id = parent_entity.get("parent_id")
|
||||
else:
|
||||
ancestor_id = None
|
||||
|
||||
# Build OpenPype compatible name
|
||||
if item_type in ["Shot", "Sequence"] and parent_zou_id is not None:
|
||||
|
|
@ -239,7 +249,7 @@ def update_op_assets(
|
|||
item_name = f"{item_data['parents'][-1]}_{item['name']}"
|
||||
|
||||
# Update doc name
|
||||
asset_doc_ids[item["id"]]["name"] = item_name
|
||||
asset_dict_ids[item["id"]]["name"] = item_name
|
||||
else:
|
||||
item_name = item["name"]
|
||||
|
||||
|
|
@ -258,7 +268,7 @@ def update_op_assets(
|
|||
"$set": {
|
||||
"name": item_name,
|
||||
"data": item_data,
|
||||
"parent": project_doc["_id"],
|
||||
"parent": project_dict["_id"],
|
||||
}
|
||||
},
|
||||
)
|
||||
|
|
@ -278,13 +288,13 @@ def write_project_to_op(project: dict, dbcon: AvalonMongoDB) -> UpdateOne:
|
|||
UpdateOne: Update instance for the project
|
||||
"""
|
||||
project_name = project["name"]
|
||||
project_doc = get_project(project_name)
|
||||
if not project_doc:
|
||||
project_dict = get_project(project_name)
|
||||
if not project_dict:
|
||||
log.info("Project created: {}".format(project_name))
|
||||
project_doc = create_project(project_name, project_name)
|
||||
project_dict = create_project(project_name, project_name)
|
||||
|
||||
# Project data and tasks
|
||||
project_data = project_doc["data"] or {}
|
||||
project_data = project_dict["data"] or {}
|
||||
|
||||
# Build project code and update Kitsu
|
||||
project_code = project.get("code")
|
||||
|
|
@ -315,7 +325,7 @@ def write_project_to_op(project: dict, dbcon: AvalonMongoDB) -> UpdateOne:
|
|||
)
|
||||
|
||||
return UpdateOne(
|
||||
{"_id": project_doc["_id"]},
|
||||
{"_id": project_dict["_id"]},
|
||||
{
|
||||
"$set": {
|
||||
"config.tasks": {
|
||||
|
|
@ -398,7 +408,7 @@ def sync_project_from_kitsu(dbcon: AvalonMongoDB, project: dict):
|
|||
# Try to find project document
|
||||
project_name = project["name"]
|
||||
dbcon.Session["AVALON_PROJECT"] = project_name
|
||||
project_doc = get_project(project_name)
|
||||
project_dict = get_project(project_name)
|
||||
|
||||
# Query all assets of the local project
|
||||
zou_ids_and_asset_docs = {
|
||||
|
|
@ -406,7 +416,7 @@ def sync_project_from_kitsu(dbcon: AvalonMongoDB, project: dict):
|
|||
for asset_doc in get_assets(project_name)
|
||||
if asset_doc["data"].get("zou", {}).get("id")
|
||||
}
|
||||
zou_ids_and_asset_docs[project["id"]] = project_doc
|
||||
zou_ids_and_asset_docs[project["id"]] = project_dict
|
||||
|
||||
# Create entities root folders
|
||||
to_insert = [
|
||||
|
|
@ -453,7 +463,7 @@ def sync_project_from_kitsu(dbcon: AvalonMongoDB, project: dict):
|
|||
[
|
||||
UpdateOne({"_id": id}, update)
|
||||
for id, update in update_op_assets(
|
||||
dbcon, project, project_doc,
|
||||
dbcon, project, project_dict,
|
||||
all_entities, zou_ids_and_asset_docs
|
||||
)
|
||||
]
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue