From 0a207ad032273365f41b9032631d9eb26dfc0d5e Mon Sep 17 00:00:00 2001 From: Roy Nieterau <roy_nieterau@hotmail.com> Date: Thu, 20 Jun 2024 20:19:08 +0200 Subject: [PATCH 1/8] Add simple Create Project Structure launcher action --- .../create_project_folder_structure.py | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 client/ayon_core/plugins/actions/create_project_folder_structure.py diff --git a/client/ayon_core/plugins/actions/create_project_folder_structure.py b/client/ayon_core/plugins/actions/create_project_folder_structure.py new file mode 100644 index 0000000000..6df52abbcb --- /dev/null +++ b/client/ayon_core/plugins/actions/create_project_folder_structure.py @@ -0,0 +1,20 @@ +from ayon_core.pipeline import LauncherAction +from ayon_core.pipeline import project_folders + + +class CreateProjectStructureAction(LauncherAction): + """Create project structure as defined in settings.""" + name = "create_project_structure" + label = "Create Project Structure" + icon = "sitemap" + color = "#e0e1e1" + order = 1000 + + def is_compatible(self, selection) -> bool: + return ( + selection.is_project_selected and + not selection.is_folder_selected + ) + + def process(self, selection, **kwargs): + project_folders.create_project_folders(selection.project_name) \ No newline at end of file From 905241f6f4c0674c173b8070579431802b8f1b88 Mon Sep 17 00:00:00 2001 From: Roy Nieterau <roy_nieterau@hotmail.com> Date: Thu, 20 Jun 2024 20:25:24 +0200 Subject: [PATCH 2/8] Cosmetics --- .../plugins/actions/create_project_folder_structure.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/ayon_core/plugins/actions/create_project_folder_structure.py b/client/ayon_core/plugins/actions/create_project_folder_structure.py index 6df52abbcb..e555f08301 100644 --- a/client/ayon_core/plugins/actions/create_project_folder_structure.py +++ b/client/ayon_core/plugins/actions/create_project_folder_structure.py @@ -17,4 +17,4 @@ def is_compatible(self, selection) -> bool: ) def process(self, selection, **kwargs): - project_folders.create_project_folders(selection.project_name) \ No newline at end of file + project_folders.create_project_folders(selection.project_name) From fbd27357729146efed795db1302cc97897807621 Mon Sep 17 00:00:00 2001 From: Roy Nieterau <roy_nieterau@hotmail.com> Date: Thu, 20 Jun 2024 20:26:47 +0200 Subject: [PATCH 3/8] Cosmetics --- .../plugins/actions/create_project_folder_structure.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/client/ayon_core/plugins/actions/create_project_folder_structure.py b/client/ayon_core/plugins/actions/create_project_folder_structure.py index e555f08301..95c46099d7 100644 --- a/client/ayon_core/plugins/actions/create_project_folder_structure.py +++ b/client/ayon_core/plugins/actions/create_project_folder_structure.py @@ -1,5 +1,4 @@ -from ayon_core.pipeline import LauncherAction -from ayon_core.pipeline import project_folders +from ayon_core.pipeline import LauncherAction, project_folders class CreateProjectStructureAction(LauncherAction): From 18f750f39a893d93fe66c5447c7c033c531e8baa Mon Sep 17 00:00:00 2001 From: Roy Nieterau <roy_nieterau@hotmail.com> Date: Fri, 21 Jun 2024 09:38:57 +0200 Subject: [PATCH 4/8] Update client/ayon_core/plugins/actions/create_project_folder_structure.py Co-authored-by: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> --- .../plugins/actions/create_project_folder_structure.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/client/ayon_core/plugins/actions/create_project_folder_structure.py b/client/ayon_core/plugins/actions/create_project_folder_structure.py index 95c46099d7..c12db9b353 100644 --- a/client/ayon_core/plugins/actions/create_project_folder_structure.py +++ b/client/ayon_core/plugins/actions/create_project_folder_structure.py @@ -11,8 +11,8 @@ class CreateProjectStructureAction(LauncherAction): def is_compatible(self, selection) -> bool: return ( - selection.is_project_selected and - not selection.is_folder_selected + selection.is_project_selected + and not selection.is_folder_selected ) def process(self, selection, **kwargs): From 56fb5c4c021777664b64922b153499ee7cf8ee26 Mon Sep 17 00:00:00 2001 From: Roy Nieterau <roy_nieterau@hotmail.com> Date: Fri, 4 Oct 2024 11:08:56 +0200 Subject: [PATCH 5/8] Rename action to Create Project Folders --- ...ject_folder_structure.py => create_project_folders.py} | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) rename client/ayon_core/plugins/actions/{create_project_folder_structure.py => create_project_folders.py} (68%) diff --git a/client/ayon_core/plugins/actions/create_project_folder_structure.py b/client/ayon_core/plugins/actions/create_project_folders.py similarity index 68% rename from client/ayon_core/plugins/actions/create_project_folder_structure.py rename to client/ayon_core/plugins/actions/create_project_folders.py index c12db9b353..2dd26b578a 100644 --- a/client/ayon_core/plugins/actions/create_project_folder_structure.py +++ b/client/ayon_core/plugins/actions/create_project_folders.py @@ -1,10 +1,10 @@ from ayon_core.pipeline import LauncherAction, project_folders -class CreateProjectStructureAction(LauncherAction): - """Create project structure as defined in settings.""" - name = "create_project_structure" - label = "Create Project Structure" +class CreateProjectFoldersAction(LauncherAction): + """Create project folders as defined in settings.""" + name = "create_project_folders" + label = "Create Project Folders" icon = "sitemap" color = "#e0e1e1" order = 1000 From 8383fdefa40814aa40fe3ca1ef311f7261f8cebb Mon Sep 17 00:00:00 2001 From: Roy Nieterau <roy_nieterau@hotmail.com> Date: Fri, 4 Oct 2024 11:12:03 +0200 Subject: [PATCH 6/8] Hide action if setting is empty --- .../plugins/actions/create_project_folders.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/client/ayon_core/plugins/actions/create_project_folders.py b/client/ayon_core/plugins/actions/create_project_folders.py index 2dd26b578a..934a9169d7 100644 --- a/client/ayon_core/plugins/actions/create_project_folders.py +++ b/client/ayon_core/plugins/actions/create_project_folders.py @@ -10,6 +10,16 @@ class CreateProjectFoldersAction(LauncherAction): order = 1000 def is_compatible(self, selection) -> bool: + + # Disable when the project folder structure setting is empty + # in settings + project_settings = selection.get_project_settings() + folder_structure = ( + project_settings["core"]["project_folder_structure"] + ).strip() + if not folder_structure or folder_structure == "{}": + return False + return ( selection.is_project_selected and not selection.is_folder_selected From 5aa7e9c8caa7a400f0b01db3a12a8e9e49fbed64 Mon Sep 17 00:00:00 2001 From: Roy Nieterau <roy_nieterau@hotmail.com> Date: Fri, 4 Oct 2024 11:17:33 +0200 Subject: [PATCH 7/8] Add description to setting --- server/settings/main.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/server/settings/main.py b/server/settings/main.py index 249bab85fd..5eaacc7072 100644 --- a/server/settings/main.py +++ b/server/settings/main.py @@ -301,6 +301,11 @@ class CoreSettings(BaseSettingsModel): "{}", widget="textarea", title="Project folder structure", + description=( + "Defines project folders to create on 'Create project folders'." + " When empty, the action will be hidden from users in the" + " launcher because there is nothing to create." + ), section="---" ) project_environments: str = SettingsField( From 5065e0e8dbb4da9e4a05918abced984b2f077e5d Mon Sep 17 00:00:00 2001 From: Roy Nieterau <roy_nieterau@hotmail.com> Date: Fri, 4 Oct 2024 12:04:14 +0200 Subject: [PATCH 8/8] Explicit description to describe diff between ftrack and launcher --- server/settings/main.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/server/settings/main.py b/server/settings/main.py index 5eaacc7072..a5129e69af 100644 --- a/server/settings/main.py +++ b/server/settings/main.py @@ -303,8 +303,12 @@ class CoreSettings(BaseSettingsModel): title="Project folder structure", description=( "Defines project folders to create on 'Create project folders'." - " When empty, the action will be hidden from users in the" - " launcher because there is nothing to create." + "\n\n" + "- In the launcher, this only creates the folders on disk and " + " when the setting is empty it will be hidden from users in the" + " launcher.\n" + "- In `ayon-ftrack` this will create the folders on disk **and**" + " will also create ftrack entities. It is never hidden there." ), section="---" )