Skip to content

server

CoreAddon

Bases: BaseServerAddon

Source code in server/__init__.py
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
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
            )

execute_action(executor) async

Execute webactions.

Source code in server/__init__.py
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
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
        )

get_simple_actions(project_name=None, variant='production') async

Return a list of simple actions provided by the addon

Source code in server/__init__.py
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
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