From 4f6ea8709226fd8a3ddfb12bc2aeedb1ae45b100 Mon Sep 17 00:00:00 2001 From: MustafaJafar Date: Thu, 13 Mar 2025 14:59:10 +0200 Subject: [PATCH] Implement `Create Project Folder Structure` web action --- server/__init__.py | 59 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) diff --git a/server/__init__.py b/server/__init__.py index d60f50f471..1ae5284f4d 100644 --- a/server/__init__.py +++ b/server/__init__.py @@ -1,6 +1,11 @@ from typing import Any from ayon_server.addons import BaseServerAddon +from ayon_server.actions import ( + ActionExecutor, + ExecuteResponseModel, + SimpleActionManifest, +) from .settings import ( CoreSettings, @@ -9,6 +14,9 @@ from .settings import ( ) +IDENTIFIER_PREFIX = "core.launch" + + class CoreAddon(BaseServerAddon): settings_model = CoreSettings @@ -26,3 +34,54 @@ class CoreAddon(BaseServerAddon): return await super().convert_settings_overrides( source_version, overrides ) + + async def get_simple_actions( + self, + project_name: str | None = None, + variant: str = "production", + ) -> list[SimpleActionManifest]: + """Return a list of simple actions provided by the addon""" + output = [] + + # Add 'Create Project Folder Structure' action to folders. + output.append( + SimpleActionManifest( + identifier=f"{IDENTIFIER_PREFIX}.createprojectstructure", + label="Create Project Folder Structure", + icon={ + "type": "material-symbols", + "name": "create_new_folder", + }, + order=100, + entity_type="folder", + entity_subtypes=None, + allow_multiselection=False, + ) + ) + + return output + + async def execute_action( + self, + executor: "ActionExecutor", + ) -> "ExecuteResponseModel": + """Execute actions. + + Note: + Executes CLI actions defined in the + addon's client code or other addons. + + """ + + project_name = executor.context.project_name + + if executor.identifier == \ + f"{IDENTIFIER_PREFIX}.createprojectstructure": + return await executor.get_launcher_action_response( + args=[ + "createprojectstructure", + "--project", project_name, + ] + ) + + raise ValueError(f"Unknown action: {executor.identifier}")