ayon-core/server_addon/deadline/server/settings/main.py
Petr Kalis 3b70243adc AY-745 - added Deadline credentials to Settings
This provides Site Settings fields for Deadline user name and password.
2024-03-19 14:50:13 +01:00

94 lines
2.5 KiB
Python

from pydantic import validator
from ayon_server.settings import (
BaseSettingsModel,
SettingsField,
ensure_unique_names,
)
from .publish_plugins import (
PublishPluginsModel,
DEFAULT_DEADLINE_PLUGINS_SETTINGS
)
class ServerListSubmodel(BaseSettingsModel):
_layout = "compact"
name: str = SettingsField(title="Name")
value: str = SettingsField(title="Value")
class LocalSubmodel(BaseSettingsModel):
"""Select your local and remote site"""
username: str = SettingsField("",
title="Username",
scope=["site"])
password: str = SettingsField("",
title="Password",
scope=["site"])
async def defined_deadline_ws_name_enum_resolver(
addon: "BaseServerAddon",
settings_variant: str = "production",
project_name: str | None = None,
) -> list[str]:
"""Provides list of names of configured Deadline webservice urls."""
if addon is None:
return []
settings = await addon.get_studio_settings(variant=settings_variant)
ws_urls = []
for deadline_url_item in settings.deadline_urls:
ws_urls.append(deadline_url_item.name)
return ws_urls
class DeadlineSettings(BaseSettingsModel):
deadline_urls: list[ServerListSubmodel] = SettingsField(
default_factory=list,
title="System Deadline Webservice URLs",
scope=["studio"],
)
deadline_server: str = SettingsField(
title="Project deadline server",
section="---",
scope=["project"],
enum_resolver=defined_deadline_ws_name_enum_resolver
)
require_authentication: bool = SettingsField(
False,
title="Require Authentication",
scope=["project"],
)
publish: PublishPluginsModel = SettingsField(
default_factory=PublishPluginsModel,
title="Publish Plugins",
)
local_settings: LocalSubmodel = SettingsField(
default_factory=LocalSubmodel,
title="Local setting",
scope=["site"],
description="This setting is only applicable for artist's site",
)
@validator("deadline_urls")
def validate_unique_names(cls, value):
ensure_unique_names(value)
return value
DEFAULT_VALUES = {
"deadline_urls": [
{
"name": "default",
"value": "http://127.0.0.1:8082"
}
],
"deadline_server": "default",
"publish": DEFAULT_DEADLINE_PLUGINS_SETTINGS
}