class CoreAddon(BaseServerAddon):
settings_model = CoreSettings
async def get_default_settings(self):
settings_model_cls = self.get_settings_model()
return settings_model_cls(**DEFAULT_VALUES)
async def convert_settings_overrides(
self,
source_version: str,
overrides: dict[str, Any],
) -> dict[str, Any]:
convert_settings_overrides(source_version, overrides)
# Use super conversion
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 = []
if project_name:
# Add 'Create Project Folder Structure' action to folders.
output.append(
SimpleActionManifest(
identifier="core.createprojectstructure",
label="Create Project Folder Structure",
icon={
"type": "material-symbols",
"name": "create_new_folder",
},
order=100,
entity_type="project",
entity_subtypes=None,
allow_multiselection=False,
)
)
return output
async def execute_action(
self,
executor: ActionExecutor,
) -> ExecuteResponseModel:
"""Execute webactions."""
project_name = executor.context.project_name
if executor.identifier == "core.createprojectstructure":
if not project_name:
logger.error(
f"Can't execute {executor.identifier} because"
" of missing project name."
)
# Works since AYON server 1.8.3
if hasattr(executor, "get_simple_response"):
return await executor.get_simple_response(
"Missing project name", success=False
)
return
args = [
"create-project-structure", "--project", project_name,
]
# Works since AYON server 1.8.3
if hasattr(executor, "get_launcher_response"):
return await executor.get_launcher_response(args)
return await executor.get_launcher_action_response(args)
logger.debug(f"Unknown action: {executor.identifier}")
# Works since AYON server 1.8.3
if hasattr(executor, "get_simple_response"):
return await executor.get_simple_response(
"Unknown action", success=False
)