From f017d1a202ba2bfce52916d2e7b39dec91ba5bc7 Mon Sep 17 00:00:00 2001 From: Roy Nieterau Date: Thu, 14 May 2026 23:36:10 +0200 Subject: [PATCH] Implement settings using `apps_enum` enum resolver Uses: https://github.com/ynput/ayon-applications/pull/151 --- server/settings/main.py | 26 +++++++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/server/settings/main.py b/server/settings/main.py index d5f2e08..8780858 100644 --- a/server/settings/main.py +++ b/server/settings/main.py @@ -1,7 +1,7 @@ """Main settings for USD on AYON server.""" from ayon_server.settings import BaseSettingsModel, SettingsField - +from ayon_server.addons import AddonLibrary, ServerAddonDefinition from .publish_plugins import PublishPluginsModel, DEFAULT_PUBLISH_VALUES def platform_enum(): @@ -44,11 +44,28 @@ def file_logger_enum(): ] +async def apps_enum(project_name, addon, settings_variant): + addon_library = AddonLibrary.getinstance() + app_addons = addon_library.data.get("applications") + if not app_addons: + return [] + + app_addons: ServerAddonDefinition + addon = app_addons.latest + if not hasattr(addon, "get_applications_settings_enum"): + return [] + return await addon.get_applications_settings_enum( + project_name=project_name, + settings_variant=settings_variant, + ) + + class AppPlatformPathModel(BaseSettingsModel): _layout = "collapsed" name: str = SettingsField( - title="App Name", description="Application name, e.g. maya/2025" + title="App Name", description="Application name, e.g. maya/2025", + enum_resolver=apps_enum, ) app_alias_list: list[str] = SettingsField( @@ -56,6 +73,7 @@ class AppPlatformPathModel(BaseSettingsModel): description="Define a list of App Names that use the same " "resolver as the parent application", default_factory=list, + enum_resolver=apps_enum ) # TODO: we need to take into account here different linux flavors @@ -81,7 +99,9 @@ class AppPlatformURIModel(BaseSettingsModel): _layout = "expanded" app_name: str = SettingsField( - title="App Name", description="Application name, e.g. maya/2025" + title="App Name", + description="Application name, e.g. maya/2025", + enum_resolver=apps_enum ) # TODO: we need to take into account here different linux flavors platform: str = SettingsField(