From b2b248f818f5e1d2cd411fd14cf3e43d23875cda Mon Sep 17 00:00:00 2001 From: "felix.wang" Date: Fri, 10 Sep 2021 14:43:09 -0700 Subject: [PATCH] addressing comments PR#1996 --- openpype/api.py | 4 +- openpype/lib/__init__.py | 6 ++- openpype/lib/path_tools.py | 40 +++++++++++++++++-- .../action_create_project_structure.py | 2 +- openpype/settings/__init__.py | 4 +- openpype/settings/lib.py | 29 -------------- 6 files changed, 44 insertions(+), 41 deletions(-) diff --git a/openpype/api.py b/openpype/api.py index dcff127e9f..e4bbb104a3 100644 --- a/openpype/api.py +++ b/openpype/api.py @@ -4,7 +4,6 @@ from .settings import ( get_current_project_settings, get_anatomy_settings, get_environments, - get_project_basic_paths, SystemSettings, ProjectSettings @@ -26,7 +25,8 @@ from .lib import ( get_global_environments, get_local_site_id, change_openpype_mongo_url, - create_project_folders + create_project_folders, + get_project_basic_paths ) from .lib.mongo import ( diff --git a/openpype/lib/__init__.py b/openpype/lib/__init__.py index 4abfd69175..9bc68c9558 100644 --- a/openpype/lib/__init__.py +++ b/openpype/lib/__init__.py @@ -144,7 +144,8 @@ from .path_tools import ( version_up, get_version_from_path, get_last_version_from_path, - create_project_folders + create_project_folders, + get_project_basic_paths ) from .editorial import ( @@ -278,5 +279,6 @@ __all__ = [ "frames_to_secons", "frames_to_timecode", "make_sequence_collection", - "create_project_folders" + "create_project_folders", + "get_project_basic_paths" ] diff --git a/openpype/lib/path_tools.py b/openpype/lib/path_tools.py index fab0879759..42b5db9e25 100644 --- a/openpype/lib/path_tools.py +++ b/openpype/lib/path_tools.py @@ -1,13 +1,14 @@ +import json +import logging import os import re -import logging -from openpype.api import Anatomy + +from .anatomy import Anatomy +from openpype.settings import get_project_settings log = logging.getLogger(__name__) -pattern_array = re.compile(r"\[.*\]") -project_root_key = "__project_root__" def _rreplace(s, a, b, n=1): """Replace a with b in string s from right side n times.""" @@ -126,6 +127,8 @@ def get_last_version_from_path(path_dir, filter): def compute_paths(basic_paths_items, project_root): + pattern_array = re.compile(r"\[.*\]") + project_root_key = "__project_root__" output = [] for path_items in basic_paths_items: clean_items = [] @@ -162,3 +165,32 @@ def create_project_folders(basic_paths, project_name): else: log.debug("Creating folder: {}".format(full_path)) os.makedirs(full_path) + + +def _list_path_items(folder_structure): + output = [] + for key, value in folder_structure.items(): + if not value: + output.append(key) + else: + paths = _list_path_items(value) + for path in paths: + if not isinstance(path, (list, tuple)): + path = [path] + + output.append([key, *path]) + + return output + + +def get_project_basic_paths(project_name): + project_settings = get_project_settings(project_name) + folder_structure = ( + project_settings["global"]["project_folder_structure"] + ) + if not folder_structure: + return [] + + if isinstance(folder_structure, str): + folder_structure = json.loads(folder_structure) + return _list_path_items(folder_structure) diff --git a/openpype/modules/default_modules/ftrack/event_handlers_user/action_create_project_structure.py b/openpype/modules/default_modules/ftrack/event_handlers_user/action_create_project_structure.py index b0de792473..94f359c317 100644 --- a/openpype/modules/default_modules/ftrack/event_handlers_user/action_create_project_structure.py +++ b/openpype/modules/default_modules/ftrack/event_handlers_user/action_create_project_structure.py @@ -2,7 +2,7 @@ import os import re import json -from openpype.modules.ftrack.lib import BaseAction, statics_icon +from openpype_modules.ftrack.lib import BaseAction, statics_icon from openpype.api import get_project_basic_paths, create_project_folders diff --git a/openpype/settings/__init__.py b/openpype/settings/__init__.py index 0d6be51253..74f2684b2a 100644 --- a/openpype/settings/__init__.py +++ b/openpype/settings/__init__.py @@ -21,8 +21,7 @@ from .lib import ( get_current_project_settings, get_anatomy_settings, get_environments, - get_local_settings, - get_project_basic_paths + get_local_settings ) from .entities import ( SystemSettings, @@ -52,7 +51,6 @@ __all__ = ( "get_anatomy_settings", "get_environments", "get_local_settings", - "get_project_basic_paths", "SystemSettings", "ProjectSettings" ) diff --git a/openpype/settings/lib.py b/openpype/settings/lib.py index 749b337df7..60ed54bd4a 100644 --- a/openpype/settings/lib.py +++ b/openpype/settings/lib.py @@ -941,35 +941,6 @@ def get_general_environments(): return environments -def _list_path_items(folder_structure): - output = [] - for key, value in folder_structure.items(): - if not value: - output.append(key) - else: - paths = _list_path_items(value) - for path in paths: - if not isinstance(path, (list, tuple)): - path = [path] - - output.append([key, *path]) - - return output - - -def get_project_basic_paths(project_name): - project_settings = get_project_settings(project_name) - folder_structure = ( - project_settings["global"]["project_folder_structure"] - ) - if not folder_structure: - return [] - - if isinstance(folder_structure, str): - folder_structure = json.loads(folder_structure) - return _list_path_items(folder_structure) - - def clear_metadata_from_settings(values): """Remove all metadata keys from loaded settings.""" if isinstance(values, dict):