Merge pull request #1502 from ynput/bugfix/YN-0133_copy_folder_type

Library: copy folder type
This commit is contained in:
Petr Kalis 2025-10-23 17:01:50 +02:00 committed by GitHub
commit 39bf605e63
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -5,7 +5,7 @@ import itertools
import sys import sys
import traceback import traceback
import uuid import uuid
from typing import Optional, Dict from typing import Optional, Dict, Any
import ayon_api import ayon_api
from ayon_api.utils import create_entity_id from ayon_api.utils import create_entity_id
@ -650,10 +650,10 @@ class ProjectPushItemProcess:
def _create_folder( def _create_folder(
self, self,
src_folder_entity, src_folder_entity: dict[str, Any],
project_entity, project_entity: dict[str, Any],
parent_folder_entity, parent_folder_entity: dict[str, Any],
folder_name folder_name: str
): ):
parent_id = None parent_id = None
if parent_folder_entity: if parent_folder_entity:
@ -702,10 +702,14 @@ class ProjectPushItemProcess:
if new_folder_name != folder_name: if new_folder_name != folder_name:
folder_label = folder_name folder_label = folder_name
# TODO find out how to define folder type src_folder_type = src_folder_entity["folderType"]
dst_folder_type = self._get_dst_folder_type(
project_entity,
src_folder_type
)
folder_entity = new_folder_entity( folder_entity = new_folder_entity(
folder_name, folder_name,
"Folder", dst_folder_type,
parent_id=parent_id, parent_id=parent_id,
attribs=new_folder_attrib attribs=new_folder_attrib
) )
@ -727,6 +731,22 @@ class ProjectPushItemProcess:
folder_entity["path"] = "/".join([parent_path, folder_name]) folder_entity["path"] = "/".join([parent_path, folder_name])
return folder_entity return folder_entity
def _get_dst_folder_type(
self,
project_entity: dict[str, Any],
src_folder_type: str
) -> str:
"""Get new folder type."""
for folder_type in project_entity["folderTypes"]:
if folder_type["name"].lower() == src_folder_type.lower():
return folder_type["name"]
self._status.set_failed(
f"'{src_folder_type}' folder type is not configured in "
f"project Anatomy."
)
raise PushToProjectError(self._status.fail_reason)
def _fill_or_create_destination_folder(self): def _fill_or_create_destination_folder(self):
dst_project_name = self._item.dst_project_name dst_project_name = self._item.dst_project_name
dst_folder_id = self._item.dst_folder_id dst_folder_id = self._item.dst_folder_id
@ -1206,7 +1226,7 @@ class ProjectPushItemProcess:
if value_to_update: if value_to_update:
repre_context[context_key] = value_to_update repre_context[context_key] = value_to_update
if "task" not in formatting_data: if "task" not in formatting_data:
repre_context.pop("task") repre_context.pop("task", None)
return repre_context return repre_context