diff --git a/server_addon/aftereffects/server/settings/creator_plugins.py b/server_addon/aftereffects/server/settings/creator_plugins.py
index 9cb03b0b266..988a0365897 100644
--- a/server_addon/aftereffects/server/settings/creator_plugins.py
+++ b/server_addon/aftereffects/server/settings/creator_plugins.py
@@ -1,18 +1,16 @@
-from pydantic import Field
-
-from ayon_server.settings import BaseSettingsModel
+from ayon_server.settings import BaseSettingsModel, SettingsField
class CreateRenderPlugin(BaseSettingsModel):
- mark_for_review: bool = Field(True, title="Review")
- default_variants: list[str] = Field(
+ mark_for_review: bool = SettingsField(True, title="Review")
+ default_variants: list[str] = SettingsField(
default_factory=list,
title="Default Variants"
)
class AfterEffectsCreatorPlugins(BaseSettingsModel):
- RenderCreator: CreateRenderPlugin = Field(
+ RenderCreator: CreateRenderPlugin = SettingsField(
title="Create Render",
default_factory=CreateRenderPlugin,
)
diff --git a/server_addon/aftereffects/server/settings/imageio.py b/server_addon/aftereffects/server/settings/imageio.py
index 55160ffd11e..4657425c81c 100644
--- a/server_addon/aftereffects/server/settings/imageio.py
+++ b/server_addon/aftereffects/server/settings/imageio.py
@@ -1,29 +1,29 @@
-from pydantic import Field, validator
-from ayon_server.settings import BaseSettingsModel
+from pydantic import validator
+from ayon_server.settings import BaseSettingsModel, SettingsField
from ayon_server.settings.validators import ensure_unique_names
class ImageIOConfigModel(BaseSettingsModel):
- override_global_config: bool = Field(
+ override_global_config: bool = SettingsField(
False,
title="Override global OCIO config"
)
- filepath: list[str] = Field(
+ filepath: list[str] = SettingsField(
default_factory=list,
title="Config path"
)
class ImageIOFileRuleModel(BaseSettingsModel):
- name: str = Field("", title="Rule name")
- pattern: str = Field("", title="Regex pattern")
- colorspace: str = Field("", title="Colorspace name")
- ext: str = Field("", title="File extension")
+ name: str = SettingsField("", title="Rule name")
+ pattern: str = SettingsField("", title="Regex pattern")
+ colorspace: str = SettingsField("", title="Colorspace name")
+ ext: str = SettingsField("", title="File extension")
class ImageIOFileRulesModel(BaseSettingsModel):
- activate_host_rules: bool = Field(False)
- rules: list[ImageIOFileRuleModel] = Field(
+ activate_host_rules: bool = SettingsField(False)
+ rules: list[ImageIOFileRuleModel] = SettingsField(
default_factory=list,
title="Rules"
)
@@ -35,14 +35,14 @@ def validate_unique_outputs(cls, value):
class AfterEffectsImageIOModel(BaseSettingsModel):
- activate_host_color_management: bool = Field(
+ activate_host_color_management: bool = SettingsField(
True, title="Enable Color Management"
)
- ocio_config: ImageIOConfigModel = Field(
+ ocio_config: ImageIOConfigModel = SettingsField(
default_factory=ImageIOConfigModel,
title="OCIO config"
)
- file_rules: ImageIOFileRulesModel = Field(
+ file_rules: ImageIOFileRulesModel = SettingsField(
default_factory=ImageIOFileRulesModel,
title="File Rules"
)
diff --git a/server_addon/aftereffects/server/settings/main.py b/server_addon/aftereffects/server/settings/main.py
index 4edc46d259b..f30f4dc2580 100644
--- a/server_addon/aftereffects/server/settings/main.py
+++ b/server_addon/aftereffects/server/settings/main.py
@@ -1,5 +1,4 @@
-from pydantic import Field
-from ayon_server.settings import BaseSettingsModel
+from ayon_server.settings import BaseSettingsModel, SettingsField
from .imageio import AfterEffectsImageIOModel
from .creator_plugins import AfterEffectsCreatorPlugins
@@ -14,23 +13,23 @@
class AfterEffectsSettings(BaseSettingsModel):
"""AfterEffects Project Settings."""
- imageio: AfterEffectsImageIOModel = Field(
+ imageio: AfterEffectsImageIOModel = SettingsField(
default_factory=AfterEffectsImageIOModel,
title="OCIO config"
)
- create: AfterEffectsCreatorPlugins = Field(
+ create: AfterEffectsCreatorPlugins = SettingsField(
default_factory=AfterEffectsCreatorPlugins,
title="Creator plugins"
)
- publish: AfterEffectsPublishPlugins = Field(
+ publish: AfterEffectsPublishPlugins = SettingsField(
default_factory=AfterEffectsPublishPlugins,
title="Publish plugins"
)
- workfile_builder: WorkfileBuilderPlugin = Field(
+ workfile_builder: WorkfileBuilderPlugin = SettingsField(
default_factory=WorkfileBuilderPlugin,
title="Workfile Builder"
)
- templated_workfile_build: TemplatedWorkfileBuildModel = Field(
+ templated_workfile_build: TemplatedWorkfileBuildModel = SettingsField(
default_factory=TemplatedWorkfileBuildModel,
title="Templated Workfile Build Settings"
)
diff --git a/server_addon/aftereffects/server/settings/publish_plugins.py b/server_addon/aftereffects/server/settings/publish_plugins.py
index 78445d3223a..61d67f26d37 100644
--- a/server_addon/aftereffects/server/settings/publish_plugins.py
+++ b/server_addon/aftereffects/server/settings/publish_plugins.py
@@ -1,45 +1,43 @@
-from pydantic import Field
-
-from ayon_server.settings import BaseSettingsModel
+from ayon_server.settings import BaseSettingsModel, SettingsField
class CollectReviewPluginModel(BaseSettingsModel):
- enabled: bool = Field(True, title="Enabled")
+ enabled: bool = SettingsField(True, title="Enabled")
class ValidateSceneSettingsModel(BaseSettingsModel):
"""Validate naming of products and layers"""
# _isGroup = True
- enabled: bool = Field(True, title="Enabled")
- optional: bool = Field(False, title="Optional")
- active: bool = Field(True, title="Active")
- skip_resolution_check: list[str] = Field(
+ enabled: bool = SettingsField(True, title="Enabled")
+ optional: bool = SettingsField(False, title="Optional")
+ active: bool = SettingsField(True, title="Active")
+ skip_resolution_check: list[str] = SettingsField(
default_factory=list,
title="Skip Resolution Check for Tasks",
)
- skip_timelines_check: list[str] = Field(
+ skip_timelines_check: list[str] = SettingsField(
default_factory=list,
title="Skip Timeline Check for Tasks",
)
class ValidateContainersModel(BaseSettingsModel):
- enabled: bool = Field(True, title="Enabled")
- optional: bool = Field(True, title="Optional")
- active: bool = Field(True, title="Active")
+ enabled: bool = SettingsField(True, title="Enabled")
+ optional: bool = SettingsField(True, title="Optional")
+ active: bool = SettingsField(True, title="Active")
class AfterEffectsPublishPlugins(BaseSettingsModel):
- CollectReview: CollectReviewPluginModel = Field(
+ CollectReview: CollectReviewPluginModel = SettingsField(
default_factory=CollectReviewPluginModel,
title="Collect Review",
)
- ValidateSceneSettings: ValidateSceneSettingsModel = Field(
+ ValidateSceneSettings: ValidateSceneSettingsModel = SettingsField(
default_factory=ValidateSceneSettingsModel,
title="Validate Scene Settings",
)
- ValidateContainers: ValidateContainersModel = Field(
+ ValidateContainers: ValidateContainersModel = SettingsField(
default_factory=ValidateContainersModel,
title="Validate Containers",
)
diff --git a/server_addon/aftereffects/server/settings/templated_workfile_build.py b/server_addon/aftereffects/server/settings/templated_workfile_build.py
index e0245c8d069..5b71c2addc7 100644
--- a/server_addon/aftereffects/server/settings/templated_workfile_build.py
+++ b/server_addon/aftereffects/server/settings/templated_workfile_build.py
@@ -1,33 +1,33 @@
-from pydantic import Field
from ayon_server.settings import (
BaseSettingsModel,
task_types_enum,
+ SettingsField,
)
class TemplatedWorkfileProfileModel(BaseSettingsModel):
- task_types: list[str] = Field(
+ task_types: list[str] = SettingsField(
default_factory=list,
title="Task types",
enum_resolver=task_types_enum
)
- task_names: list[str] = Field(
+ task_names: list[str] = SettingsField(
default_factory=list,
title="Task names"
)
- path: str = Field(
+ path: str = SettingsField(
title="Path to template"
)
- keep_placeholder: bool = Field(
+ keep_placeholder: bool = SettingsField(
False,
title="Keep placeholders")
- create_first_version: bool = Field(
+ create_first_version: bool = SettingsField(
True,
title="Create first version"
)
class TemplatedWorkfileBuildModel(BaseSettingsModel):
- profiles: list[TemplatedWorkfileProfileModel] = Field(
+ profiles: list[TemplatedWorkfileProfileModel] = SettingsField(
default_factory=list
)
diff --git a/server_addon/aftereffects/server/settings/workfile_builder.py b/server_addon/aftereffects/server/settings/workfile_builder.py
index d45d3f7f24e..65f5ddd8935 100644
--- a/server_addon/aftereffects/server/settings/workfile_builder.py
+++ b/server_addon/aftereffects/server/settings/workfile_builder.py
@@ -1,25 +1,27 @@
-from pydantic import Field
-
-from ayon_server.settings import BaseSettingsModel, MultiplatformPathModel
+from ayon_server.settings import (
+ BaseSettingsModel,
+ SettingsField,
+ MultiplatformPathModel,
+)
class CustomBuilderTemplate(BaseSettingsModel):
- task_types: list[str] = Field(
+ task_types: list[str] = SettingsField(
default_factory=list,
title="Task types",
)
- template_path: MultiplatformPathModel = Field(
+ template_path: MultiplatformPathModel = SettingsField(
default_factory=MultiplatformPathModel
)
class WorkfileBuilderPlugin(BaseSettingsModel):
_title = "Workfile Builder"
- create_first_version: bool = Field(
+ create_first_version: bool = SettingsField(
False,
title="Create first workfile"
)
- custom_templates: list[CustomBuilderTemplate] = Field(
+ custom_templates: list[CustomBuilderTemplate] = SettingsField(
default_factory=list
)
diff --git a/server_addon/applications/server/settings.py b/server_addon/applications/server/settings.py
index 70c8b57c6a3..e0a59604c8c 100644
--- a/server_addon/applications/server/settings.py
+++ b/server_addon/applications/server/settings.py
@@ -1,7 +1,11 @@
import json
-from pydantic import Field, validator
+from pydantic import validator
-from ayon_server.settings import BaseSettingsModel, ensure_unique_names
+from ayon_server.settings import (
+ BaseSettingsModel,
+ SettingsField,
+ ensure_unique_names,
+)
from ayon_server.exceptions import BadRequestException
@@ -23,21 +27,23 @@ def validate_json_dict(value):
class MultiplatformStrList(BaseSettingsModel):
- windows: list[str] = Field(default_factory=list, title="Windows")
- linux: list[str] = Field(default_factory=list, title="Linux")
- darwin: list[str] = Field(default_factory=list, title="MacOS")
+ windows: list[str] = SettingsField(default_factory=list, title="Windows")
+ linux: list[str] = SettingsField(default_factory=list, title="Linux")
+ darwin: list[str] = SettingsField(default_factory=list, title="MacOS")
class AppVariant(BaseSettingsModel):
- name: str = Field("", title="Name")
- label: str = Field("", title="Label")
- executables: MultiplatformStrList = Field(
+ name: str = SettingsField("", title="Name")
+ label: str = SettingsField("", title="Label")
+ executables: MultiplatformStrList = SettingsField(
default_factory=MultiplatformStrList, title="Executables"
)
- arguments: MultiplatformStrList = Field(
+ arguments: MultiplatformStrList = SettingsField(
default_factory=MultiplatformStrList, title="Arguments"
)
- environment: str = Field("{}", title="Environment", widget="textarea")
+ environment: str = SettingsField(
+ "{}", title="Environment", widget="textarea"
+ )
@validator("environment")
def validate_json(cls, value):
@@ -45,17 +51,19 @@ def validate_json(cls, value):
class AppVariantWithPython(AppVariant):
- use_python_2: bool = Field(False, title="Use Python 2")
+ use_python_2: bool = SettingsField(False, title="Use Python 2")
class AppGroup(BaseSettingsModel):
- enabled: bool = Field(True)
- label: str = Field("", title="Label")
- host_name: str = Field("", title="Host name")
- icon: str = Field("", title="Icon")
- environment: str = Field("{}", title="Environment", widget="textarea")
+ enabled: bool = SettingsField(True)
+ label: str = SettingsField("", title="Label")
+ host_name: str = SettingsField("", title="Host name")
+ icon: str = SettingsField("", title="Icon")
+ environment: str = SettingsField(
+ "{}", title="Environment", widget="textarea"
+ )
- variants: list[AppVariant] = Field(
+ variants: list[AppVariant] = SettingsField(
default_factory=list,
title="Variants",
description="Different variants of the applications",
@@ -69,7 +77,7 @@ def validate_unique_name(cls, value):
class AppGroupWithPython(AppGroup):
- variants: list[AppVariantWithPython] = Field(
+ variants: list[AppVariantWithPython] = SettingsField(
default_factory=list,
title="Variants",
description="Different variants of the applications",
@@ -78,14 +86,16 @@ class AppGroupWithPython(AppGroup):
class AdditionalAppGroup(BaseSettingsModel):
- enabled: bool = Field(True)
- name: str = Field("", title="Name")
- label: str = Field("", title="Label")
- host_name: str = Field("", title="Host name")
- icon: str = Field("", title="Icon")
- environment: str = Field("{}", title="Environment", widget="textarea")
-
- variants: list[AppVariantWithPython] = Field(
+ enabled: bool = SettingsField(True)
+ name: str = SettingsField("", title="Name")
+ label: str = SettingsField("", title="Label")
+ host_name: str = SettingsField("", title="Host name")
+ icon: str = SettingsField("", title="Icon")
+ environment: str = SettingsField(
+ "{}", title="Environment", widget="textarea"
+ )
+
+ variants: list[AppVariantWithPython] = SettingsField(
default_factory=list,
title="Variants",
description="Different variants of the applications",
@@ -99,12 +109,16 @@ def validate_unique_name(cls, value):
class ToolVariantModel(BaseSettingsModel):
- name: str = Field("", title="Name")
- label: str = Field("", title="Label")
- host_names: list[str] = Field(default_factory=list, title="Hosts")
+ name: str = SettingsField("", title="Name")
+ label: str = SettingsField("", title="Label")
+ host_names: list[str] = SettingsField(default_factory=list, title="Hosts")
# TODO use applications enum if possible
- app_variants: list[str] = Field(default_factory=list, title="Applications")
- environment: str = Field("{}", title="Environments", widget="textarea")
+ app_variants: list[str] = SettingsField(
+ default_factory=list, title="Applications"
+ )
+ environment: str = SettingsField(
+ "{}", title="Environments", widget="textarea"
+ )
@validator("environment")
def validate_json(cls, value):
@@ -112,10 +126,12 @@ def validate_json(cls, value):
class ToolGroupModel(BaseSettingsModel):
- name: str = Field("", title="Name")
- label: str = Field("", title="Label")
- environment: str = Field("{}", title="Environments", widget="textarea")
- variants: list[ToolVariantModel] = Field(default_factory=list)
+ name: str = SettingsField("", title="Name")
+ label: str = SettingsField("", title="Label")
+ environment: str = SettingsField(
+ "{}", title="Environments", widget="textarea"
+ )
+ variants: list[ToolVariantModel] = SettingsField(default_factory=list)
@validator("environment")
def validate_json(cls, value):
@@ -130,47 +146,47 @@ def validate_unique_name(cls, value):
class ApplicationsSettings(BaseSettingsModel):
"""Applications settings"""
- maya: AppGroupWithPython = Field(
+ maya: AppGroupWithPython = SettingsField(
default_factory=AppGroupWithPython, title="Autodesk Maya")
- adsk_3dsmax: AppGroupWithPython = Field(
+ adsk_3dsmax: AppGroupWithPython = SettingsField(
default_factory=AppGroupWithPython, title="Autodesk 3ds Max")
- flame: AppGroupWithPython = Field(
+ flame: AppGroupWithPython = SettingsField(
default_factory=AppGroupWithPython, title="Autodesk Flame")
- nuke: AppGroupWithPython = Field(
+ nuke: AppGroupWithPython = SettingsField(
default_factory=AppGroupWithPython, title="Nuke")
- nukeassist: AppGroupWithPython = Field(
+ nukeassist: AppGroupWithPython = SettingsField(
default_factory=AppGroupWithPython, title="Nuke Assist")
- nukex: AppGroupWithPython = Field(
+ nukex: AppGroupWithPython = SettingsField(
default_factory=AppGroupWithPython, title="Nuke X")
- nukestudio: AppGroupWithPython = Field(
+ nukestudio: AppGroupWithPython = SettingsField(
default_factory=AppGroupWithPython, title="Nuke Studio")
- hiero: AppGroupWithPython = Field(
+ hiero: AppGroupWithPython = SettingsField(
default_factory=AppGroupWithPython, title="Hiero")
- fusion: AppGroup = Field(
+ fusion: AppGroup = SettingsField(
default_factory=AppGroupWithPython, title="Fusion")
- resolve: AppGroupWithPython = Field(
+ resolve: AppGroupWithPython = SettingsField(
default_factory=AppGroupWithPython, title="Resolve")
- houdini: AppGroupWithPython = Field(
+ houdini: AppGroupWithPython = SettingsField(
default_factory=AppGroupWithPython, title="Houdini")
- blender: AppGroup = Field(
+ blender: AppGroup = SettingsField(
default_factory=AppGroupWithPython, title="Blender")
- harmony: AppGroup = Field(
+ harmony: AppGroup = SettingsField(
default_factory=AppGroupWithPython, title="Harmony")
- tvpaint: AppGroup = Field(
+ tvpaint: AppGroup = SettingsField(
default_factory=AppGroupWithPython, title="TVPaint")
- photoshop: AppGroup = Field(
+ photoshop: AppGroup = SettingsField(
default_factory=AppGroupWithPython, title="Adobe Photoshop")
- aftereffects: AppGroup = Field(
+ aftereffects: AppGroup = SettingsField(
default_factory=AppGroupWithPython, title="Adobe After Effects")
- celaction: AppGroup = Field(
+ celaction: AppGroup = SettingsField(
default_factory=AppGroupWithPython, title="Celaction 2D")
- substancepainter: AppGroup = Field(
+ substancepainter: AppGroup = SettingsField(
default_factory=AppGroupWithPython, title="Substance Painter")
- unreal: AppGroup = Field(
+ unreal: AppGroup = SettingsField(
default_factory=AppGroupWithPython, title="Unreal Editor")
- wrap: AppGroup = Field(
+ wrap: AppGroup = SettingsField(
default_factory=AppGroupWithPython, title="Wrap")
- additional_apps: list[AdditionalAppGroup] = Field(
+ additional_apps: list[AdditionalAppGroup] = SettingsField(
default_factory=list, title="Additional Applications")
@validator("additional_apps")
@@ -180,16 +196,16 @@ def validate_unique_name(cls, value):
class ApplicationsAddonSettings(BaseSettingsModel):
- applications: ApplicationsSettings = Field(
+ applications: ApplicationsSettings = SettingsField(
default_factory=ApplicationsSettings,
title="Applications",
scope=["studio"]
)
- tool_groups: list[ToolGroupModel] = Field(
+ tool_groups: list[ToolGroupModel] = SettingsField(
default_factory=list,
scope=["studio"]
)
- only_available: bool = Field(
+ only_available: bool = SettingsField(
True, title="Show only available applications")
@validator("tool_groups")
diff --git a/server_addon/blender/server/settings/imageio.py b/server_addon/blender/server/settings/imageio.py
index a6d3c5ff643..412d01638fc 100644
--- a/server_addon/blender/server/settings/imageio.py
+++ b/server_addon/blender/server/settings/imageio.py
@@ -1,29 +1,29 @@
-from pydantic import Field, validator
-from ayon_server.settings import BaseSettingsModel
+from pydantic import validator
+from ayon_server.settings import BaseSettingsModel, SettingsField
from ayon_server.settings.validators import ensure_unique_names
class ImageIOConfigModel(BaseSettingsModel):
- override_global_config: bool = Field(
+ override_global_config: bool = SettingsField(
False,
title="Override global OCIO config"
)
- filepath: list[str] = Field(
+ filepath: list[str] = SettingsField(
default_factory=list,
title="Config path"
)
class ImageIOFileRuleModel(BaseSettingsModel):
- name: str = Field("", title="Rule name")
- pattern: str = Field("", title="Regex pattern")
- colorspace: str = Field("", title="Colorspace name")
- ext: str = Field("", title="File extension")
+ name: str = SettingsField("", title="Rule name")
+ pattern: str = SettingsField("", title="Regex pattern")
+ colorspace: str = SettingsField("", title="Colorspace name")
+ ext: str = SettingsField("", title="File extension")
class ImageIOFileRulesModel(BaseSettingsModel):
- activate_host_rules: bool = Field(False)
- rules: list[ImageIOFileRuleModel] = Field(
+ activate_host_rules: bool = SettingsField(False)
+ rules: list[ImageIOFileRuleModel] = SettingsField(
default_factory=list,
title="Rules"
)
@@ -35,14 +35,14 @@ def validate_unique_outputs(cls, value):
class BlenderImageIOModel(BaseSettingsModel):
- activate_host_color_management: bool = Field(
+ activate_host_color_management: bool = SettingsField(
True, title="Enable Color Management"
)
- ocio_config: ImageIOConfigModel = Field(
+ ocio_config: ImageIOConfigModel = SettingsField(
default_factory=ImageIOConfigModel,
title="OCIO config"
)
- file_rules: ImageIOFileRulesModel = Field(
+ file_rules: ImageIOFileRulesModel = SettingsField(
default_factory=ImageIOFileRulesModel,
title="File Rules"
)
diff --git a/server_addon/blender/server/settings/main.py b/server_addon/blender/server/settings/main.py
index 3d53162e453..aed9b5632db 100644
--- a/server_addon/blender/server/settings/main.py
+++ b/server_addon/blender/server/settings/main.py
@@ -1,6 +1,6 @@
-from pydantic import Field
from ayon_server.settings import (
BaseSettingsModel,
+ SettingsField,
TemplateWorkfileBaseOptions,
)
@@ -16,38 +16,38 @@
class UnitScaleSettingsModel(BaseSettingsModel):
- enabled: bool = Field(True, title="Enabled")
- apply_on_opening: bool = Field(
+ enabled: bool = SettingsField(True, title="Enabled")
+ apply_on_opening: bool = SettingsField(
False, title="Apply on Opening Existing Files")
- base_file_unit_scale: float = Field(
+ base_file_unit_scale: float = SettingsField(
1.0, title="Base File Unit Scale"
)
class BlenderSettings(BaseSettingsModel):
- unit_scale_settings: UnitScaleSettingsModel = Field(
+ unit_scale_settings: UnitScaleSettingsModel = SettingsField(
default_factory=UnitScaleSettingsModel,
title="Set Unit Scale"
)
- set_resolution_startup: bool = Field(
+ set_resolution_startup: bool = SettingsField(
True,
title="Set Resolution on Startup"
)
- set_frames_startup: bool = Field(
+ set_frames_startup: bool = SettingsField(
True,
title="Set Start/End Frames and FPS on Startup"
)
- imageio: BlenderImageIOModel = Field(
+ imageio: BlenderImageIOModel = SettingsField(
default_factory=BlenderImageIOModel,
title="Color Management (ImageIO)"
)
- RenderSettings: RenderSettingsModel = Field(
+ RenderSettings: RenderSettingsModel = SettingsField(
default_factory=RenderSettingsModel, title="Render Settings")
- workfile_builder: TemplateWorkfileBaseOptions = Field(
+ workfile_builder: TemplateWorkfileBaseOptions = SettingsField(
default_factory=TemplateWorkfileBaseOptions,
title="Workfile Builder"
)
- publish: PublishPuginsModel = Field(
+ publish: PublishPuginsModel = SettingsField(
default_factory=PublishPuginsModel,
title="Publish Plugins"
)
diff --git a/server_addon/blender/server/settings/publish_plugins.py b/server_addon/blender/server/settings/publish_plugins.py
index 9a1e0c681e3..c2a989dd55b 100644
--- a/server_addon/blender/server/settings/publish_plugins.py
+++ b/server_addon/blender/server/settings/publish_plugins.py
@@ -1,7 +1,7 @@
import json
-from pydantic import Field, validator
+from pydantic import validator
from ayon_server.exceptions import BadRequestException
-from ayon_server.settings import BaseSettingsModel
+from ayon_server.settings import BaseSettingsModel, SettingsField
def validate_json_dict(value):
@@ -21,36 +21,36 @@ def validate_json_dict(value):
class ValidatePluginModel(BaseSettingsModel):
- enabled: bool = Field(True)
- optional: bool = Field(title="Optional")
- active: bool = Field(title="Active")
+ enabled: bool = SettingsField(True)
+ optional: bool = SettingsField(title="Optional")
+ active: bool = SettingsField(title="Active")
class ValidateFileSavedModel(BaseSettingsModel):
- enabled: bool = Field(title="ValidateFileSaved")
- optional: bool = Field(title="Optional")
- active: bool = Field(title="Active")
- exclude_families: list[str] = Field(
+ enabled: bool = SettingsField(title="ValidateFileSaved")
+ optional: bool = SettingsField(title="Optional")
+ active: bool = SettingsField(title="Active")
+ exclude_families: list[str] = SettingsField(
default_factory=list,
title="Exclude product types"
)
class ExtractBlendModel(BaseSettingsModel):
- enabled: bool = Field(True)
- optional: bool = Field(title="Optional")
- active: bool = Field(title="Active")
- families: list[str] = Field(
+ enabled: bool = SettingsField(True)
+ optional: bool = SettingsField(title="Optional")
+ active: bool = SettingsField(title="Active")
+ families: list[str] = SettingsField(
default_factory=list,
title="Families"
)
class ExtractPlayblastModel(BaseSettingsModel):
- enabled: bool = Field(True)
- optional: bool = Field(title="Optional")
- active: bool = Field(title="Active")
- presets: str = Field("", title="Presets", widget="textarea")
+ enabled: bool = SettingsField(True)
+ optional: bool = SettingsField(title="Optional")
+ active: bool = SettingsField(title="Active")
+ presets: str = SettingsField("", title="Presets", widget="textarea")
@validator("presets")
def validate_json(cls, value):
@@ -58,83 +58,83 @@ def validate_json(cls, value):
class PublishPuginsModel(BaseSettingsModel):
- ValidateCameraZeroKeyframe: ValidatePluginModel = Field(
+ ValidateCameraZeroKeyframe: ValidatePluginModel = SettingsField(
default_factory=ValidatePluginModel,
title="Validate Camera Zero Keyframe",
section="General Validators"
)
- ValidateFileSaved: ValidateFileSavedModel = Field(
+ ValidateFileSaved: ValidateFileSavedModel = SettingsField(
default_factory=ValidateFileSavedModel,
title="Validate File Saved",
)
- ValidateInstanceEmpty: ValidatePluginModel = Field(
+ ValidateInstanceEmpty: ValidatePluginModel = SettingsField(
default_factory=ValidatePluginModel,
title="Validate Instance is not Empty"
)
- ValidateMeshHasUvs: ValidatePluginModel = Field(
+ ValidateMeshHasUvs: ValidatePluginModel = SettingsField(
default_factory=ValidatePluginModel,
title="Validate Mesh Has Uvs",
section="Model Validators"
)
- ValidateMeshNoNegativeScale: ValidatePluginModel = Field(
+ ValidateMeshNoNegativeScale: ValidatePluginModel = SettingsField(
default_factory=ValidatePluginModel,
title="Validate Mesh No Negative Scale"
)
- ValidateTransformZero: ValidatePluginModel = Field(
+ ValidateTransformZero: ValidatePluginModel = SettingsField(
default_factory=ValidatePluginModel,
title="Validate Transform Zero"
)
- ValidateNoColonsInName: ValidatePluginModel = Field(
+ ValidateNoColonsInName: ValidatePluginModel = SettingsField(
default_factory=ValidatePluginModel,
title="Validate No Colons In Name"
)
- ValidateRenderCameraIsSet: ValidatePluginModel = Field(
+ ValidateRenderCameraIsSet: ValidatePluginModel = SettingsField(
default_factory=ValidatePluginModel,
title="Validate Render Camera Is Set",
section="Render Validators"
)
- ValidateDeadlinePublish: ValidatePluginModel = Field(
+ ValidateDeadlinePublish: ValidatePluginModel = SettingsField(
default_factory=ValidatePluginModel,
title="Validate Render Output for Deadline",
)
- ExtractBlend: ExtractBlendModel = Field(
+ ExtractBlend: ExtractBlendModel = SettingsField(
default_factory=ExtractBlendModel,
title="Extract Blend",
section="Extractors"
)
- ExtractFBX: ValidatePluginModel = Field(
+ ExtractFBX: ValidatePluginModel = SettingsField(
default_factory=ValidatePluginModel,
title="Extract FBX"
)
- ExtractModelABC: ValidatePluginModel = Field(
+ ExtractModelABC: ValidatePluginModel = SettingsField(
default_factory=ValidatePluginModel,
title="Extract ABC"
)
- ExtractBlendAnimation: ValidatePluginModel = Field(
+ ExtractBlendAnimation: ValidatePluginModel = SettingsField(
default_factory=ValidatePluginModel,
title="Extract Blend Animation"
)
- ExtractAnimationFBX: ValidatePluginModel = Field(
+ ExtractAnimationFBX: ValidatePluginModel = SettingsField(
default_factory=ValidatePluginModel,
title="Extract Animation FBX"
)
- ExtractCamera: ValidatePluginModel = Field(
+ ExtractCamera: ValidatePluginModel = SettingsField(
default_factory=ValidatePluginModel,
title="Extract Camera"
)
- ExtractCameraABC: ValidatePluginModel = Field(
+ ExtractCameraABC: ValidatePluginModel = SettingsField(
default_factory=ValidatePluginModel,
title="Extract Camera as ABC"
)
- ExtractLayout: ValidatePluginModel = Field(
+ ExtractLayout: ValidatePluginModel = SettingsField(
default_factory=ValidatePluginModel,
title="Extract Layout (JSON)"
)
- ExtractThumbnail: ExtractPlayblastModel = Field(
+ ExtractThumbnail: ExtractPlayblastModel = SettingsField(
default_factory=ExtractPlayblastModel,
title="Extract Thumbnail"
)
- ExtractPlayblast: ExtractPlayblastModel = Field(
+ ExtractPlayblast: ExtractPlayblastModel = SettingsField(
default_factory=ExtractPlayblastModel,
title="Extract Playblast"
)
diff --git a/server_addon/blender/server/settings/render_settings.py b/server_addon/blender/server/settings/render_settings.py
index f62013982e8..f91ba1627ab 100644
--- a/server_addon/blender/server/settings/render_settings.py
+++ b/server_addon/blender/server/settings/render_settings.py
@@ -1,7 +1,5 @@
"""Providing models and values for Blender Render Settings."""
-from pydantic import Field
-
-from ayon_server.settings import BaseSettingsModel
+from ayon_server.settings import BaseSettingsModel, SettingsField
def aov_separators_enum():
@@ -58,8 +56,8 @@ class CustomPassesModel(BaseSettingsModel):
"""Custom Passes"""
_layout = "compact"
- attribute: str = Field("", title="Attribute name")
- value: str = Field(
+ attribute: str = SettingsField("", title="Attribute name")
+ value: str = SettingsField(
"COLOR",
title="Type",
enum_resolver=custom_passes_types_enum
@@ -67,28 +65,28 @@ class CustomPassesModel(BaseSettingsModel):
class RenderSettingsModel(BaseSettingsModel):
- default_render_image_folder: str = Field(
+ default_render_image_folder: str = SettingsField(
title="Default Render Image Folder"
)
- aov_separator: str = Field(
+ aov_separator: str = SettingsField(
"underscore",
title="AOV Separator Character",
enum_resolver=aov_separators_enum
)
- image_format: str = Field(
+ image_format: str = SettingsField(
"exr",
title="Image Format",
enum_resolver=image_format_enum
)
- multilayer_exr: bool = Field(
+ multilayer_exr: bool = SettingsField(
title="Multilayer (EXR)"
)
- aov_list: list[str] = Field(
+ aov_list: list[str] = SettingsField(
default_factory=list,
enum_resolver=aov_list_enum,
title="AOVs to create"
)
- custom_passes: list[CustomPassesModel] = Field(
+ custom_passes: list[CustomPassesModel] = SettingsField(
default_factory=list,
title="Custom Passes",
description=(
diff --git a/server_addon/celaction/server/imageio.py b/server_addon/celaction/server/imageio.py
index 72da441528c..1e1ac6ff529 100644
--- a/server_addon/celaction/server/imageio.py
+++ b/server_addon/celaction/server/imageio.py
@@ -1,29 +1,29 @@
-from pydantic import Field, validator
-from ayon_server.settings import BaseSettingsModel
+from pydantic import validator
+from ayon_server.settings import BaseSettingsModel, SettingsField
from ayon_server.settings.validators import ensure_unique_names
class ImageIOConfigModel(BaseSettingsModel):
- override_global_config: bool = Field(
+ override_global_config: bool = SettingsField(
False,
title="Override global OCIO config"
)
- filepath: list[str] = Field(
+ filepath: list[str] = SettingsField(
default_factory=list,
title="Config path"
)
class ImageIOFileRuleModel(BaseSettingsModel):
- name: str = Field("", title="Rule name")
- pattern: str = Field("", title="Regex pattern")
- colorspace: str = Field("", title="Colorspace name")
- ext: str = Field("", title="File extension")
+ name: str = SettingsField("", title="Rule name")
+ pattern: str = SettingsField("", title="Regex pattern")
+ colorspace: str = SettingsField("", title="Colorspace name")
+ ext: str = SettingsField("", title="File extension")
class ImageIOFileRulesModel(BaseSettingsModel):
- activate_host_rules: bool = Field(False)
- rules: list[ImageIOFileRuleModel] = Field(
+ activate_host_rules: bool = SettingsField(False)
+ rules: list[ImageIOFileRuleModel] = SettingsField(
default_factory=list,
title="Rules"
)
@@ -35,14 +35,14 @@ def validate_unique_outputs(cls, value):
class CelActionImageIOModel(BaseSettingsModel):
- activate_host_color_management: bool = Field(
+ activate_host_color_management: bool = SettingsField(
True, title="Enable Color Management"
)
- ocio_config: ImageIOConfigModel = Field(
+ ocio_config: ImageIOConfigModel = SettingsField(
default_factory=ImageIOConfigModel,
title="OCIO config"
)
- file_rules: ImageIOFileRulesModel = Field(
+ file_rules: ImageIOFileRulesModel = SettingsField(
default_factory=ImageIOFileRulesModel,
title="File Rules"
)
diff --git a/server_addon/celaction/server/settings.py b/server_addon/celaction/server/settings.py
index 68d1d2dc312..9208948a075 100644
--- a/server_addon/celaction/server/settings.py
+++ b/server_addon/celaction/server/settings.py
@@ -1,18 +1,17 @@
-from pydantic import Field
-from ayon_server.settings import BaseSettingsModel
+from ayon_server.settings import BaseSettingsModel, SettingsField
from .imageio import CelActionImageIOModel
class CollectRenderPathModel(BaseSettingsModel):
- output_extension: str = Field(
+ output_extension: str = SettingsField(
"",
title="Output render file extension"
)
- anatomy_template_key_render_files: str = Field(
+ anatomy_template_key_render_files: str = SettingsField(
"",
title="Anatomy template key: render files"
)
- anatomy_template_key_metadata: str = Field(
+ anatomy_template_key_metadata: str = SettingsField(
"",
title="Anatomy template key: metadata job file"
)
@@ -36,7 +35,7 @@ def _workfile_submit_overrides():
class WorkfileModel(BaseSettingsModel):
- submission_overrides: list[str] = Field(
+ submission_overrides: list[str] = SettingsField(
default_factory=list,
title="Submission workfile overrides",
enum_resolver=_workfile_submit_overrides
@@ -44,21 +43,21 @@ class WorkfileModel(BaseSettingsModel):
class PublishPuginsModel(BaseSettingsModel):
- CollectRenderPath: CollectRenderPathModel = Field(
+ CollectRenderPath: CollectRenderPathModel = SettingsField(
default_factory=CollectRenderPathModel,
title="Collect Render Path"
)
class CelActionSettings(BaseSettingsModel):
- imageio: CelActionImageIOModel = Field(
+ imageio: CelActionImageIOModel = SettingsField(
default_factory=CelActionImageIOModel,
title="Color Management (ImageIO)"
)
- workfile: WorkfileModel = Field(
+ workfile: WorkfileModel = SettingsField(
title="Workfile"
)
- publish: PublishPuginsModel = Field(
+ publish: PublishPuginsModel = SettingsField(
default_factory=PublishPuginsModel,
title="Publish plugins",
)
diff --git a/server_addon/clockify/server/settings.py b/server_addon/clockify/server/settings.py
index 9067cd42435..c01d4c1545d 100644
--- a/server_addon/clockify/server/settings.py
+++ b/server_addon/clockify/server/settings.py
@@ -1,9 +1,8 @@
-from pydantic import Field
-from ayon_server.settings import BaseSettingsModel
+from ayon_server.settings import BaseSettingsModel, SettingsField
class ClockifySettings(BaseSettingsModel):
- workspace_name: str = Field(
+ workspace_name: str = SettingsField(
"",
title="Workspace name",
scope=["studio"]
diff --git a/server_addon/core/server/settings/main.py b/server_addon/core/server/settings/main.py
index f9e572cbf97..1bdfcefe196 100644
--- a/server_addon/core/server/settings/main.py
+++ b/server_addon/core/server/settings/main.py
@@ -1,7 +1,8 @@
import json
-from pydantic import Field, validator
+from pydantic import validator
from ayon_server.settings import (
BaseSettingsModel,
+ SettingsField,
MultiplatformPathListModel,
ensure_unique_names,
task_types_enum,
@@ -14,35 +15,35 @@
class DiskMappingItemModel(BaseSettingsModel):
_layout = "expanded"
- source: str = Field("", title="Source")
- destination: str = Field("", title="Destination")
+ source: str = SettingsField("", title="Source")
+ destination: str = SettingsField("", title="Destination")
class DiskMappingModel(BaseSettingsModel):
- windows: list[DiskMappingItemModel] = Field(
+ windows: list[DiskMappingItemModel] = SettingsField(
title="Windows",
default_factory=list,
)
- linux: list[DiskMappingItemModel] = Field(
+ linux: list[DiskMappingItemModel] = SettingsField(
title="Linux",
default_factory=list,
)
- darwin: list[DiskMappingItemModel] = Field(
+ darwin: list[DiskMappingItemModel] = SettingsField(
title="MacOS",
default_factory=list,
)
class ImageIOFileRuleModel(BaseSettingsModel):
- name: str = Field("", title="Rule name")
- pattern: str = Field("", title="Regex pattern")
- colorspace: str = Field("", title="Colorspace name")
- ext: str = Field("", title="File extension")
+ name: str = SettingsField("", title="Rule name")
+ pattern: str = SettingsField("", title="Regex pattern")
+ colorspace: str = SettingsField("", title="Colorspace name")
+ ext: str = SettingsField("", title="File extension")
class CoreImageIOFileRulesModel(BaseSettingsModel):
- activate_global_file_rules: bool = Field(False)
- rules: list[ImageIOFileRuleModel] = Field(
+ activate_global_file_rules: bool = SettingsField(False)
+ rules: list[ImageIOFileRuleModel] = SettingsField(
default_factory=list,
title="Rules"
)
@@ -54,19 +55,21 @@ def validate_unique_outputs(cls, value):
class CoreImageIOConfigModel(BaseSettingsModel):
- filepath: list[str] = Field(default_factory=list, title="Config path")
+ filepath: list[str] = SettingsField(
+ default_factory=list, title="Config path"
+ )
class CoreImageIOBaseModel(BaseSettingsModel):
- activate_global_color_management: bool = Field(
+ activate_global_color_management: bool = SettingsField(
False,
title="Enable Color Management"
)
- ocio_config: CoreImageIOConfigModel = Field(
+ ocio_config: CoreImageIOConfigModel = SettingsField(
default_factory=CoreImageIOConfigModel,
title="OCIO config"
)
- file_rules: CoreImageIOFileRulesModel = Field(
+ file_rules: CoreImageIOFileRulesModel = SettingsField(
default_factory=CoreImageIOFileRulesModel,
title="File Rules"
)
@@ -74,28 +77,28 @@ class CoreImageIOBaseModel(BaseSettingsModel):
class VersionStartCategoryProfileModel(BaseSettingsModel):
_layout = "expanded"
- host_names: list[str] = Field(
+ host_names: list[str] = SettingsField(
default_factory=list,
title="Host names"
)
- task_types: list[str] = Field(
+ task_types: list[str] = SettingsField(
default_factory=list,
title="Task types",
enum_resolver=task_types_enum
)
- task_names: list[str] = Field(
+ task_names: list[str] = SettingsField(
default_factory=list,
title="Task names"
)
- product_types: list[str] = Field(
+ product_types: list[str] = SettingsField(
default_factory=list,
title="Product types"
)
- product_names: list[str] = Field(
+ product_names: list[str] = SettingsField(
default_factory=list,
title="Product names"
)
- version_start: int = Field(
+ version_start: int = SettingsField(
1,
title="Version Start",
ge=0
@@ -103,52 +106,52 @@ class VersionStartCategoryProfileModel(BaseSettingsModel):
class VersionStartCategoryModel(BaseSettingsModel):
- profiles: list[VersionStartCategoryProfileModel] = Field(
+ profiles: list[VersionStartCategoryProfileModel] = SettingsField(
default_factory=list,
title="Profiles"
)
class CoreSettings(BaseSettingsModel):
- studio_name: str = Field("", title="Studio name", scope=["studio"])
- studio_code: str = Field("", title="Studio code", scope=["studio"])
- environments: str = Field(
+ studio_name: str = SettingsField("", title="Studio name", scope=["studio"])
+ studio_code: str = SettingsField("", title="Studio code", scope=["studio"])
+ environments: str = SettingsField(
"{}",
title="Global environment variables",
widget="textarea",
scope=["studio"],
)
- disk_mapping: DiskMappingModel = Field(
+ disk_mapping: DiskMappingModel = SettingsField(
default_factory=DiskMappingModel,
title="Disk mapping",
)
- tools: GlobalToolsModel = Field(
+ tools: GlobalToolsModel = SettingsField(
default_factory=GlobalToolsModel,
title="Tools"
)
- version_start_category: VersionStartCategoryModel = Field(
+ version_start_category: VersionStartCategoryModel = SettingsField(
default_factory=VersionStartCategoryModel,
title="Version start"
)
- imageio: CoreImageIOBaseModel = Field(
+ imageio: CoreImageIOBaseModel = SettingsField(
default_factory=CoreImageIOBaseModel,
title="Color Management (ImageIO)"
)
- publish: PublishPuginsModel = Field(
+ publish: PublishPuginsModel = SettingsField(
default_factory=PublishPuginsModel,
title="Publish plugins"
)
- project_plugins: MultiplatformPathListModel = Field(
+ project_plugins: MultiplatformPathListModel = SettingsField(
default_factory=MultiplatformPathListModel,
title="Additional Project Plugin Paths",
)
- project_folder_structure: str = Field(
+ project_folder_structure: str = SettingsField(
"{}",
widget="textarea",
title="Project folder structure",
section="---"
)
- project_environments: str = Field(
+ project_environments: str = SettingsField(
"{}",
widget="textarea",
title="Project environments",
diff --git a/server_addon/core/server/settings/publish_plugins.py b/server_addon/core/server/settings/publish_plugins.py
index 0c9b9c96ef5..7aa86aafa6f 100644
--- a/server_addon/core/server/settings/publish_plugins.py
+++ b/server_addon/core/server/settings/publish_plugins.py
@@ -1,7 +1,8 @@
-from pydantic import Field, validator
+from pydantic import validator
from ayon_server.settings import (
BaseSettingsModel,
+ SettingsField,
MultiplatformPathModel,
normalize_name,
ensure_unique_names,
@@ -13,46 +14,46 @@
class ValidateBaseModel(BaseSettingsModel):
_isGroup = True
- enabled: bool = Field(True)
- optional: bool = Field(True, title="Optional")
- active: bool = Field(True, title="Active")
+ enabled: bool = SettingsField(True)
+ optional: bool = SettingsField(True, title="Optional")
+ active: bool = SettingsField(True, title="Active")
class CollectAnatomyInstanceDataModel(BaseSettingsModel):
_isGroup = True
- follow_workfile_version: bool = Field(
+ follow_workfile_version: bool = SettingsField(
True, title="Follow workfile version"
)
class CollectAudioModel(BaseSettingsModel):
_isGroup = True
- enabled: bool = Field(True)
- audio_product_name: str = Field(
+ enabled: bool = SettingsField(True)
+ audio_product_name: str = SettingsField(
"", title="Name of audio variant"
)
class CollectSceneVersionModel(BaseSettingsModel):
_isGroup = True
- hosts: list[str] = Field(
+ hosts: list[str] = SettingsField(
default_factory=list,
title="Host names"
)
- skip_hosts_headless_publish: list[str] = Field(
+ skip_hosts_headless_publish: list[str] = SettingsField(
default_factory=list,
title="Skip for host if headless publish"
)
class CollectCommentPIModel(BaseSettingsModel):
- enabled: bool = Field(True)
- families: list[str] = Field(default_factory=list, title="Families")
+ enabled: bool = SettingsField(True)
+ families: list[str] = SettingsField(default_factory=list, title="Families")
class CollectFramesFixDefModel(BaseSettingsModel):
- enabled: bool = Field(True)
- rewrite_version_enable: bool = Field(
+ enabled: bool = SettingsField(True)
+ rewrite_version_enable: bool = SettingsField(
True,
title="Show 'Rewrite latest version' toggle"
)
@@ -60,15 +61,15 @@ class CollectFramesFixDefModel(BaseSettingsModel):
class ValidateIntentProfile(BaseSettingsModel):
_layout = "expanded"
- hosts: list[str] = Field(default_factory=list, title="Host names")
- task_types: list[str] = Field(
+ hosts: list[str] = SettingsField(default_factory=list, title="Host names")
+ task_types: list[str] = SettingsField(
default_factory=list,
title="Task types",
enum_resolver=task_types_enum
)
- tasks: list[str] = Field(default_factory=list, title="Task names")
+ tasks: list[str] = SettingsField(default_factory=list, title="Task names")
# TODO This was 'validate' in v3
- validate_intent: bool = Field(True, title="Validate")
+ validate_intent: bool = SettingsField(True, title="Validate")
class ValidateIntentModel(BaseSettingsModel):
@@ -79,16 +80,16 @@ class ValidateIntentModel(BaseSettingsModel):
"""
_isGroup = True
- enabled: bool = Field(False)
- profiles: list[ValidateIntentProfile] = Field(default_factory=list)
+ enabled: bool = SettingsField(False)
+ profiles: list[ValidateIntentProfile] = SettingsField(default_factory=list)
class ExtractThumbnailFFmpegModel(BaseSettingsModel):
- input: list[str] = Field(
+ input: list[str] = SettingsField(
default_factory=list,
title="FFmpeg input arguments"
)
- output: list[str] = Field(
+ output: list[str] = SettingsField(
default_factory=list,
title="FFmpeg input arguments"
)
@@ -96,7 +97,7 @@ class ExtractThumbnailFFmpegModel(BaseSettingsModel):
class ResizeItemModel(BaseSettingsModel):
_layout = "expanded"
- width: int = Field(
+ width: int = SettingsField(
1920,
ge=0,
le=100000,
@@ -104,7 +105,7 @@ class ResizeItemModel(BaseSettingsModel):
description="Width and Height must be both set to higher value than 0"
" else source resolution is used."
)
- height: int = Field(
+ height: int = SettingsField(
1080,
title="Height",
ge=0,
@@ -121,7 +122,7 @@ class ResizeItemModel(BaseSettingsModel):
class ResizeModel(BaseSettingsModel):
_layout = "expanded"
- type: str = Field(
+ type: str = SettingsField(
title="Type",
description="Type of resizing",
enum_resolver=lambda: _resize_types_enum,
@@ -129,7 +130,7 @@ class ResizeModel(BaseSettingsModel):
default="source"
)
- resize: ResizeItemModel = Field(
+ resize: ResizeItemModel = SettingsField(
default_factory=ResizeItemModel,
title="Resize"
)
@@ -143,18 +144,18 @@ class ResizeModel(BaseSettingsModel):
class DisplayAndViewModel(BaseSettingsModel):
_layout = "expanded"
- display: str = Field(
+ display: str = SettingsField(
"default",
title="Display"
)
- view: str = Field(
+ view: str = SettingsField(
"sRGB",
title="View"
)
class ExtractThumbnailOIIODefaultsModel(BaseSettingsModel):
- type: str = Field(
+ type: str = SettingsField(
title="Type",
description="Transcoding type",
enum_resolver=lambda: _thumbnail_oiio_transcoding_type,
@@ -162,11 +163,11 @@ class ExtractThumbnailOIIODefaultsModel(BaseSettingsModel):
default="colorspace"
)
- colorspace: str = Field(
+ colorspace: str = SettingsField(
"",
title="Colorspace"
)
- display_and_view: DisplayAndViewModel = Field(
+ display_and_view: DisplayAndViewModel = SettingsField(
default_factory=DisplayAndViewModel,
title="Display&View"
)
@@ -174,30 +175,30 @@ class ExtractThumbnailOIIODefaultsModel(BaseSettingsModel):
class ExtractThumbnailModel(BaseSettingsModel):
_isGroup = True
- enabled: bool = Field(True)
- integrate_thumbnail: bool = Field(
+ enabled: bool = SettingsField(True)
+ integrate_thumbnail: bool = SettingsField(
True,
title="Integrate Thumbnail Representation"
)
- target_size: ResizeModel = Field(
+ target_size: ResizeModel = SettingsField(
default_factory=ResizeModel,
title="Target size"
)
- background_color: ColorRGBA_uint8 = Field(
+ background_color: ColorRGBA_uint8 = SettingsField(
(0, 0, 0, 0.0),
title="Background color"
)
- duration_split: float = Field(
+ duration_split: float = SettingsField(
0.5,
title="Duration split",
ge=0.0,
le=1.0
)
- oiiotool_defaults: ExtractThumbnailOIIODefaultsModel = Field(
+ oiiotool_defaults: ExtractThumbnailOIIODefaultsModel = SettingsField(
default_factory=ExtractThumbnailOIIODefaultsModel,
title="OIIOtool defaults"
)
- ffmpeg_args: ExtractThumbnailFFmpegModel = Field(
+ ffmpeg_args: ExtractThumbnailFFmpegModel = SettingsField(
default_factory=ExtractThumbnailFFmpegModel
)
@@ -210,57 +211,59 @@ def _extract_oiio_transcoding_type():
class OIIOToolArgumentsModel(BaseSettingsModel):
- additional_command_args: list[str] = Field(
+ additional_command_args: list[str] = SettingsField(
default_factory=list, title="Arguments")
class ExtractOIIOTranscodeOutputModel(BaseSettingsModel):
_layout = "expanded"
- name: str = Field("", title="Name")
- extension: str = Field("", title="Extension")
- transcoding_type: str = Field(
+ name: str = SettingsField("", title="Name")
+ extension: str = SettingsField("", title="Extension")
+ transcoding_type: str = SettingsField(
"colorspace",
title="Transcoding type",
enum_resolver=_extract_oiio_transcoding_type
)
- colorspace: str = Field("", title="Colorspace")
- display: str = Field("", title="Display")
- view: str = Field("", title="View")
- oiiotool_args: OIIOToolArgumentsModel = Field(
+ colorspace: str = SettingsField("", title="Colorspace")
+ display: str = SettingsField("", title="Display")
+ view: str = SettingsField("", title="View")
+ oiiotool_args: OIIOToolArgumentsModel = SettingsField(
default_factory=OIIOToolArgumentsModel,
title="OIIOtool arguments")
- tags: list[str] = Field(default_factory=list, title="Tags")
- custom_tags: list[str] = Field(default_factory=list, title="Custom Tags")
+ tags: list[str] = SettingsField(default_factory=list, title="Tags")
+ custom_tags: list[str] = SettingsField(
+ default_factory=list, title="Custom Tags"
+ )
class ExtractOIIOTranscodeProfileModel(BaseSettingsModel):
- product_types: list[str] = Field(
+ product_types: list[str] = SettingsField(
default_factory=list,
title="Product types"
)
- hosts: list[str] = Field(
+ hosts: list[str] = SettingsField(
default_factory=list,
title="Host names"
)
- task_types: list[str] = Field(
+ task_types: list[str] = SettingsField(
default_factory=list,
title="Task types",
enum_resolver=task_types_enum
)
- task_names: list[str] = Field(
+ task_names: list[str] = SettingsField(
default_factory=list,
title="Task names"
)
- product_names: list[str] = Field(
+ product_names: list[str] = SettingsField(
default_factory=list,
title="Product names"
)
- delete_original: bool = Field(
+ delete_original: bool = SettingsField(
True,
title="Delete Original Representation"
)
- outputs: list[ExtractOIIOTranscodeOutputModel] = Field(
+ outputs: list[ExtractOIIOTranscodeOutputModel] = SettingsField(
default_factory=list,
title="Output Definitions",
)
@@ -272,27 +275,27 @@ def validate_unique_outputs(cls, value):
class ExtractOIIOTranscodeModel(BaseSettingsModel):
- enabled: bool = Field(True)
- profiles: list[ExtractOIIOTranscodeProfileModel] = Field(
+ enabled: bool = SettingsField(True)
+ profiles: list[ExtractOIIOTranscodeProfileModel] = SettingsField(
default_factory=list, title="Profiles"
)
# --- [START] Extract Review ---
class ExtractReviewFFmpegModel(BaseSettingsModel):
- video_filters: list[str] = Field(
+ video_filters: list[str] = SettingsField(
default_factory=list,
title="Video filters"
)
- audio_filters: list[str] = Field(
+ audio_filters: list[str] = SettingsField(
default_factory=list,
title="Audio filters"
)
- input: list[str] = Field(
+ input: list[str] = SettingsField(
default_factory=list,
title="Input arguments"
)
- output: list[str] = Field(
+ output: list[str] = SettingsField(
default_factory=list,
title="Output arguments"
)
@@ -316,11 +319,13 @@ def extract_review_filter_enum():
class ExtractReviewFilterModel(BaseSettingsModel):
- families: list[str] = Field(default_factory=list, title="Families")
- product_names: list[str] = Field(
+ families: list[str] = SettingsField(default_factory=list, title="Families")
+ product_names: list[str] = SettingsField(
default_factory=list, title="Product names")
- custom_tags: list[str] = Field(default_factory=list, title="Custom Tags")
- single_frame_filter: str = Field(
+ custom_tags: list[str] = SettingsField(
+ default_factory=list, title="Custom Tags"
+ )
+ single_frame_filter: str = SettingsField(
"everytime",
description=(
"Use output always / only if input is 1 frame"
@@ -331,24 +336,24 @@ class ExtractReviewFilterModel(BaseSettingsModel):
class ExtractReviewLetterBox(BaseSettingsModel):
- enabled: bool = Field(True)
- ratio: float = Field(
+ enabled: bool = SettingsField(True)
+ ratio: float = SettingsField(
0.0,
title="Ratio",
ge=0.0,
le=10000.0
)
- fill_color: ColorRGBA_uint8 = Field(
+ fill_color: ColorRGBA_uint8 = SettingsField(
(0, 0, 0, 0.0),
title="Fill Color"
)
- line_thickness: int = Field(
+ line_thickness: int = SettingsField(
0,
title="Line Thickness",
ge=0,
le=1000
)
- line_color: ColorRGBA_uint8 = Field(
+ line_color: ColorRGBA_uint8 = SettingsField(
(0, 0, 0, 0.0),
title="Line Color"
)
@@ -356,29 +361,29 @@ class ExtractReviewLetterBox(BaseSettingsModel):
class ExtractReviewOutputDefModel(BaseSettingsModel):
_layout = "expanded"
- name: str = Field("", title="Name")
- ext: str = Field("", title="Output extension")
+ name: str = SettingsField("", title="Name")
+ ext: str = SettingsField("", title="Output extension")
# TODO use some different source of tags
- tags: list[str] = Field(default_factory=list, title="Tags")
- burnins: list[str] = Field(
+ tags: list[str] = SettingsField(default_factory=list, title="Tags")
+ burnins: list[str] = SettingsField(
default_factory=list, title="Link to a burnin by name"
)
- ffmpeg_args: ExtractReviewFFmpegModel = Field(
+ ffmpeg_args: ExtractReviewFFmpegModel = SettingsField(
default_factory=ExtractReviewFFmpegModel,
title="FFmpeg arguments"
)
- filter: ExtractReviewFilterModel = Field(
+ filter: ExtractReviewFilterModel = SettingsField(
default_factory=ExtractReviewFilterModel,
title="Additional output filtering"
)
- overscan_crop: str = Field(
+ overscan_crop: str = SettingsField(
"",
title="Overscan crop",
description=(
"Crop input overscan. See the documentation for more information."
)
)
- overscan_color: ColorRGBA_uint8 = Field(
+ overscan_color: ColorRGBA_uint8 = SettingsField(
(0, 0, 0, 0.0),
title="Overscan color",
description=(
@@ -386,7 +391,7 @@ class ExtractReviewOutputDefModel(BaseSettingsModel):
" same as output aspect ratio."
)
)
- width: int = Field(
+ width: int = SettingsField(
0,
ge=0,
le=100000,
@@ -396,13 +401,13 @@ class ExtractReviewOutputDefModel(BaseSettingsModel):
" value than 0 else source resolution is used."
)
)
- height: int = Field(
+ height: int = SettingsField(
0,
title="Output height",
ge=0,
le=100000,
)
- scale_pixel_aspect: bool = Field(
+ scale_pixel_aspect: bool = SettingsField(
True,
title="Scale pixel aspect",
description=(
@@ -410,7 +415,7 @@ class ExtractReviewOutputDefModel(BaseSettingsModel):
" Usefull for anamorph reviews."
)
)
- bg_color: ColorRGBA_uint8 = Field(
+ bg_color: ColorRGBA_uint8 = SettingsField(
(0, 0, 0, 0.0),
description=(
"Background color is used only when input have transparency"
@@ -418,7 +423,7 @@ class ExtractReviewOutputDefModel(BaseSettingsModel):
),
title="Background color",
)
- letter_box: ExtractReviewLetterBox = Field(
+ letter_box: ExtractReviewLetterBox = SettingsField(
default_factory=ExtractReviewLetterBox,
title="Letter Box"
)
@@ -431,14 +436,14 @@ def validate_name(cls, value):
class ExtractReviewProfileModel(BaseSettingsModel):
_layout = "expanded"
- product_types: list[str] = Field(
+ product_types: list[str] = SettingsField(
default_factory=list, title="Product types"
)
# TODO use hosts enum
- hosts: list[str] = Field(
+ hosts: list[str] = SettingsField(
default_factory=list, title="Host names"
)
- outputs: list[ExtractReviewOutputDefModel] = Field(
+ outputs: list[ExtractReviewOutputDefModel] = SettingsField(
default_factory=list, title="Output Definitions"
)
@@ -450,8 +455,8 @@ def validate_unique_outputs(cls, value):
class ExtractReviewModel(BaseSettingsModel):
_isGroup = True
- enabled: bool = Field(True)
- profiles: list[ExtractReviewProfileModel] = Field(
+ enabled: bool = SettingsField(True)
+ profiles: list[ExtractReviewProfileModel] = SettingsField(
default_factory=list,
title="Profiles"
)
@@ -460,30 +465,30 @@ class ExtractReviewModel(BaseSettingsModel):
# --- [Start] Extract Burnin ---
class ExtractBurninOptionsModel(BaseSettingsModel):
- font_size: int = Field(0, ge=0, title="Font size")
- font_color: ColorRGBA_uint8 = Field(
+ font_size: int = SettingsField(0, ge=0, title="Font size")
+ font_color: ColorRGBA_uint8 = SettingsField(
(255, 255, 255, 1.0),
title="Font color"
)
- bg_color: ColorRGBA_uint8 = Field(
+ bg_color: ColorRGBA_uint8 = SettingsField(
(0, 0, 0, 1.0),
title="Background color"
)
- x_offset: int = Field(0, title="X Offset")
- y_offset: int = Field(0, title="Y Offset")
- bg_padding: int = Field(0, title="Padding around text")
- font_filepath: MultiplatformPathModel = Field(
+ x_offset: int = SettingsField(0, title="X Offset")
+ y_offset: int = SettingsField(0, title="Y Offset")
+ bg_padding: int = SettingsField(0, title="Padding around text")
+ font_filepath: MultiplatformPathModel = SettingsField(
default_factory=MultiplatformPathModel,
title="Font file path"
)
class ExtractBurninDefFilter(BaseSettingsModel):
- families: list[str] = Field(
+ families: list[str] = SettingsField(
default_factory=list,
title="Families"
)
- tags: list[str] = Field(
+ tags: list[str] = SettingsField(
default_factory=list,
title="Tags"
)
@@ -492,14 +497,14 @@ class ExtractBurninDefFilter(BaseSettingsModel):
class ExtractBurninDef(BaseSettingsModel):
_isGroup = True
_layout = "expanded"
- name: str = Field("")
- TOP_LEFT: str = Field("", topic="Top Left")
- TOP_CENTERED: str = Field("", topic="Top Centered")
- TOP_RIGHT: str = Field("", topic="Top Right")
- BOTTOM_LEFT: str = Field("", topic="Bottom Left")
- BOTTOM_CENTERED: str = Field("", topic="Bottom Centered")
- BOTTOM_RIGHT: str = Field("", topic="Bottom Right")
- filter: ExtractBurninDefFilter = Field(
+ name: str = SettingsField("")
+ TOP_LEFT: str = SettingsField("", topic="Top Left")
+ TOP_CENTERED: str = SettingsField("", topic="Top Centered")
+ TOP_RIGHT: str = SettingsField("", topic="Top Right")
+ BOTTOM_LEFT: str = SettingsField("", topic="Bottom Left")
+ BOTTOM_CENTERED: str = SettingsField("", topic="Bottom Centered")
+ BOTTOM_RIGHT: str = SettingsField("", topic="Bottom Right")
+ filter: ExtractBurninDefFilter = SettingsField(
default_factory=ExtractBurninDefFilter,
title="Additional filtering"
)
@@ -512,28 +517,28 @@ def validate_name(cls, value):
class ExtractBurninProfile(BaseSettingsModel):
_layout = "expanded"
- product_types: list[str] = Field(
+ product_types: list[str] = SettingsField(
default_factory=list,
title="Produt types"
)
- hosts: list[str] = Field(
+ hosts: list[str] = SettingsField(
default_factory=list,
title="Host names"
)
- task_types: list[str] = Field(
+ task_types: list[str] = SettingsField(
default_factory=list,
title="Task types",
enum_resolver=task_types_enum
)
- task_names: list[str] = Field(
+ task_names: list[str] = SettingsField(
default_factory=list,
title="Task names"
)
- product_names: list[str] = Field(
+ product_names: list[str] = SettingsField(
default_factory=list,
title="Product names"
)
- burnins: list[ExtractBurninDef] = Field(
+ burnins: list[ExtractBurninDef] = SettingsField(
default_factory=list,
title="Burnins"
)
@@ -547,12 +552,12 @@ def validate_unique_outputs(cls, value):
class ExtractBurninModel(BaseSettingsModel):
_isGroup = True
- enabled: bool = Field(True)
- options: ExtractBurninOptionsModel = Field(
+ enabled: bool = SettingsField(True)
+ options: ExtractBurninOptionsModel = SettingsField(
default_factory=ExtractBurninOptionsModel,
title="Burnin formatting options"
)
- profiles: list[ExtractBurninProfile] = Field(
+ profiles: list[ExtractBurninProfile] = SettingsField(
default_factory=list,
title="Profiles"
)
@@ -561,24 +566,24 @@ class ExtractBurninModel(BaseSettingsModel):
class PreIntegrateThumbnailsProfile(BaseSettingsModel):
_isGroup = True
- product_types: list[str] = Field(
+ product_types: list[str] = SettingsField(
default_factory=list,
title="Product types",
)
- hosts: list[str] = Field(
+ hosts: list[str] = SettingsField(
default_factory=list,
title="Hosts",
)
- task_types: list[str] = Field(
+ task_types: list[str] = SettingsField(
default_factory=list,
title="Task types",
enum_resolver=task_types_enum
)
- product_names: list[str] = Field(
+ product_names: list[str] = SettingsField(
default_factory=list,
title="Product names",
)
- integrate_thumbnail: bool = Field(True)
+ integrate_thumbnail: bool = SettingsField(True)
class PreIntegrateThumbnailsModel(BaseSettingsModel):
@@ -589,26 +594,26 @@ class PreIntegrateThumbnailsModel(BaseSettingsModel):
"""
_isGroup = True
- enabled: bool = Field(True)
- integrate_profiles: list[PreIntegrateThumbnailsProfile] = Field(
+ enabled: bool = SettingsField(True)
+ integrate_profiles: list[PreIntegrateThumbnailsProfile] = SettingsField(
default_factory=list,
title="Integrate profiles"
)
class IntegrateProductGroupProfile(BaseSettingsModel):
- product_types: list[str] = Field(
+ product_types: list[str] = SettingsField(
default_factory=list,
title="Product types"
)
- hosts: list[str] = Field(default_factory=list, title="Hosts")
- task_types: list[str] = Field(
+ hosts: list[str] = SettingsField(default_factory=list, title="Hosts")
+ task_types: list[str] = SettingsField(
default_factory=list,
title="Task types",
enum_resolver=task_types_enum
)
- tasks: list[str] = Field(default_factory=list, title="Task names")
- template: str = Field("", title="Template")
+ tasks: list[str] = SettingsField(default_factory=list, title="Task names")
+ template: str = SettingsField("", title="Template")
class IntegrateProductGroupModel(BaseSettingsModel):
@@ -622,163 +627,169 @@ class IntegrateProductGroupModel(BaseSettingsModel):
"""
_isGroup = True
- product_grouping_profiles: list[IntegrateProductGroupProfile] = Field(
- default_factory=list,
- title="Product group profiles"
+ product_grouping_profiles: list[IntegrateProductGroupProfile] = (
+ SettingsField(
+ default_factory=list,
+ title="Product group profiles"
+ )
)
class IntegrateANProductGroupProfileModel(BaseSettingsModel):
- product_types: list[str] = Field(
+ product_types: list[str] = SettingsField(
default_factory=list,
title="Product types"
)
- hosts: list[str] = Field(
+ hosts: list[str] = SettingsField(
default_factory=list,
title="Hosts"
)
- task_types: list[str] = Field(
+ task_types: list[str] = SettingsField(
default_factory=list,
title="Task types",
enum_resolver=task_types_enum
)
- tasks: list[str] = Field(
+ tasks: list[str] = SettingsField(
default_factory=list,
title="Task names"
)
- template: str = Field("", title="Template")
+ template: str = SettingsField("", title="Template")
class IntegrateANTemplateNameProfileModel(BaseSettingsModel):
- product_types: list[str] = Field(
+ product_types: list[str] = SettingsField(
default_factory=list,
title="Product types"
)
- hosts: list[str] = Field(
+ hosts: list[str] = SettingsField(
default_factory=list,
title="Hosts"
)
- task_types: list[str] = Field(
+ task_types: list[str] = SettingsField(
default_factory=list,
title="Task types",
enum_resolver=task_types_enum
)
- tasks: list[str] = Field(
+ tasks: list[str] = SettingsField(
default_factory=list,
title="Task names"
)
- template_name: str = Field("", title="Template name")
+ template_name: str = SettingsField("", title="Template name")
class IntegrateHeroTemplateNameProfileModel(BaseSettingsModel):
- product_types: list[str] = Field(
+ product_types: list[str] = SettingsField(
default_factory=list,
title="Product types"
)
- hosts: list[str] = Field(
+ hosts: list[str] = SettingsField(
default_factory=list,
title="Hosts"
)
- task_types: list[str] = Field(
+ task_types: list[str] = SettingsField(
default_factory=list,
title="Task types",
enum_resolver=task_types_enum
)
- task_names: list[str] = Field(
+ task_names: list[str] = SettingsField(
default_factory=list,
title="Task names"
)
- template_name: str = Field("", title="Template name")
+ template_name: str = SettingsField("", title="Template name")
class IntegrateHeroVersionModel(BaseSettingsModel):
_isGroup = True
- enabled: bool = Field(True)
- optional: bool = Field(False, title="Optional")
- active: bool = Field(True, title="Active")
- families: list[str] = Field(default_factory=list, title="Families")
+ enabled: bool = SettingsField(True)
+ optional: bool = SettingsField(False, title="Optional")
+ active: bool = SettingsField(True, title="Active")
+ families: list[str] = SettingsField(default_factory=list, title="Families")
class CleanUpModel(BaseSettingsModel):
_isGroup = True
- paterns: list[str] = Field(
+ paterns: list[str] = SettingsField(
default_factory=list,
title="Patterns (regex)"
)
- remove_temp_renders: bool = Field(False, title="Remove Temp renders")
+ remove_temp_renders: bool = SettingsField(
+ False, title="Remove Temp renders"
+ )
class CleanUpFarmModel(BaseSettingsModel):
_isGroup = True
- enabled: bool = Field(True)
+ enabled: bool = SettingsField(True)
class PublishPuginsModel(BaseSettingsModel):
- CollectAnatomyInstanceData: CollectAnatomyInstanceDataModel = Field(
- default_factory=CollectAnatomyInstanceDataModel,
- title="Collect Anatomy Instance Data"
+ CollectAnatomyInstanceData: CollectAnatomyInstanceDataModel = (
+ SettingsField(
+ default_factory=CollectAnatomyInstanceDataModel,
+ title="Collect Anatomy Instance Data"
+ )
)
- CollectAudio: CollectAudioModel = Field(
+ CollectAudio: CollectAudioModel = SettingsField(
default_factory=CollectAudioModel,
title="Collect Audio"
)
- CollectSceneVersion: CollectSceneVersionModel = Field(
+ CollectSceneVersion: CollectSceneVersionModel = SettingsField(
default_factory=CollectSceneVersionModel,
title="Collect Version from Workfile"
)
- collect_comment_per_instance: CollectCommentPIModel = Field(
+ collect_comment_per_instance: CollectCommentPIModel = SettingsField(
default_factory=CollectCommentPIModel,
title="Collect comment per instance",
)
- CollectFramesFixDef: CollectFramesFixDefModel = Field(
+ CollectFramesFixDef: CollectFramesFixDefModel = SettingsField(
default_factory=CollectFramesFixDefModel,
title="Collect Frames to Fix",
)
- ValidateEditorialAssetName: ValidateBaseModel = Field(
+ ValidateEditorialAssetName: ValidateBaseModel = SettingsField(
default_factory=ValidateBaseModel,
title="Validate Editorial Asset Name"
)
- ValidateVersion: ValidateBaseModel = Field(
+ ValidateVersion: ValidateBaseModel = SettingsField(
default_factory=ValidateBaseModel,
title="Validate Version"
)
- ValidateIntent: ValidateIntentModel = Field(
+ ValidateIntent: ValidateIntentModel = SettingsField(
default_factory=ValidateIntentModel,
title="Validate Intent"
)
- ExtractThumbnail: ExtractThumbnailModel = Field(
+ ExtractThumbnail: ExtractThumbnailModel = SettingsField(
default_factory=ExtractThumbnailModel,
title="Extract Thumbnail"
)
- ExtractOIIOTranscode: ExtractOIIOTranscodeModel = Field(
+ ExtractOIIOTranscode: ExtractOIIOTranscodeModel = SettingsField(
default_factory=ExtractOIIOTranscodeModel,
title="Extract OIIO Transcode"
)
- ExtractReview: ExtractReviewModel = Field(
+ ExtractReview: ExtractReviewModel = SettingsField(
default_factory=ExtractReviewModel,
title="Extract Review"
)
- ExtractBurnin: ExtractBurninModel = Field(
+ ExtractBurnin: ExtractBurninModel = SettingsField(
default_factory=ExtractBurninModel,
title="Extract Burnin"
)
- PreIntegrateThumbnails: PreIntegrateThumbnailsModel = Field(
+ PreIntegrateThumbnails: PreIntegrateThumbnailsModel = SettingsField(
default_factory=PreIntegrateThumbnailsModel,
title="Override Integrate Thumbnail Representations"
)
- IntegrateProductGroup: IntegrateProductGroupModel = Field(
+ IntegrateProductGroup: IntegrateProductGroupModel = SettingsField(
default_factory=IntegrateProductGroupModel,
title="Integrate Product Group"
)
- IntegrateHeroVersion: IntegrateHeroVersionModel = Field(
+ IntegrateHeroVersion: IntegrateHeroVersionModel = SettingsField(
default_factory=IntegrateHeroVersionModel,
title="Integrate Hero Version"
)
- CleanUp: CleanUpModel = Field(
+ CleanUp: CleanUpModel = SettingsField(
default_factory=CleanUpModel,
title="Clean Up"
)
- CleanUpFarm: CleanUpFarmModel = Field(
+ CleanUpFarm: CleanUpFarmModel = SettingsField(
default_factory=CleanUpFarmModel,
title="Clean Up Farm"
)
diff --git a/server_addon/core/server/settings/tools.py b/server_addon/core/server/settings/tools.py
index 0dd9d396ae1..b45f9b49d47 100644
--- a/server_addon/core/server/settings/tools.py
+++ b/server_addon/core/server/settings/tools.py
@@ -1,6 +1,7 @@
-from pydantic import Field, validator
+from pydantic import validator
from ayon_server.settings import (
BaseSettingsModel,
+ SettingsField,
normalize_name,
ensure_unique_names,
task_types_enum,
@@ -9,8 +10,10 @@
class ProductTypeSmartSelectModel(BaseSettingsModel):
_layout = "expanded"
- name: str = Field("", title="Product type")
- task_names: list[str] = Field(default_factory=list, title="Task names")
+ name: str = SettingsField("", title="Product type")
+ task_names: list[str] = SettingsField(
+ default_factory=list, title="Task names"
+ )
@validator("name")
def normalize_value(cls, value):
@@ -19,26 +22,28 @@ def normalize_value(cls, value):
class ProductNameProfile(BaseSettingsModel):
_layout = "expanded"
- product_types: list[str] = Field(
+ product_types: list[str] = SettingsField(
default_factory=list, title="Product types"
)
- hosts: list[str] = Field(default_factory=list, title="Hosts")
- task_types: list[str] = Field(
+ hosts: list[str] = SettingsField(default_factory=list, title="Hosts")
+ task_types: list[str] = SettingsField(
default_factory=list,
title="Task types",
enum_resolver=task_types_enum
)
- tasks: list[str] = Field(default_factory=list, title="Task names")
- template: str = Field("", title="Template")
+ tasks: list[str] = SettingsField(default_factory=list, title="Task names")
+ template: str = SettingsField("", title="Template")
class CreatorToolModel(BaseSettingsModel):
# TODO this was dynamic dictionary '{name: task_names}'
- product_types_smart_select: list[ProductTypeSmartSelectModel] = Field(
- default_factory=list,
- title="Create Smart Select"
+ product_types_smart_select: list[ProductTypeSmartSelectModel] = (
+ SettingsField(
+ default_factory=list,
+ title="Create Smart Select"
+ )
)
- product_name_profiles: list[ProductNameProfile] = Field(
+ product_name_profiles: list[ProductNameProfile] = SettingsField(
default_factory=list,
title="Product name profiles"
)
@@ -51,29 +56,29 @@ def validate_unique_name(cls, value):
class WorkfileTemplateProfile(BaseSettingsModel):
_layout = "expanded"
- task_types: list[str] = Field(
+ task_types: list[str] = SettingsField(
default_factory=list,
title="Task types",
enum_resolver=task_types_enum
)
# TODO this should use hosts enum
- hosts: list[str] = Field(default_factory=list, title="Hosts")
+ hosts: list[str] = SettingsField(default_factory=list, title="Hosts")
# TODO this was using project anatomy template name
- workfile_template: str = Field("", title="Workfile template")
+ workfile_template: str = SettingsField("", title="Workfile template")
class LastWorkfileOnStartupProfile(BaseSettingsModel):
_layout = "expanded"
# TODO this should use hosts enum
- hosts: list[str] = Field(default_factory=list, title="Hosts")
- task_types: list[str] = Field(
+ hosts: list[str] = SettingsField(default_factory=list, title="Hosts")
+ task_types: list[str] = SettingsField(
default_factory=list,
title="Task types",
enum_resolver=task_types_enum
)
- tasks: list[str] = Field(default_factory=list, title="Task names")
- enabled: bool = Field(True, title="Enabled")
- use_last_published_workfile: bool = Field(
+ tasks: list[str] = SettingsField(default_factory=list, title="Task names")
+ enabled: bool = SettingsField(True, title="Enabled")
+ use_last_published_workfile: bool = SettingsField(
True, title="Use last published workfile"
)
@@ -81,54 +86,60 @@ class LastWorkfileOnStartupProfile(BaseSettingsModel):
class WorkfilesToolOnStartupProfile(BaseSettingsModel):
_layout = "expanded"
# TODO this should use hosts enum
- hosts: list[str] = Field(default_factory=list, title="Hosts")
- task_types: list[str] = Field(
+ hosts: list[str] = SettingsField(default_factory=list, title="Hosts")
+ task_types: list[str] = SettingsField(
default_factory=list,
title="Task types",
enum_resolver=task_types_enum
)
- tasks: list[str] = Field(default_factory=list, title="Task names")
- enabled: bool = Field(True, title="Enabled")
+ tasks: list[str] = SettingsField(default_factory=list, title="Task names")
+ enabled: bool = SettingsField(True, title="Enabled")
class ExtraWorkFoldersProfile(BaseSettingsModel):
_layout = "expanded"
# TODO this should use hosts enum
- hosts: list[str] = Field(default_factory=list, title="Hosts")
- task_types: list[str] = Field(
+ hosts: list[str] = SettingsField(default_factory=list, title="Hosts")
+ task_types: list[str] = SettingsField(
default_factory=list,
title="Task types",
enum_resolver=task_types_enum
)
- task_names: list[str] = Field(default_factory=list, title="Task names")
- folders: list[str] = Field(default_factory=list, title="Folders")
+ task_names: list[str] = SettingsField(
+ default_factory=list, title="Task names"
+ )
+ folders: list[str] = SettingsField(default_factory=list, title="Folders")
class WorkfilesLockProfile(BaseSettingsModel):
_layout = "expanded"
# TODO this should use hosts enum
- host_names: list[str] = Field(default_factory=list, title="Hosts")
- enabled: bool = Field(True, title="Enabled")
+ host_names: list[str] = SettingsField(default_factory=list, title="Hosts")
+ enabled: bool = SettingsField(True, title="Enabled")
class WorkfilesToolModel(BaseSettingsModel):
- workfile_template_profiles: list[WorkfileTemplateProfile] = Field(
+ workfile_template_profiles: list[WorkfileTemplateProfile] = SettingsField(
default_factory=list,
title="Workfile template profiles"
)
- last_workfile_on_startup: list[LastWorkfileOnStartupProfile] = Field(
- default_factory=list,
- title="Open last workfile on launch"
+ last_workfile_on_startup: list[LastWorkfileOnStartupProfile] = (
+ SettingsField(
+ default_factory=list,
+ title="Open last workfile on launch"
+ )
)
- open_workfile_tool_on_startup: list[WorkfilesToolOnStartupProfile] = Field(
- default_factory=list,
- title="Open workfile tool on launch"
+ open_workfile_tool_on_startup: list[WorkfilesToolOnStartupProfile] = (
+ SettingsField(
+ default_factory=list,
+ title="Open workfile tool on launch"
+ )
)
- extra_folders: list[ExtraWorkFoldersProfile] = Field(
+ extra_folders: list[ExtraWorkFoldersProfile] = SettingsField(
default_factory=list,
title="Extra work folders"
)
- workfile_lock_profiles: list[WorkfilesLockProfile] = Field(
+ workfile_lock_profiles: list[WorkfilesLockProfile] = SettingsField(
default_factory=list,
title="Workfile lock profiles"
)
@@ -175,95 +186,100 @@ def _product_types_enum():
class LoaderProductTypeFilterProfile(BaseSettingsModel):
_layout = "expanded"
# TODO this should use hosts enum
- hosts: list[str] = Field(default_factory=list, title="Hosts")
- task_types: list[str] = Field(
+ hosts: list[str] = SettingsField(default_factory=list, title="Hosts")
+ task_types: list[str] = SettingsField(
default_factory=list,
title="Task types",
enum_resolver=task_types_enum
)
- is_include: bool = Field(True, title="Exclude / Include")
- filter_product_types: list[str] = Field(
+ is_include: bool = SettingsField(True, title="Exclude / Include")
+ filter_product_types: list[str] = SettingsField(
default_factory=list,
enum_resolver=_product_types_enum
)
class LoaderToolModel(BaseSettingsModel):
- product_type_filter_profiles: list[LoaderProductTypeFilterProfile] = Field(
- default_factory=list,
- title="Product type filtering"
+ product_type_filter_profiles: list[LoaderProductTypeFilterProfile] = (
+ SettingsField(default_factory=list, title="Product type filtering")
)
class PublishTemplateNameProfile(BaseSettingsModel):
_layout = "expanded"
- product_types: list[str] = Field(
+ product_types: list[str] = SettingsField(
default_factory=list,
title="Product types"
)
# TODO this should use hosts enum
- hosts: list[str] = Field(default_factory=list, title="Hosts")
- task_types: list[str] = Field(
+ hosts: list[str] = SettingsField(default_factory=list, title="Hosts")
+ task_types: list[str] = SettingsField(
default_factory=list,
title="Task types",
enum_resolver=task_types_enum
)
- task_names: list[str] = Field(default_factory=list, title="Task names")
- template_name: str = Field("", title="Template name")
+ task_names: list[str] = SettingsField(
+ default_factory=list, title="Task names"
+ )
+ template_name: str = SettingsField("", title="Template name")
class CustomStagingDirProfileModel(BaseSettingsModel):
- active: bool = Field(True, title="Is active")
- hosts: list[str] = Field(default_factory=list, title="Host names")
- task_types: list[str] = Field(
+ active: bool = SettingsField(True, title="Is active")
+ hosts: list[str] = SettingsField(default_factory=list, title="Host names")
+ task_types: list[str] = SettingsField(
default_factory=list,
title="Task types",
enum_resolver=task_types_enum
)
- task_names: list[str] = Field(
+ task_names: list[str] = SettingsField(
default_factory=list, title="Task names"
)
- product_types: list[str] = Field(
+ product_types: list[str] = SettingsField(
default_factory=list, title="Product types"
)
- product_names: list[str] = Field(
+ product_names: list[str] = SettingsField(
default_factory=list, title="Product names"
)
- custom_staging_dir_persistent: bool = Field(
+ custom_staging_dir_persistent: bool = SettingsField(
False, title="Custom Staging Folder Persistent"
)
- template_name: str = Field("", title="Template Name")
+ template_name: str = SettingsField("", title="Template Name")
class PublishToolModel(BaseSettingsModel):
- template_name_profiles: list[PublishTemplateNameProfile] = Field(
+ template_name_profiles: list[PublishTemplateNameProfile] = SettingsField(
default_factory=list,
title="Template name profiles"
)
- hero_template_name_profiles: list[PublishTemplateNameProfile] = Field(
- default_factory=list,
- title="Hero template name profiles"
+ hero_template_name_profiles: list[PublishTemplateNameProfile] = (
+ SettingsField(
+ default_factory=list,
+ title="Hero template name profiles"
+ )
)
- custom_staging_dir_profiles: list[CustomStagingDirProfileModel] = Field(
- default_factory=list,
- title="Custom Staging Dir Profiles"
+ custom_staging_dir_profiles: list[CustomStagingDirProfileModel] = (
+ SettingsField(
+ default_factory=list,
+ title="Custom Staging Dir Profiles"
+ )
)
class GlobalToolsModel(BaseSettingsModel):
- creator: CreatorToolModel = Field(
+ creator: CreatorToolModel = SettingsField(
default_factory=CreatorToolModel,
title="Creator"
)
- Workfiles: WorkfilesToolModel = Field(
+ Workfiles: WorkfilesToolModel = SettingsField(
default_factory=WorkfilesToolModel,
title="Workfiles"
)
- loader: LoaderToolModel = Field(
+ loader: LoaderToolModel = SettingsField(
default_factory=LoaderToolModel,
title="Loader"
)
- publish: PublishToolModel = Field(
+ publish: PublishToolModel = SettingsField(
default_factory=PublishToolModel,
title="Publish"
)
diff --git a/server_addon/deadline/server/settings/main.py b/server_addon/deadline/server/settings/main.py
index f766ef9db83..9537d6d5508 100644
--- a/server_addon/deadline/server/settings/main.py
+++ b/server_addon/deadline/server/settings/main.py
@@ -1,6 +1,10 @@
-from pydantic import Field, validator
+from pydantic import validator
-from ayon_server.settings import BaseSettingsModel, ensure_unique_names
+from ayon_server.settings import (
+ BaseSettingsModel,
+ SettingsField,
+ ensure_unique_names,
+)
from .publish_plugins import (
PublishPluginsModel,
@@ -10,8 +14,8 @@
class ServerListSubmodel(BaseSettingsModel):
_layout = "compact"
- name: str = Field(title="Name")
- value: str = Field(title="Value")
+ name: str = SettingsField(title="Name")
+ value: str = SettingsField(title="Value")
async def defined_deadline_ws_name_enum_resolver(
@@ -33,18 +37,18 @@ async def defined_deadline_ws_name_enum_resolver(
class DeadlineSettings(BaseSettingsModel):
- deadline_urls: list[ServerListSubmodel] = Field(
+ deadline_urls: list[ServerListSubmodel] = SettingsField(
default_factory=list,
title="System Deadline Webservice URLs",
scope=["studio"],
)
- deadline_server: str = Field(
+ deadline_server: str = SettingsField(
title="Project deadline server",
section="---",
scope=["project"],
enum_resolver=defined_deadline_ws_name_enum_resolver
)
- publish: PublishPluginsModel = Field(
+ publish: PublishPluginsModel = SettingsField(
default_factory=PublishPluginsModel,
title="Publish Plugins",
)
diff --git a/server_addon/deadline/server/settings/publish_plugins.py b/server_addon/deadline/server/settings/publish_plugins.py
index dc2cd7591f4..8abe59674bf 100644
--- a/server_addon/deadline/server/settings/publish_plugins.py
+++ b/server_addon/deadline/server/settings/publish_plugins.py
@@ -1,26 +1,30 @@
-from pydantic import Field, validator
+from pydantic import validator
-from ayon_server.settings import BaseSettingsModel, ensure_unique_names
+from ayon_server.settings import (
+ BaseSettingsModel,
+ SettingsField,
+ ensure_unique_names,
+)
class CollectDeadlinePoolsModel(BaseSettingsModel):
"""Settings Deadline default pools."""
- primary_pool: str = Field(title="Primary Pool")
+ primary_pool: str = SettingsField(title="Primary Pool")
- secondary_pool: str = Field(title="Secondary Pool")
+ secondary_pool: str = SettingsField(title="Secondary Pool")
class ValidateExpectedFilesModel(BaseSettingsModel):
- enabled: bool = Field(True, title="Enabled")
- active: bool = Field(True, title="Active")
- allow_user_override: bool = Field(
+ enabled: bool = SettingsField(True, title="Enabled")
+ active: bool = SettingsField(True, title="Active")
+ allow_user_override: bool = SettingsField(
True, title="Allow user change frame range"
)
- families: list[str] = Field(
+ families: list[str] = SettingsField(
default_factory=list, title="Trigger on families"
)
- targets: list[str] = Field(
+ targets: list[str] = SettingsField(
default_factory=list, title="Trigger for plugins"
)
@@ -45,45 +49,47 @@ def tile_assembler_enum():
class ScenePatchesSubmodel(BaseSettingsModel):
_layout = "expanded"
- name: str = Field(title="Patch name")
- regex: str = Field(title="Patch regex")
- line: str = Field(title="Patch line")
+ name: str = SettingsField(title="Patch name")
+ regex: str = SettingsField(title="Patch regex")
+ line: str = SettingsField(title="Patch line")
class MayaSubmitDeadlineModel(BaseSettingsModel):
"""Maya deadline submitter settings."""
- enabled: bool = Field(title="Enabled")
- optional: bool = Field(title="Optional")
- active: bool = Field(title="Active")
- use_published: bool = Field(title="Use Published scene")
- import_reference: bool = Field(title="Use Scene with Imported Reference")
- asset_dependencies: bool = Field(title="Use Asset dependencies")
- priority: int = Field(title="Priority")
- tile_priority: int = Field(title="Tile Priority")
- group: str = Field(title="Group")
- limit: list[str] = Field(
+ enabled: bool = SettingsField(title="Enabled")
+ optional: bool = SettingsField(title="Optional")
+ active: bool = SettingsField(title="Active")
+ use_published: bool = SettingsField(title="Use Published scene")
+ import_reference: bool = SettingsField(
+ title="Use Scene with Imported Reference"
+ )
+ asset_dependencies: bool = SettingsField(title="Use Asset dependencies")
+ priority: int = SettingsField(title="Priority")
+ tile_priority: int = SettingsField(title="Tile Priority")
+ group: str = SettingsField(title="Group")
+ limit: list[str] = SettingsField(
default_factory=list,
title="Limit Groups"
)
- tile_assembler_plugin: str = Field(
+ tile_assembler_plugin: str = SettingsField(
title="Tile Assembler Plugin",
enum_resolver=tile_assembler_enum,
)
- jobInfo: str = Field(
+ jobInfo: str = SettingsField(
title="Additional JobInfo data",
widget="textarea",
)
- pluginInfo: str = Field(
+ pluginInfo: str = SettingsField(
title="Additional PluginInfo data",
widget="textarea",
)
- scene_patches: list[ScenePatchesSubmodel] = Field(
+ scene_patches: list[ScenePatchesSubmodel] = SettingsField(
default_factory=list,
title="Scene patches",
)
- strict_error_checking: bool = Field(
+ strict_error_checking: bool = SettingsField(
title="Disable Strict Error Check profiles"
)
@@ -94,25 +100,25 @@ def validate_unique_names(cls, value):
class MaxSubmitDeadlineModel(BaseSettingsModel):
- enabled: bool = Field(True)
- optional: bool = Field(title="Optional")
- active: bool = Field(title="Active")
- use_published: bool = Field(title="Use Published scene")
- priority: int = Field(title="Priority")
- chunk_size: int = Field(title="Frame per Task")
- group: str = Field("", title="Group Name")
+ enabled: bool = SettingsField(True)
+ optional: bool = SettingsField(title="Optional")
+ active: bool = SettingsField(title="Active")
+ use_published: bool = SettingsField(title="Use Published scene")
+ priority: int = SettingsField(title="Priority")
+ chunk_size: int = SettingsField(title="Frame per Task")
+ group: str = SettingsField("", title="Group Name")
class EnvSearchReplaceSubmodel(BaseSettingsModel):
_layout = "compact"
- name: str = Field(title="Name")
- value: str = Field(title="Value")
+ name: str = SettingsField(title="Name")
+ value: str = SettingsField(title="Value")
class LimitGroupsSubmodel(BaseSettingsModel):
_layout = "expanded"
- name: str = Field(title="Name")
- value: list[str] = Field(
+ name: str = SettingsField(title="Name")
+ value: list[str] = SettingsField(
default_factory=list,
title="Limit Groups"
)
@@ -137,14 +143,16 @@ def fusion_deadline_plugin_enum():
class FusionSubmitDeadlineModel(BaseSettingsModel):
- enabled: bool = Field(True, title="Enabled")
- optional: bool = Field(False, title="Optional")
- active: bool = Field(True, title="Active")
- priority: int = Field(50, title="Priority")
- chunk_size: int = Field(10, title="Frame per Task")
- concurrent_tasks: int = Field(1, title="Number of concurrent tasks")
- group: str = Field("", title="Group Name")
- plugin: str = Field("Fusion",
+ enabled: bool = SettingsField(True, title="Enabled")
+ optional: bool = SettingsField(False, title="Optional")
+ active: bool = SettingsField(True, title="Active")
+ priority: int = SettingsField(50, title="Priority")
+ chunk_size: int = SettingsField(10, title="Frame per Task")
+ concurrent_tasks: int = SettingsField(
+ 1, title="Number of concurrent tasks"
+ )
+ group: str = SettingsField("", title="Group Name")
+ plugin: str = SettingsField("Fusion",
enum_resolver=fusion_deadline_plugin_enum,
title="Deadline Plugin")
@@ -152,34 +160,39 @@ class FusionSubmitDeadlineModel(BaseSettingsModel):
class NukeSubmitDeadlineModel(BaseSettingsModel):
"""Nuke deadline submitter settings."""
- enabled: bool = Field(title="Enabled")
- optional: bool = Field(title="Optional")
- active: bool = Field(title="Active")
- priority: int = Field(title="Priority")
- chunk_size: int = Field(title="Chunk Size")
- concurrent_tasks: int = Field(title="Number of concurrent tasks")
- group: str = Field(title="Group")
- department: str = Field(title="Department")
- use_gpu: bool = Field(title="Use GPU")
- workfile_dependency: bool = Field(title="Workfile Dependency")
- use_published_workfile: bool = Field(title="Use Published Workfile")
-
- env_allowed_keys: list[str] = Field(
+ enabled: bool = SettingsField(title="Enabled")
+ optional: bool = SettingsField(title="Optional")
+ active: bool = SettingsField(title="Active")
+ priority: int = SettingsField(title="Priority")
+ chunk_size: int = SettingsField(title="Chunk Size")
+ concurrent_tasks: int = SettingsField(title="Number of concurrent tasks")
+ group: str = SettingsField(title="Group")
+ department: str = SettingsField(title="Department")
+ use_gpu: bool = SettingsField(title="Use GPU")
+ workfile_dependency: bool = SettingsField(title="Workfile Dependency")
+ use_published_workfile: bool = SettingsField(
+ title="Use Published Workfile"
+ )
+
+ env_allowed_keys: list[str] = SettingsField(
default_factory=list,
title="Allowed environment keys"
)
- env_search_replace_values: list[EnvSearchReplaceSubmodel] = Field(
+ env_search_replace_values: list[EnvSearchReplaceSubmodel] = SettingsField(
default_factory=list,
title="Search & replace in environment values",
)
- limit_groups: list[LimitGroupsSubmodel] = Field(
+ limit_groups: list[LimitGroupsSubmodel] = SettingsField(
default_factory=list,
title="Limit Groups",
)
- @validator("limit_groups", "env_allowed_keys", "env_search_replace_values")
+ @validator(
+ "limit_groups",
+ "env_allowed_keys",
+ "env_search_replace_values")
def validate_unique_names(cls, value):
ensure_unique_names(value)
return value
@@ -188,58 +201,62 @@ def validate_unique_names(cls, value):
class HarmonySubmitDeadlineModel(BaseSettingsModel):
"""Harmony deadline submitter settings."""
- enabled: bool = Field(title="Enabled")
- optional: bool = Field(title="Optional")
- active: bool = Field(title="Active")
- use_published: bool = Field(title="Use Published scene")
- priority: int = Field(title="Priority")
- chunk_size: int = Field(title="Chunk Size")
- group: str = Field(title="Group")
- department: str = Field(title="Department")
+ enabled: bool = SettingsField(title="Enabled")
+ optional: bool = SettingsField(title="Optional")
+ active: bool = SettingsField(title="Active")
+ use_published: bool = SettingsField(title="Use Published scene")
+ priority: int = SettingsField(title="Priority")
+ chunk_size: int = SettingsField(title="Chunk Size")
+ group: str = SettingsField(title="Group")
+ department: str = SettingsField(title="Department")
class AfterEffectsSubmitDeadlineModel(BaseSettingsModel):
"""After Effects deadline submitter settings."""
- enabled: bool = Field(title="Enabled")
- optional: bool = Field(title="Optional")
- active: bool = Field(title="Active")
- use_published: bool = Field(title="Use Published scene")
- priority: int = Field(title="Priority")
- chunk_size: int = Field(title="Chunk Size")
- group: str = Field(title="Group")
- department: str = Field(title="Department")
- multiprocess: bool = Field(title="Optional")
+ enabled: bool = SettingsField(title="Enabled")
+ optional: bool = SettingsField(title="Optional")
+ active: bool = SettingsField(title="Active")
+ use_published: bool = SettingsField(title="Use Published scene")
+ priority: int = SettingsField(title="Priority")
+ chunk_size: int = SettingsField(title="Chunk Size")
+ group: str = SettingsField(title="Group")
+ department: str = SettingsField(title="Department")
+ multiprocess: bool = SettingsField(title="Optional")
class CelactionSubmitDeadlineModel(BaseSettingsModel):
- enabled: bool = Field(True, title="Enabled")
- deadline_department: str = Field("", title="Deadline apartment")
- deadline_priority: int = Field(50, title="Deadline priority")
- deadline_pool: str = Field("", title="Deadline pool")
- deadline_pool_secondary: str = Field("", title="Deadline pool (secondary)")
- deadline_group: str = Field("", title="Deadline Group")
- deadline_chunk_size: int = Field(10, title="Deadline Chunk size")
- deadline_job_delay: str = Field(
+ enabled: bool = SettingsField(True, title="Enabled")
+ deadline_department: str = SettingsField("", title="Deadline apartment")
+ deadline_priority: int = SettingsField(50, title="Deadline priority")
+ deadline_pool: str = SettingsField("", title="Deadline pool")
+ deadline_pool_secondary: str = SettingsField(
+ "", title="Deadline pool (secondary)"
+ )
+ deadline_group: str = SettingsField("", title="Deadline Group")
+ deadline_chunk_size: int = SettingsField(10, title="Deadline Chunk size")
+ deadline_job_delay: str = SettingsField(
"", title="Delay job (timecode dd:hh:mm:ss)"
)
class BlenderSubmitDeadlineModel(BaseSettingsModel):
- enabled: bool = Field(True)
- optional: bool = Field(title="Optional")
- active: bool = Field(title="Active")
- use_published: bool = Field(title="Use Published scene")
- priority: int = Field(title="Priority")
- chunk_size: int = Field(title="Frame per Task")
- group: str = Field("", title="Group Name")
- job_delay: str = Field("", title="Delay job (timecode dd:hh:mm:ss)")
+ enabled: bool = SettingsField(True)
+ optional: bool = SettingsField(title="Optional")
+ active: bool = SettingsField(title="Active")
+ use_published: bool = SettingsField(title="Use Published scene")
+ priority: int = SettingsField(title="Priority")
+ chunk_size: int = SettingsField(title="Frame per Task")
+ group: str = SettingsField("", title="Group Name")
+ job_delay: str = SettingsField(
+ "", title="Delay job (timecode dd:hh:mm:ss)"
+ )
class AOVFilterSubmodel(BaseSettingsModel):
_layout = "expanded"
- name: str = Field(title="Host")
- value: list[str] = Field(
+ name: str = SettingsField(title="Host")
+ value: list[str] = SettingsField(
default_factory=list,
title="AOV regex"
)
@@ -248,29 +265,29 @@ class AOVFilterSubmodel(BaseSettingsModel):
class ProcessCacheJobFarmModel(BaseSettingsModel):
"""Process submitted job on farm."""
- enabled: bool = Field(title="Enabled")
- deadline_department: str = Field(title="Department")
- deadline_pool: str = Field(title="Pool")
- deadline_group: str = Field(title="Group")
- deadline_chunk_size: int = Field(title="Chunk Size")
- deadline_priority: int = Field(title="Priority")
+ enabled: bool = SettingsField(title="Enabled")
+ deadline_department: str = SettingsField(title="Department")
+ deadline_pool: str = SettingsField(title="Pool")
+ deadline_group: str = SettingsField(title="Group")
+ deadline_chunk_size: int = SettingsField(title="Chunk Size")
+ deadline_priority: int = SettingsField(title="Priority")
class ProcessSubmittedJobOnFarmModel(BaseSettingsModel):
"""Process submitted job on farm."""
- enabled: bool = Field(title="Enabled")
- deadline_department: str = Field(title="Department")
- deadline_pool: str = Field(title="Pool")
- deadline_group: str = Field(title="Group")
- deadline_chunk_size: int = Field(title="Chunk Size")
- deadline_priority: int = Field(title="Priority")
- publishing_script: str = Field(title="Publishing script path")
- skip_integration_repre_list: list[str] = Field(
+ enabled: bool = SettingsField(title="Enabled")
+ deadline_department: str = SettingsField(title="Department")
+ deadline_pool: str = SettingsField(title="Pool")
+ deadline_group: str = SettingsField(title="Group")
+ deadline_chunk_size: int = SettingsField(title="Chunk Size")
+ deadline_priority: int = SettingsField(title="Priority")
+ publishing_script: str = SettingsField(title="Publishing script path")
+ skip_integration_repre_list: list[str] = SettingsField(
default_factory=list,
title="Skip integration of representation with ext"
)
- aov_filter: list[AOVFilterSubmodel] = Field(
+ aov_filter: list[AOVFilterSubmodel] = SettingsField(
default_factory=list,
title="Reviewable products filter",
)
@@ -282,41 +299,44 @@ def validate_unique_names(cls, value):
class PublishPluginsModel(BaseSettingsModel):
- CollectDeadlinePools: CollectDeadlinePoolsModel = Field(
+ CollectDeadlinePools: CollectDeadlinePoolsModel = SettingsField(
default_factory=CollectDeadlinePoolsModel,
title="Default Pools")
- ValidateExpectedFiles: ValidateExpectedFilesModel = Field(
+ ValidateExpectedFiles: ValidateExpectedFilesModel = SettingsField(
default_factory=ValidateExpectedFilesModel,
title="Validate Expected Files"
)
- MayaSubmitDeadline: MayaSubmitDeadlineModel = Field(
+ MayaSubmitDeadline: MayaSubmitDeadlineModel = SettingsField(
default_factory=MayaSubmitDeadlineModel,
title="Maya Submit to deadline")
- MaxSubmitDeadline: MaxSubmitDeadlineModel = Field(
+ MaxSubmitDeadline: MaxSubmitDeadlineModel = SettingsField(
default_factory=MaxSubmitDeadlineModel,
title="Max Submit to deadline")
- FusionSubmitDeadline: FusionSubmitDeadlineModel = Field(
+ FusionSubmitDeadline: FusionSubmitDeadlineModel = SettingsField(
default_factory=FusionSubmitDeadlineModel,
title="Fusion submit to Deadline")
- NukeSubmitDeadline: NukeSubmitDeadlineModel = Field(
+ NukeSubmitDeadline: NukeSubmitDeadlineModel = SettingsField(
default_factory=NukeSubmitDeadlineModel,
title="Nuke Submit to deadline")
- HarmonySubmitDeadline: HarmonySubmitDeadlineModel = Field(
+ HarmonySubmitDeadline: HarmonySubmitDeadlineModel = SettingsField(
default_factory=HarmonySubmitDeadlineModel,
title="Harmony Submit to deadline")
- AfterEffectsSubmitDeadline: AfterEffectsSubmitDeadlineModel = Field(
- default_factory=AfterEffectsSubmitDeadlineModel,
- title="After Effects to deadline")
- CelactionSubmitDeadline: CelactionSubmitDeadlineModel = Field(
+ AfterEffectsSubmitDeadline: AfterEffectsSubmitDeadlineModel = (
+ SettingsField(
+ default_factory=AfterEffectsSubmitDeadlineModel,
+ title="After Effects to deadline"
+ )
+ )
+ CelactionSubmitDeadline: CelactionSubmitDeadlineModel = SettingsField(
default_factory=CelactionSubmitDeadlineModel,
title="Celaction Submit Deadline")
- BlenderSubmitDeadline: BlenderSubmitDeadlineModel = Field(
+ BlenderSubmitDeadline: BlenderSubmitDeadlineModel = SettingsField(
default_factory=BlenderSubmitDeadlineModel,
title="Blender Submit Deadline")
- ProcessSubmittedCacheJobOnFarm: ProcessCacheJobFarmModel = Field(
+ ProcessSubmittedCacheJobOnFarm: ProcessCacheJobFarmModel = SettingsField(
default_factory=ProcessCacheJobFarmModel,
title="Process submitted cache Job on farm.")
- ProcessSubmittedJobOnFarm: ProcessSubmittedJobOnFarmModel = Field(
+ ProcessSubmittedJobOnFarm: ProcessSubmittedJobOnFarmModel = SettingsField(
default_factory=ProcessSubmittedJobOnFarmModel,
title="Process submitted job on farm.")
diff --git a/server_addon/flame/server/settings/create_plugins.py b/server_addon/flame/server/settings/create_plugins.py
index 374a7368d24..44fb8a2e91c 100644
--- a/server_addon/flame/server/settings/create_plugins.py
+++ b/server_addon/flame/server/settings/create_plugins.py
@@ -1,95 +1,94 @@
-from pydantic import Field
-from ayon_server.settings import BaseSettingsModel
+from ayon_server.settings import BaseSettingsModel, SettingsField
class CreateShotClipModel(BaseSettingsModel):
- hierarchy: str = Field(
+ hierarchy: str = SettingsField(
"shot",
title="Shot parent hierarchy",
section="Shot Hierarchy And Rename Settings"
)
- useShotName: bool = Field(
+ useShotName: bool = SettingsField(
True,
title="Use Shot Name",
)
- clipRename: bool = Field(
+ clipRename: bool = SettingsField(
False,
title="Rename clips",
)
- clipName: str = Field(
+ clipName: str = SettingsField(
"{sequence}{shot}",
title="Clip name template"
)
- segmentIndex: bool = Field(
+ segmentIndex: bool = SettingsField(
True,
title="Accept segment order"
)
- countFrom: int = Field(
+ countFrom: int = SettingsField(
10,
title="Count sequence from"
)
- countSteps: int = Field(
+ countSteps: int = SettingsField(
10,
title="Stepping number"
)
- folder: str = Field(
+ folder: str = SettingsField(
"shots",
title="{folder}",
section="Shot Template Keywords"
)
- episode: str = Field(
+ episode: str = SettingsField(
"ep01",
title="{episode}"
)
- sequence: str = Field(
+ sequence: str = SettingsField(
"a",
title="{sequence}"
)
- track: str = Field(
+ track: str = SettingsField(
"{_track_}",
title="{track}"
)
- shot: str = Field(
+ shot: str = SettingsField(
"####",
title="{shot}"
)
- vSyncOn: bool = Field(
+ vSyncOn: bool = SettingsField(
False,
title="Enable Vertical Sync",
section="Vertical Synchronization Of Attributes"
)
- workfileFrameStart: int = Field(
+ workfileFrameStart: int = SettingsField(
1001,
title="Workfiles Start Frame",
section="Shot Attributes"
)
- handleStart: int = Field(
+ handleStart: int = SettingsField(
10,
title="Handle start (head)"
)
- handleEnd: int = Field(
+ handleEnd: int = SettingsField(
10,
title="Handle end (tail)"
)
- includeHandles: bool = Field(
+ includeHandles: bool = SettingsField(
False,
title="Enable handles including"
)
- retimedHandles: bool = Field(
+ retimedHandles: bool = SettingsField(
True,
title="Enable retimed handles"
)
- retimedFramerange: bool = Field(
+ retimedFramerange: bool = SettingsField(
True,
title="Enable retimed shot frameranges"
)
class CreatePuginsModel(BaseSettingsModel):
- CreateShotClip: CreateShotClipModel = Field(
+ CreateShotClip: CreateShotClipModel = SettingsField(
default_factory=CreateShotClipModel,
title="Create Shot Clip"
)
diff --git a/server_addon/flame/server/settings/imageio.py b/server_addon/flame/server/settings/imageio.py
index ef1e4721d12..3f6ec31ef47 100644
--- a/server_addon/flame/server/settings/imageio.py
+++ b/server_addon/flame/server/settings/imageio.py
@@ -1,17 +1,21 @@
-from pydantic import Field, validator
-from ayon_server.settings import BaseSettingsModel, ensure_unique_names
+from pydantic import validator
+from ayon_server.settings import (
+ BaseSettingsModel,
+ SettingsField,
+ ensure_unique_names,
+)
class ImageIOFileRuleModel(BaseSettingsModel):
- name: str = Field("", title="Rule name")
- pattern: str = Field("", title="Regex pattern")
- colorspace: str = Field("", title="Colorspace name")
- ext: str = Field("", title="File extension")
+ name: str = SettingsField("", title="Rule name")
+ pattern: str = SettingsField("", title="Regex pattern")
+ colorspace: str = SettingsField("", title="Colorspace name")
+ ext: str = SettingsField("", title="File extension")
class ImageIOFileRulesModel(BaseSettingsModel):
- activate_host_rules: bool = Field(False)
- rules: list[ImageIOFileRuleModel] = Field(
+ activate_host_rules: bool = SettingsField(False)
+ rules: list[ImageIOFileRuleModel] = SettingsField(
default_factory=list,
title="Rules"
)
@@ -23,24 +27,24 @@ def validate_unique_outputs(cls, value):
class ImageIORemappingRulesModel(BaseSettingsModel):
- host_native_name: str = Field(
+ host_native_name: str = SettingsField(
title="Application native colorspace name"
)
- ocio_name: str = Field(title="OCIO colorspace name")
+ ocio_name: str = SettingsField(title="OCIO colorspace name")
class ImageIORemappingModel(BaseSettingsModel):
- rules: list[ImageIORemappingRulesModel] = Field(
+ rules: list[ImageIORemappingRulesModel] = SettingsField(
default_factory=list
)
class ImageIOConfigModel(BaseSettingsModel):
- override_global_config: bool = Field(
+ override_global_config: bool = SettingsField(
False,
title="Override global OCIO config"
)
- filepath: list[str] = Field(
+ filepath: list[str] = SettingsField(
default_factory=list,
title="Config path"
)
@@ -49,30 +53,30 @@ class ImageIOConfigModel(BaseSettingsModel):
class ProfileNamesMappingInputsModel(BaseSettingsModel):
_layout = "expanded"
- flameName: str = Field("", title="Flame name")
- ocioName: str = Field("", title="OCIO name")
+ flameName: str = SettingsField("", title="Flame name")
+ ocioName: str = SettingsField("", title="OCIO name")
class ProfileNamesMappingModel(BaseSettingsModel):
_layout = "expanded"
- inputs: list[ProfileNamesMappingInputsModel] = Field(
+ inputs: list[ProfileNamesMappingInputsModel] = SettingsField(
default_factory=list,
title="Profile names mapping"
)
class ImageIOProjectModel(BaseSettingsModel):
- colourPolicy: str = Field(
+ colourPolicy: str = SettingsField(
"ACES 1.1",
title="Colour Policy (name or path)",
section="Project"
)
- frameDepth: str = Field(
+ frameDepth: str = SettingsField(
"16-bit fp",
title="Image Depth"
)
- fieldDominance: str = Field(
+ fieldDominance: str = SettingsField(
"PROGRESSIVE",
title="Field Dominance"
)
@@ -80,18 +84,18 @@ class ImageIOProjectModel(BaseSettingsModel):
class FlameImageIOModel(BaseSettingsModel):
_isGroup = True
- activate_host_color_management: bool = Field(
+ activate_host_color_management: bool = SettingsField(
True, title="Enable Color Management"
)
- remapping: ImageIORemappingModel = Field(
+ remapping: ImageIORemappingModel = SettingsField(
title="Remapping colorspace names",
default_factory=ImageIORemappingModel
)
- ocio_config: ImageIOConfigModel = Field(
+ ocio_config: ImageIOConfigModel = SettingsField(
default_factory=ImageIOConfigModel,
title="OCIO config"
)
- file_rules: ImageIOFileRulesModel = Field(
+ file_rules: ImageIOFileRulesModel = SettingsField(
default_factory=ImageIOFileRulesModel,
title="File Rules"
)
@@ -99,11 +103,11 @@ class FlameImageIOModel(BaseSettingsModel):
# inconsistency with v3 settings and harder conversion handling
# - it can be moved back but keep in mind that it must be handled in v3
# conversion script too
- project: ImageIOProjectModel = Field(
+ project: ImageIOProjectModel = SettingsField(
default_factory=ImageIOProjectModel,
title="Project"
)
- profilesMapping: ProfileNamesMappingModel = Field(
+ profilesMapping: ProfileNamesMappingModel = SettingsField(
default_factory=ProfileNamesMappingModel,
title="Profile names mapping"
)
diff --git a/server_addon/flame/server/settings/loader_plugins.py b/server_addon/flame/server/settings/loader_plugins.py
index 6c27b926c2a..e616f442b50 100644
--- a/server_addon/flame/server/settings/loader_plugins.py
+++ b/server_addon/flame/server/settings/loader_plugins.py
@@ -1,60 +1,64 @@
-from ayon_server.settings import Field, BaseSettingsModel
+from ayon_server.settings import SettingsField, BaseSettingsModel
class LoadClipModel(BaseSettingsModel):
- enabled: bool = Field(True)
+ enabled: bool = SettingsField(True)
- product_types: list[str] = Field(
+ product_types: list[str] = SettingsField(
default_factory=list,
title="Product types"
)
- reel_group_name: str = Field(
+ reel_group_name: str = SettingsField(
"OpenPype_Reels",
title="Reel group name"
)
- reel_name: str = Field(
+ reel_name: str = SettingsField(
"Loaded",
title="Reel name"
)
- clip_name_template: str = Field(
+ clip_name_template: str = SettingsField(
"{folder[name]}_{product[name]}<_{output}>",
title="Clip name template"
)
- layer_rename_template: str = Field("", title="Layer name template")
- layer_rename_patterns: list[str] = Field(
+ layer_rename_template: str = SettingsField(
+ "", title="Layer name template"
+ )
+ layer_rename_patterns: list[str] = SettingsField(
default_factory=list,
title="Layer rename patters",
)
class LoadClipBatchModel(BaseSettingsModel):
- enabled: bool = Field(True)
- product_types: list[str] = Field(
+ enabled: bool = SettingsField(True)
+ product_types: list[str] = SettingsField(
default_factory=list,
title="Product types"
)
- reel_name: str = Field(
+ reel_name: str = SettingsField(
"OP_LoadedReel",
title="Reel name"
)
- clip_name_template: str = Field(
+ clip_name_template: str = SettingsField(
"{batch}_{folder[name]}_{product[name]}<_{output}>",
title="Clip name template"
)
- layer_rename_template: str = Field("", title="Layer name template")
- layer_rename_patterns: list[str] = Field(
+ layer_rename_template: str = SettingsField(
+ "", title="Layer name template"
+ )
+ layer_rename_patterns: list[str] = SettingsField(
default_factory=list,
title="Layer rename patters",
)
class LoaderPluginsModel(BaseSettingsModel):
- LoadClip: LoadClipModel = Field(
+ LoadClip: LoadClipModel = SettingsField(
default_factory=LoadClipModel,
title="Load Clip"
)
- LoadClipBatch: LoadClipBatchModel = Field(
+ LoadClipBatch: LoadClipBatchModel = SettingsField(
default_factory=LoadClipBatchModel,
title="Load as clip to current batch"
)
diff --git a/server_addon/flame/server/settings/main.py b/server_addon/flame/server/settings/main.py
index f28de6641bb..047f5af2871 100644
--- a/server_addon/flame/server/settings/main.py
+++ b/server_addon/flame/server/settings/main.py
@@ -1,4 +1,4 @@
-from ayon_server.settings import Field, BaseSettingsModel
+from ayon_server.settings import BaseSettingsModel, SettingsField
from .imageio import FlameImageIOModel, DEFAULT_IMAGEIO_SETTINGS
from .create_plugins import CreatePuginsModel, DEFAULT_CREATE_SETTINGS
@@ -7,19 +7,19 @@
class FlameSettings(BaseSettingsModel):
- imageio: FlameImageIOModel = Field(
+ imageio: FlameImageIOModel = SettingsField(
default_factory=FlameImageIOModel,
title="Color Management (ImageIO)"
)
- create: CreatePuginsModel = Field(
+ create: CreatePuginsModel = SettingsField(
default_factory=CreatePuginsModel,
title="Create plugins"
)
- publish: PublishPuginsModel = Field(
+ publish: PublishPuginsModel = SettingsField(
default_factory=PublishPuginsModel,
title="Publish plugins"
)
- load: LoaderPluginsModel = Field(
+ load: LoaderPluginsModel = SettingsField(
default_factory=LoaderPluginsModel,
title="Loader plugins"
)
diff --git a/server_addon/flame/server/settings/publish_plugins.py b/server_addon/flame/server/settings/publish_plugins.py
index ea7f109f739..decb00fcfab 100644
--- a/server_addon/flame/server/settings/publish_plugins.py
+++ b/server_addon/flame/server/settings/publish_plugins.py
@@ -1,10 +1,14 @@
-from ayon_server.settings import Field, BaseSettingsModel, task_types_enum
+from ayon_server.settings import (
+ BaseSettingsModel,
+ SettingsField,
+ task_types_enum,
+)
class XMLPresetAttrsFromCommentsModel(BaseSettingsModel):
_layout = "expanded"
- name: str = Field("", title="Attribute name")
- type: str = Field(
+ name: str = SettingsField("", title="Attribute name")
+ type: str = SettingsField(
default_factory=str,
title="Attribute type",
enum_resolver=lambda: ["number", "float", "string"]
@@ -13,13 +17,13 @@ class XMLPresetAttrsFromCommentsModel(BaseSettingsModel):
class AddTasksModel(BaseSettingsModel):
_layout = "expanded"
- name: str = Field("", title="Task name")
- type: str = Field(
+ name: str = SettingsField("", title="Task name")
+ type: str = SettingsField(
default_factory=str,
title="Task type",
enum_resolver=task_types_enum
)
- create_batch_group: bool = Field(
+ create_batch_group: bool = SettingsField(
True,
title="Create batch group"
)
@@ -28,11 +32,13 @@ class AddTasksModel(BaseSettingsModel):
class CollectTimelineInstancesModel(BaseSettingsModel):
_isGroup = True
- xml_preset_attrs_from_comments: list[XMLPresetAttrsFromCommentsModel] = Field(
- default_factory=list,
- title="XML presets attributes parsable from segment comments"
+ xml_preset_attrs_from_comments: list[XMLPresetAttrsFromCommentsModel] = (
+ SettingsField(
+ default_factory=list,
+ title="XML presets attributes parsable from segment comments"
+ )
)
- add_tasks: list[AddTasksModel] = Field(
+ add_tasks: list[AddTasksModel] = SettingsField(
default_factory=list,
title="Add tasks"
)
@@ -41,22 +47,22 @@ class CollectTimelineInstancesModel(BaseSettingsModel):
class ExportPresetsMappingModel(BaseSettingsModel):
_layout = "expanded"
- name: str = Field(
+ name: str = SettingsField(
...,
title="Name"
)
- active: bool = Field(True, title="Is active")
- export_type: str = Field(
+ active: bool = SettingsField(True, title="Is active")
+ export_type: str = SettingsField(
"File Sequence",
title="Eport clip type",
enum_resolver=lambda: ["Movie", "File Sequence", "Sequence Publish"]
)
- ext: str = Field("exr", title="Output extension")
- xml_preset_file: str = Field(
+ ext: str = SettingsField("exr", title="Output extension")
+ xml_preset_file: str = SettingsField(
"OpenEXR (16-bit fp DWAA).xml",
title="XML preset file (with ext)"
)
- colorspace_out: str = Field(
+ colorspace_out: str = SettingsField(
"ACES - ACEScg",
title="Output color (imageio)"
)
@@ -65,31 +71,31 @@ class ExportPresetsMappingModel(BaseSettingsModel):
# created inconsistency with v3 settings and harder conversion handling
# - it can be moved back but keep in mind that it must be handled in v3
# conversion script too
- xml_preset_dir: str = Field(
+ xml_preset_dir: str = SettingsField(
"",
title="XML preset directory"
)
- parsed_comment_attrs: bool = Field(
+ parsed_comment_attrs: bool = SettingsField(
True,
title="Parsed comment attributes"
)
- representation_add_range: bool = Field(
+ representation_add_range: bool = SettingsField(
True,
title="Add range to representation name"
)
- representation_tags: list[str] = Field(
+ representation_tags: list[str] = SettingsField(
default_factory=list,
title="Representation tags"
)
- load_to_batch_group: bool = Field(
+ load_to_batch_group: bool = SettingsField(
True,
title="Load to batch group reel"
)
- batch_group_loader_name: str = Field(
+ batch_group_loader_name: str = SettingsField(
"LoadClipBatch",
title="Use loader name"
)
- filter_path_regex: str = Field(
+ filter_path_regex: str = SettingsField(
".*",
title="Regex in clip path"
)
@@ -98,35 +104,35 @@ class ExportPresetsMappingModel(BaseSettingsModel):
class ExtractProductResourcesModel(BaseSettingsModel):
_isGroup = True
- keep_original_representation: bool = Field(
+ keep_original_representation: bool = SettingsField(
False,
title="Publish clip's original media"
)
- export_presets_mapping: list[ExportPresetsMappingModel] = Field(
+ export_presets_mapping: list[ExportPresetsMappingModel] = SettingsField(
default_factory=list,
title="Export presets mapping"
)
class IntegrateBatchGroupModel(BaseSettingsModel):
- enabled: bool = Field(
+ enabled: bool = SettingsField(
False,
title="Enabled"
)
class PublishPuginsModel(BaseSettingsModel):
- CollectTimelineInstances: CollectTimelineInstancesModel = Field(
+ CollectTimelineInstances: CollectTimelineInstancesModel = SettingsField(
default_factory=CollectTimelineInstancesModel,
title="Collect Timeline Instances"
)
- ExtractProductResources: ExtractProductResourcesModel = Field(
+ ExtractProductResources: ExtractProductResourcesModel = SettingsField(
default_factory=ExtractProductResourcesModel,
title="Extract Product Resources"
)
- IntegrateBatchGroup: IntegrateBatchGroupModel = Field(
+ IntegrateBatchGroup: IntegrateBatchGroupModel = SettingsField(
default_factory=IntegrateBatchGroupModel,
title="IntegrateBatchGroup"
)
diff --git a/server_addon/fusion/server/imageio.py b/server_addon/fusion/server/imageio.py
index fe867af4243..e93dc2ae00c 100644
--- a/server_addon/fusion/server/imageio.py
+++ b/server_addon/fusion/server/imageio.py
@@ -1,29 +1,29 @@
-from pydantic import Field, validator
-from ayon_server.settings import BaseSettingsModel
+from pydantic import validator
+from ayon_server.settings import BaseSettingsModel, SettingsField
from ayon_server.settings.validators import ensure_unique_names
class ImageIOConfigModel(BaseSettingsModel):
- override_global_config: bool = Field(
+ override_global_config: bool = SettingsField(
False,
title="Override global OCIO config"
)
- filepath: list[str] = Field(
+ filepath: list[str] = SettingsField(
default_factory=list,
title="Config path"
)
class ImageIOFileRuleModel(BaseSettingsModel):
- name: str = Field("", title="Rule name")
- pattern: str = Field("", title="Regex pattern")
- colorspace: str = Field("", title="Colorspace name")
- ext: str = Field("", title="File extension")
+ name: str = SettingsField("", title="Rule name")
+ pattern: str = SettingsField("", title="Regex pattern")
+ colorspace: str = SettingsField("", title="Colorspace name")
+ ext: str = SettingsField("", title="File extension")
class ImageIOFileRulesModel(BaseSettingsModel):
- activate_host_rules: bool = Field(False)
- rules: list[ImageIOFileRuleModel] = Field(
+ activate_host_rules: bool = SettingsField(False)
+ rules: list[ImageIOFileRuleModel] = SettingsField(
default_factory=list,
title="Rules"
)
@@ -35,14 +35,14 @@ def validate_unique_outputs(cls, value):
class FusionImageIOModel(BaseSettingsModel):
- activate_host_color_management: bool = Field(
+ activate_host_color_management: bool = SettingsField(
True, title="Enable Color Management"
)
- ocio_config: ImageIOConfigModel = Field(
+ ocio_config: ImageIOConfigModel = SettingsField(
default_factory=ImageIOConfigModel,
title="OCIO config"
)
- file_rules: ImageIOFileRulesModel = Field(
+ file_rules: ImageIOFileRulesModel = SettingsField(
default_factory=ImageIOFileRulesModel,
title="File Rules"
)
diff --git a/server_addon/fusion/server/settings.py b/server_addon/fusion/server/settings.py
index bf295f3064a..b157ce9e404 100644
--- a/server_addon/fusion/server/settings.py
+++ b/server_addon/fusion/server/settings.py
@@ -1,15 +1,15 @@
-from pydantic import Field
from ayon_server.settings import (
BaseSettingsModel,
+ SettingsField,
)
from .imageio import FusionImageIOModel
class CopyFusionSettingsModel(BaseSettingsModel):
- copy_path: str = Field("", title="Local Fusion profile directory")
- copy_status: bool = Field(title="Copy profile on first launch")
- force_sync: bool = Field(title="Resync profile on each launch")
+ copy_path: str = SettingsField("", title="Local Fusion profile directory")
+ copy_status: bool = SettingsField(title="Copy profile on first launch")
+ force_sync: bool = SettingsField(title="Resync profile on each launch")
def _create_saver_instance_attributes_enum():
@@ -45,40 +45,40 @@ def _frame_range_options_enum():
class CreateSaverPluginModel(BaseSettingsModel):
_isGroup = True
- temp_rendering_path_template: str = Field(
+ temp_rendering_path_template: str = SettingsField(
"", title="Temporary rendering path template"
)
- default_variants: list[str] = Field(
+ default_variants: list[str] = SettingsField(
default_factory=list,
title="Default variants"
)
- instance_attributes: list[str] = Field(
+ instance_attributes: list[str] = SettingsField(
default_factory=list,
enum_resolver=_create_saver_instance_attributes_enum,
title="Instance attributes"
)
- output_formats: list[str] = Field(
+ output_formats: list[str] = SettingsField(
default_factory=list,
title="Output formats"
)
class HookOptionalModel(BaseSettingsModel):
- enabled: bool = Field(
+ enabled: bool = SettingsField(
True,
title="Enabled"
)
class HooksModel(BaseSettingsModel):
- InstallPySideToFusion: HookOptionalModel = Field(
+ InstallPySideToFusion: HookOptionalModel = SettingsField(
default_factory=HookOptionalModel,
title="Install PySide2"
)
class CreateSaverModel(CreateSaverPluginModel):
- default_frame_range_option: str = Field(
+ default_frame_range_option: str = SettingsField(
default="asset_db",
enum_resolver=_frame_range_options_enum,
title="Default frame range source"
@@ -86,17 +86,17 @@ class CreateSaverModel(CreateSaverPluginModel):
class CreateImageSaverModel(CreateSaverPluginModel):
- default_frame: int = Field(
+ default_frame: int = SettingsField(
0,
title="Default rendered frame"
)
class CreatPluginsModel(BaseSettingsModel):
- CreateSaver: CreateSaverModel = Field(
+ CreateSaver: CreateSaverModel = SettingsField(
default_factory=CreateSaverModel,
title="Create Saver",
description="Creator for render product type (eg. sequence)"
)
- CreateImageSaver: CreateImageSaverModel = Field(
+ CreateImageSaver: CreateImageSaverModel = SettingsField(
default_factory=CreateImageSaverModel,
title="Create Image Saver",
description="Creator for image product type (eg. single)"
@@ -104,19 +104,19 @@ class CreatPluginsModel(BaseSettingsModel):
class FusionSettings(BaseSettingsModel):
- imageio: FusionImageIOModel = Field(
+ imageio: FusionImageIOModel = SettingsField(
default_factory=FusionImageIOModel,
title="Color Management (ImageIO)"
)
- copy_fusion_settings: CopyFusionSettingsModel = Field(
+ copy_fusion_settings: CopyFusionSettingsModel = SettingsField(
default_factory=CopyFusionSettingsModel,
title="Local Fusion profile settings"
)
- hooks: HooksModel = Field(
+ hooks: HooksModel = SettingsField(
default_factory=HooksModel,
title="Hooks"
)
- create: CreatPluginsModel = Field(
+ create: CreatPluginsModel = SettingsField(
default_factory=CreatPluginsModel,
title="Creator plugins"
)
diff --git a/server_addon/harmony/server/settings/imageio.py b/server_addon/harmony/server/settings/imageio.py
index 4e01fae3d42..a4b481f91f1 100644
--- a/server_addon/harmony/server/settings/imageio.py
+++ b/server_addon/harmony/server/settings/imageio.py
@@ -1,29 +1,29 @@
-from pydantic import Field, validator
-from ayon_server.settings import BaseSettingsModel
+from pydantic import validator
+from ayon_server.settings import BaseSettingsModel, SettingsField
from ayon_server.settings.validators import ensure_unique_names
class ImageIOConfigModel(BaseSettingsModel):
- override_global_config: bool = Field(
+ override_global_config: bool = SettingsField(
False,
title="Override global OCIO config"
)
- filepath: list[str] = Field(
+ filepath: list[str] = SettingsField(
default_factory=list,
title="Config path"
)
class ImageIOFileRuleModel(BaseSettingsModel):
- name: str = Field("", title="Rule name")
- pattern: str = Field("", title="Regex pattern")
- colorspace: str = Field("", title="Colorspace name")
- ext: str = Field("", title="File extension")
+ name: str = SettingsField("", title="Rule name")
+ pattern: str = SettingsField("", title="Regex pattern")
+ colorspace: str = SettingsField("", title="Colorspace name")
+ ext: str = SettingsField("", title="File extension")
class ImageIOFileRulesModel(BaseSettingsModel):
- activate_host_rules: bool = Field(False)
- rules: list[ImageIOFileRuleModel] = Field(
+ activate_host_rules: bool = SettingsField(False)
+ rules: list[ImageIOFileRuleModel] = SettingsField(
default_factory=list,
title="Rules"
)
@@ -35,21 +35,21 @@ def validate_unique_outputs(cls, value):
class ImageIORemappingRulesModel(BaseSettingsModel):
- host_native_name: str = Field(
+ host_native_name: str = SettingsField(
title="Application native colorspace name"
)
- ocio_name: str = Field(title="OCIO colorspace name")
+ ocio_name: str = SettingsField(title="OCIO colorspace name")
class HarmonyImageIOModel(BaseSettingsModel):
- activate_host_color_management: bool = Field(
+ activate_host_color_management: bool = SettingsField(
True, title="Enable Color Management"
)
- ocio_config: ImageIOConfigModel = Field(
+ ocio_config: ImageIOConfigModel = SettingsField(
default_factory=ImageIOConfigModel,
title="OCIO config"
)
- file_rules: ImageIOFileRulesModel = Field(
+ file_rules: ImageIOFileRulesModel = SettingsField(
default_factory=ImageIOFileRulesModel,
title="File Rules"
)
diff --git a/server_addon/harmony/server/settings/main.py b/server_addon/harmony/server/settings/main.py
index 0936bc1fc7f..9c780b63c27 100644
--- a/server_addon/harmony/server/settings/main.py
+++ b/server_addon/harmony/server/settings/main.py
@@ -1,5 +1,4 @@
-from pydantic import Field
-from ayon_server.settings import BaseSettingsModel
+from ayon_server.settings import BaseSettingsModel, SettingsField
from .imageio import HarmonyImageIOModel
from .publish_plugins import HarmonyPublishPlugins
@@ -8,11 +7,11 @@
class HarmonySettings(BaseSettingsModel):
"""Harmony Project Settings."""
- imageio: HarmonyImageIOModel = Field(
+ imageio: HarmonyImageIOModel = SettingsField(
default_factory=HarmonyImageIOModel,
title="OCIO config"
)
- publish: HarmonyPublishPlugins = Field(
+ publish: HarmonyPublishPlugins = SettingsField(
default_factory=HarmonyPublishPlugins,
title="Publish plugins"
)
diff --git a/server_addon/harmony/server/settings/publish_plugins.py b/server_addon/harmony/server/settings/publish_plugins.py
index bdaec2bbd47..c9e7c515e44 100644
--- a/server_addon/harmony/server/settings/publish_plugins.py
+++ b/server_addon/harmony/server/settings/publish_plugins.py
@@ -1,12 +1,10 @@
-from pydantic import Field
-
-from ayon_server.settings import BaseSettingsModel
+from ayon_server.settings import BaseSettingsModel, SettingsField
class CollectPalettesPlugin(BaseSettingsModel):
"""Set regular expressions to filter triggering on specific task names. '.*' means on all.""" # noqa
- allowed_tasks: list[str] = Field(
+ allowed_tasks: list[str] = SettingsField(
default_factory=list,
title="Allowed tasks"
)
@@ -16,16 +14,16 @@ class ValidateAudioPlugin(BaseSettingsModel):
"""Check if scene contains audio track.""" #
_isGroup = True
enabled: bool = True
- optional: bool = Field(False, title="Optional")
- active: bool = Field(True, title="Active")
+ optional: bool = SettingsField(False, title="Optional")
+ active: bool = SettingsField(True, title="Active")
class ValidateContainersPlugin(BaseSettingsModel):
"""Check if loaded container is scene are latest versions."""
_isGroup = True
enabled: bool = True
- optional: bool = Field(False, title="Optional")
- active: bool = Field(True, title="Active")
+ optional: bool = SettingsField(False, title="Optional")
+ active: bool = SettingsField(True, title="Active")
class ValidateSceneSettingsPlugin(BaseSettingsModel):
@@ -34,20 +32,20 @@ class ValidateSceneSettingsPlugin(BaseSettingsModel):
or task names."""
_isGroup = True
enabled: bool = True
- optional: bool = Field(False, title="Optional")
- active: bool = Field(True, title="Active")
+ optional: bool = SettingsField(False, title="Optional")
+ active: bool = SettingsField(True, title="Active")
- frame_check_filter: list[str] = Field(
+ frame_check_filter: list[str] = SettingsField(
default_factory=list,
title="Skip Frame check for Assets with name containing"
)
- skip_resolution_check: list[str] = Field(
+ skip_resolution_check: list[str] = SettingsField(
default_factory=list,
title="Skip Resolution Check for Tasks"
)
- skip_timelines_check: list[str] = Field(
+ skip_timelines_check: list[str] = SettingsField(
default_factory=list,
title="Skip Timeline Check for Tasks"
)
@@ -55,22 +53,22 @@ class ValidateSceneSettingsPlugin(BaseSettingsModel):
class HarmonyPublishPlugins(BaseSettingsModel):
- CollectPalettes: CollectPalettesPlugin = Field(
+ CollectPalettes: CollectPalettesPlugin = SettingsField(
title="Collect Palettes",
default_factory=CollectPalettesPlugin,
)
- ValidateAudio: ValidateAudioPlugin = Field(
+ ValidateAudio: ValidateAudioPlugin = SettingsField(
title="Validate Audio",
default_factory=ValidateAudioPlugin,
)
- ValidateContainers: ValidateContainersPlugin = Field(
+ ValidateContainers: ValidateContainersPlugin = SettingsField(
title="Validate Containers",
default_factory=ValidateContainersPlugin,
)
- ValidateSceneSettings: ValidateSceneSettingsPlugin = Field(
+ ValidateSceneSettings: ValidateSceneSettingsPlugin = SettingsField(
title="Validate Scene Settings",
default_factory=ValidateSceneSettingsPlugin,
)
diff --git a/server_addon/hiero/server/settings/common.py b/server_addon/hiero/server/settings/common.py
index eb4791f93e2..7b5e4390c53 100644
--- a/server_addon/hiero/server/settings/common.py
+++ b/server_addon/hiero/server/settings/common.py
@@ -1,5 +1,4 @@
-from pydantic import Field
-from ayon_server.settings import BaseSettingsModel
+from ayon_server.settings import BaseSettingsModel, SettingsField
from ayon_server.types import (
ColorRGBA_float,
ColorRGB_uint8
@@ -9,16 +8,16 @@
class Vector2d(BaseSettingsModel):
_layout = "compact"
- x: float = Field(1.0, title="X")
- y: float = Field(1.0, title="Y")
+ x: float = SettingsField(1.0, title="X")
+ y: float = SettingsField(1.0, title="Y")
class Vector3d(BaseSettingsModel):
_layout = "compact"
- x: float = Field(1.0, title="X")
- y: float = Field(1.0, title="Y")
- z: float = Field(1.0, title="Z")
+ x: float = SettingsField(1.0, title="X")
+ y: float = SettingsField(1.0, title="Y")
+ z: float = SettingsField(1.0, title="Z")
def formatable_knob_type_enum():
@@ -34,12 +33,12 @@ def formatable_knob_type_enum():
class Formatable(BaseSettingsModel):
_layout = "compact"
- template: str = Field(
+ template: str = SettingsField(
"",
placeholder="""{{key}} or {{key}};{{key}}""",
title="Template"
)
- to_type: str = Field(
+ to_type: str = SettingsField(
"Text",
title="To Knob type",
enum_resolver=formatable_knob_type_enum,
@@ -62,37 +61,37 @@ class Formatable(BaseSettingsModel):
class KnobModel(BaseSettingsModel):
_layout = "expanded"
- type: str = Field(
+ type: str = SettingsField(
title="Type",
description="Switch between different knob types",
enum_resolver=lambda: knob_types_enum,
conditionalEnum=True
)
- name: str = Field(
+ name: str = SettingsField(
title="Name",
placeholder="Name"
)
- text: str = Field("", title="Value")
- color_gui: ColorRGB_uint8 = Field(
+ text: str = SettingsField("", title="Value")
+ color_gui: ColorRGB_uint8 = SettingsField(
(0, 0, 255),
title="RGB Uint8",
)
- boolean: bool = Field(False, title="Value")
- number: int = Field(0, title="Value")
- decimal_number: float = Field(0.0, title="Value")
- vector_2d: Vector2d = Field(
+ boolean: bool = SettingsField(False, title="Value")
+ number: int = SettingsField(0, title="Value")
+ decimal_number: float = SettingsField(0.0, title="Value")
+ vector_2d: Vector2d = SettingsField(
default_factory=Vector2d,
title="Value"
)
- vector_3d: Vector3d = Field(
+ vector_3d: Vector3d = SettingsField(
default_factory=Vector3d,
title="Value"
)
- color: ColorRGBA_float = Field(
+ color: ColorRGBA_float = SettingsField(
(0.0, 0.0, 1.0, 1.0),
title="RGBA Float"
)
- formatable: Formatable = Field(
+ formatable: Formatable = SettingsField(
default_factory=Formatable,
title="Value"
)
diff --git a/server_addon/hiero/server/settings/create_plugins.py b/server_addon/hiero/server/settings/create_plugins.py
index daec4a7cea6..80e0b671826 100644
--- a/server_addon/hiero/server/settings/create_plugins.py
+++ b/server_addon/hiero/server/settings/create_plugins.py
@@ -1,75 +1,74 @@
-from pydantic import Field
-from ayon_server.settings import BaseSettingsModel
+from ayon_server.settings import BaseSettingsModel, SettingsField
class CreateShotClipModels(BaseSettingsModel):
- hierarchy: str = Field(
+ hierarchy: str = SettingsField(
"{folder}/{sequence}",
title="Shot parent hierarchy",
section="Shot Hierarchy And Rename Settings"
)
- clipRename: bool = Field(
+ clipRename: bool = SettingsField(
True,
title="Rename clips"
)
- clipName: str = Field(
+ clipName: str = SettingsField(
"{track}{sequence}{shot}",
title="Clip name template"
)
- countFrom: int = Field(
+ countFrom: int = SettingsField(
10,
title="Count sequence from"
)
- countSteps: int = Field(
+ countSteps: int = SettingsField(
10,
title="Stepping number"
)
- folder: str = Field(
+ folder: str = SettingsField(
"shots",
title="{folder}",
section="Shot Template Keywords"
)
- episode: str = Field(
+ episode: str = SettingsField(
"ep01",
title="{episode}"
)
- sequence: str = Field(
+ sequence: str = SettingsField(
"sq01",
title="{sequence}"
)
- track: str = Field(
+ track: str = SettingsField(
"{_track_}",
title="{track}"
)
- shot: str = Field(
+ shot: str = SettingsField(
"sh###",
title="{shot}"
)
- vSyncOn: bool = Field(
+ vSyncOn: bool = SettingsField(
False,
title="Enable Vertical Sync",
section="Vertical Synchronization Of Attributes"
)
- workfileFrameStart: int = Field(
+ workfileFrameStart: int = SettingsField(
1001,
title="Workfiles Start Frame",
section="Shot Attributes"
)
- handleStart: int = Field(
+ handleStart: int = SettingsField(
10,
title="Handle start (head)"
)
- handleEnd: int = Field(
+ handleEnd: int = SettingsField(
10,
title="Handle end (tail)"
)
class CreatorPluginsSettings(BaseSettingsModel):
- CreateShotClip: CreateShotClipModels = Field(
+ CreateShotClip: CreateShotClipModels = SettingsField(
default_factory=CreateShotClipModels,
title="Create Shot Clip"
)
diff --git a/server_addon/hiero/server/settings/filters.py b/server_addon/hiero/server/settings/filters.py
index 7e2702b3b7f..095d30a0043 100644
--- a/server_addon/hiero/server/settings/filters.py
+++ b/server_addon/hiero/server/settings/filters.py
@@ -1,17 +1,23 @@
-from pydantic import Field, validator
-from ayon_server.settings import BaseSettingsModel, ensure_unique_names
+from pydantic import validator
+from ayon_server.settings import (
+ BaseSettingsModel,
+ SettingsField,
+ ensure_unique_names,
+)
class PublishGUIFilterItemModel(BaseSettingsModel):
_layout = "compact"
- name: str = Field(title="Name")
- value: bool = Field(True, title="Active")
+ name: str = SettingsField(title="Name")
+ value: bool = SettingsField(True, title="Active")
class PublishGUIFiltersModel(BaseSettingsModel):
_layout = "compact"
- name: str = Field(title="Name")
- value: list[PublishGUIFilterItemModel] = Field(default_factory=list)
+ name: str = SettingsField(title="Name")
+ value: list[PublishGUIFilterItemModel] = SettingsField(
+ default_factory=list
+ )
@validator("value")
def validate_unique_outputs(cls, value):
diff --git a/server_addon/hiero/server/settings/imageio.py b/server_addon/hiero/server/settings/imageio.py
index f2c27280579..f2bc71ac33a 100644
--- a/server_addon/hiero/server/settings/imageio.py
+++ b/server_addon/hiero/server/settings/imageio.py
@@ -1,7 +1,8 @@
-from pydantic import Field, validator
+from pydantic import validator
from ayon_server.settings import (
BaseSettingsModel,
+ SettingsField,
ensure_unique_names,
)
@@ -39,34 +40,34 @@ class WorkfileColorspaceSettings(BaseSettingsModel):
thumbnail_name = thumbnailLut
"""
- ocioConfigName: str = Field(
+ ocioConfigName: str = SettingsField(
title="OpenColorIO Config",
description="Switch between OCIO configs",
enum_resolver=ocio_configs_switcher_enum,
conditionalEnum=True
)
- workingSpace: str = Field(
+ workingSpace: str = SettingsField(
title="Working Space"
)
- viewerLut: str = Field(
+ viewerLut: str = SettingsField(
title="Viewer"
)
- eightBitLut: str = Field(
+ eightBitLut: str = SettingsField(
title="8-bit files"
)
- sixteenBitLut: str = Field(
+ sixteenBitLut: str = SettingsField(
title="16-bit files"
)
- logLut: str = Field(
+ logLut: str = SettingsField(
title="Log files"
)
- floatLut: str = Field(
+ floatLut: str = SettingsField(
title="Float files"
)
- thumbnailLut: str = Field(
+ thumbnailLut: str = SettingsField(
title="Thumnails"
)
- monitorOutLut: str = Field(
+ monitorOutLut: str = SettingsField(
title="Monitor"
)
@@ -74,38 +75,38 @@ class WorkfileColorspaceSettings(BaseSettingsModel):
class ClipColorspaceRulesItems(BaseSettingsModel):
_layout = "expanded"
- regex: str = Field("", title="Regex expression")
- colorspace: str = Field("", title="Colorspace")
+ regex: str = SettingsField("", title="Regex expression")
+ colorspace: str = SettingsField("", title="Colorspace")
class RegexInputsModel(BaseSettingsModel):
- inputs: list[ClipColorspaceRulesItems] = Field(
+ inputs: list[ClipColorspaceRulesItems] = SettingsField(
default_factory=list,
title="Inputs"
)
class ImageIOConfigModel(BaseSettingsModel):
- override_global_config: bool = Field(
+ override_global_config: bool = SettingsField(
False,
title="Override global OCIO config"
)
- filepath: list[str] = Field(
+ filepath: list[str] = SettingsField(
default_factory=list,
title="Config path"
)
class ImageIOFileRuleModel(BaseSettingsModel):
- name: str = Field("", title="Rule name")
- pattern: str = Field("", title="Regex pattern")
- colorspace: str = Field("", title="Colorspace name")
- ext: str = Field("", title="File extension")
+ name: str = SettingsField("", title="Rule name")
+ pattern: str = SettingsField("", title="Regex pattern")
+ colorspace: str = SettingsField("", title="Colorspace name")
+ ext: str = SettingsField("", title="File extension")
class ImageIOFileRulesModel(BaseSettingsModel):
- activate_host_rules: bool = Field(False)
- rules: list[ImageIOFileRuleModel] = Field(
+ activate_host_rules: bool = SettingsField(False)
+ rules: list[ImageIOFileRuleModel] = SettingsField(
default_factory=list,
title="Rules"
)
@@ -119,18 +120,18 @@ def validate_unique_outputs(cls, value):
class ImageIOSettings(BaseSettingsModel):
"""Hiero color management project settings. """
_isGroup: bool = True
- activate_host_color_management: bool = Field(
+ activate_host_color_management: bool = SettingsField(
True, title="Enable Color Management"
)
- ocio_config: ImageIOConfigModel = Field(
+ ocio_config: ImageIOConfigModel = SettingsField(
default_factory=ImageIOConfigModel,
title="OCIO config"
)
- file_rules: ImageIOFileRulesModel = Field(
+ file_rules: ImageIOFileRulesModel = SettingsField(
default_factory=ImageIOFileRulesModel,
title="File Rules"
)
- workfile: WorkfileColorspaceSettings = Field(
+ workfile: WorkfileColorspaceSettings = SettingsField(
default_factory=WorkfileColorspaceSettings,
title="Workfile"
)
@@ -140,7 +141,7 @@ class ImageIOSettings(BaseSettingsModel):
- no need for `inputs` middle part. It can stay
directly on `regex_inputs`
"""
- regexInputs: RegexInputsModel = Field(
+ regexInputs: RegexInputsModel = SettingsField(
default_factory=RegexInputsModel,
title="Assign colorspace to clips via rules"
)
diff --git a/server_addon/hiero/server/settings/loader_plugins.py b/server_addon/hiero/server/settings/loader_plugins.py
index 83b3564c2a4..b5a81d1ae26 100644
--- a/server_addon/hiero/server/settings/loader_plugins.py
+++ b/server_addon/hiero/server/settings/loader_plugins.py
@@ -1,23 +1,22 @@
-from pydantic import Field
-from ayon_server.settings import BaseSettingsModel
+from ayon_server.settings import BaseSettingsModel, SettingsField
class LoadClipModel(BaseSettingsModel):
- enabled: bool = Field(
+ enabled: bool = SettingsField(
True,
title="Enabled"
)
- product_types: list[str] = Field(
+ product_types: list[str] = SettingsField(
default_factory=list,
title="Product types"
)
- clip_name_template: str = Field(
+ clip_name_template: str = SettingsField(
title="Clip name template"
)
class LoaderPuginsModel(BaseSettingsModel):
- LoadClip: LoadClipModel = Field(
+ LoadClip: LoadClipModel = SettingsField(
default_factory=LoadClipModel,
title="Load Clip"
)
diff --git a/server_addon/hiero/server/settings/main.py b/server_addon/hiero/server/settings/main.py
index 47f8110c22f..b170ecafb83 100644
--- a/server_addon/hiero/server/settings/main.py
+++ b/server_addon/hiero/server/settings/main.py
@@ -1,6 +1,4 @@
-from pydantic import Field
-
-from ayon_server.settings import BaseSettingsModel
+from ayon_server.settings import BaseSettingsModel, SettingsField
from .imageio import (
ImageIOSettings,
@@ -28,28 +26,28 @@
class HieroSettings(BaseSettingsModel):
"""Nuke addon settings."""
- imageio: ImageIOSettings = Field(
+ imageio: ImageIOSettings = SettingsField(
default_factory=ImageIOSettings,
title="Color Management (imageio)",
)
- create: CreatorPluginsSettings = Field(
+ create: CreatorPluginsSettings = SettingsField(
default_factory=CreatorPluginsSettings,
title="Creator Plugins",
)
- load: LoaderPuginsModel = Field(
+ load: LoaderPuginsModel = SettingsField(
default_factory=LoaderPuginsModel,
title="Loader plugins"
)
- publish: PublishPuginsModel = Field(
+ publish: PublishPuginsModel = SettingsField(
default_factory=PublishPuginsModel,
title="Publish plugins"
)
- scriptsmenu: ScriptsmenuSettings = Field(
+ scriptsmenu: ScriptsmenuSettings = SettingsField(
default_factory=ScriptsmenuSettings,
title="Scripts Menu Definition",
)
- filters: list[PublishGUIFilterItemModel] = Field(
+ filters: list[PublishGUIFilterItemModel] = SettingsField(
default_factory=list
)
diff --git a/server_addon/hiero/server/settings/publish_plugins.py b/server_addon/hiero/server/settings/publish_plugins.py
index f3d1e21fe4a..c35c61c3323 100644
--- a/server_addon/hiero/server/settings/publish_plugins.py
+++ b/server_addon/hiero/server/settings/publish_plugins.py
@@ -1,11 +1,14 @@
-from pydantic import Field, validator
+from pydantic import validator
from ayon_server.settings import (
- BaseSettingsModel, ensure_unique_names, normalize_name
+ BaseSettingsModel,
+ SettingsField,
+ ensure_unique_names,
+ normalize_name,
)
class CollectInstanceVersionModel(BaseSettingsModel):
- enabled: bool = Field(
+ enabled: bool = SettingsField(
True,
title="Enabled"
)
@@ -13,8 +16,8 @@ class CollectInstanceVersionModel(BaseSettingsModel):
class CollectClipEffectsDefModel(BaseSettingsModel):
_layout = "expanded"
- name: str = Field("", title="Name")
- effect_classes: list[str] = Field(
+ name: str = SettingsField("", title="Name")
+ effect_classes: list[str] = SettingsField(
default_factory=list, title="Effect Classes"
)
@@ -25,7 +28,7 @@ def validate_name(cls, value):
class CollectClipEffectsModel(BaseSettingsModel):
- effect_categories: list[CollectClipEffectsDefModel] = Field(
+ effect_categories: list[CollectClipEffectsDefModel] = SettingsField(
default_factory=list, title="Effect Categories"
)
@@ -36,22 +39,22 @@ def validate_unique_outputs(cls, value):
class ExtractReviewCutUpVideoModel(BaseSettingsModel):
- enabled: bool = Field(
+ enabled: bool = SettingsField(
True,
title="Enabled"
)
- tags_addition: list[str] = Field(
+ tags_addition: list[str] = SettingsField(
default_factory=list,
title="Additional tags"
)
class PublishPuginsModel(BaseSettingsModel):
- CollectInstanceVersion: CollectInstanceVersionModel = Field(
+ CollectInstanceVersion: CollectInstanceVersionModel = SettingsField(
default_factory=CollectInstanceVersionModel,
title="Collect Instance Version"
)
- CollectClipEffects: CollectClipEffectsModel = Field(
+ CollectClipEffects: CollectClipEffectsModel = SettingsField(
default_factory=CollectClipEffectsModel,
title="Collect Clip Effects"
)
@@ -59,7 +62,7 @@ class PublishPuginsModel(BaseSettingsModel):
Rename class name and plugin name
to match title (it makes more sense)
"""
- ExtractReviewCutUpVideo: ExtractReviewCutUpVideoModel = Field(
+ ExtractReviewCutUpVideo: ExtractReviewCutUpVideoModel = SettingsField(
default_factory=ExtractReviewCutUpVideoModel,
title="Exctract Review Trim"
)
diff --git a/server_addon/hiero/server/settings/scriptsmenu.py b/server_addon/hiero/server/settings/scriptsmenu.py
index ea898dd7ffe..a627da96437 100644
--- a/server_addon/hiero/server/settings/scriptsmenu.py
+++ b/server_addon/hiero/server/settings/scriptsmenu.py
@@ -1,16 +1,15 @@
-from pydantic import Field
-from ayon_server.settings import BaseSettingsModel
+from ayon_server.settings import BaseSettingsModel, SettingsField
class ScriptsmenuSubmodel(BaseSettingsModel):
"""Item Definition"""
_isGroup = True
- type: str = Field(title="Type")
- command: str = Field(title="Command")
- sourcetype: str = Field(title="Source Type")
- title: str = Field(title="Title")
- tooltip: str = Field(title="Tooltip")
+ type: str = SettingsField(title="Type")
+ command: str = SettingsField(title="Command")
+ sourcetype: str = SettingsField(title="Source Type")
+ title: str = SettingsField(title="Title")
+ tooltip: str = SettingsField(title="Tooltip")
class ScriptsmenuSettings(BaseSettingsModel):
@@ -20,8 +19,8 @@ class ScriptsmenuSettings(BaseSettingsModel):
"""# TODO: enhance settings with host api:
- in api rename key `name` to `menu_name`
"""
- name: str = Field(title="Menu name")
- definition: list[ScriptsmenuSubmodel] = Field(
+ name: str = SettingsField(title="Menu name")
+ definition: list[ScriptsmenuSubmodel] = SettingsField(
default_factory=list,
title="Definition",
description="Scriptmenu Items Definition")
diff --git a/server_addon/houdini/server/settings/create.py b/server_addon/houdini/server/settings/create.py
index a5ca4d477b4..203ca4f9d65 100644
--- a/server_addon/houdini/server/settings/create.py
+++ b/server_addon/houdini/server/settings/create.py
@@ -1,92 +1,91 @@
-from pydantic import Field
-from ayon_server.settings import BaseSettingsModel
+from ayon_server.settings import BaseSettingsModel, SettingsField
# Creator Plugins
class CreatorModel(BaseSettingsModel):
- enabled: bool = Field(title="Enabled")
- default_variants: list[str] = Field(
+ enabled: bool = SettingsField(title="Enabled")
+ default_variants: list[str] = SettingsField(
title="Default Products",
default_factory=list,
)
class CreateArnoldAssModel(BaseSettingsModel):
- enabled: bool = Field(title="Enabled")
- default_variants: list[str] = Field(
+ enabled: bool = SettingsField(title="Enabled")
+ default_variants: list[str] = SettingsField(
title="Default Products",
default_factory=list,
)
- ext: str = Field(Title="Extension")
+ ext: str = SettingsField(Title="Extension")
class CreateStaticMeshModel(BaseSettingsModel):
- enabled: bool = Field(title="Enabled")
- default_variants: list[str] = Field(
+ enabled: bool = SettingsField(title="Enabled")
+ default_variants: list[str] = SettingsField(
default_factory=list,
title="Default Products"
)
- static_mesh_prefix: str = Field("S", title="Static Mesh Prefix")
- collision_prefixes: list[str] = Field(
+ static_mesh_prefix: str = SettingsField("S", title="Static Mesh Prefix")
+ collision_prefixes: list[str] = SettingsField(
default_factory=list,
title="Collision Prefixes"
)
class CreatePluginsModel(BaseSettingsModel):
- CreateAlembicCamera: CreatorModel = Field(
+ CreateAlembicCamera: CreatorModel = SettingsField(
default_factory=CreatorModel,
title="Create Alembic Camera")
- CreateArnoldAss: CreateArnoldAssModel = Field(
+ CreateArnoldAss: CreateArnoldAssModel = SettingsField(
default_factory=CreateArnoldAssModel,
title="Create Arnold Ass")
- CreateArnoldRop: CreatorModel = Field(
+ CreateArnoldRop: CreatorModel = SettingsField(
default_factory=CreatorModel,
title="Create Arnold ROP")
- CreateCompositeSequence: CreatorModel = Field(
+ CreateCompositeSequence: CreatorModel = SettingsField(
default_factory=CreatorModel,
title="Create Composite (Image Sequence)")
- CreateHDA: CreatorModel = Field(
+ CreateHDA: CreatorModel = SettingsField(
default_factory=CreatorModel,
title="Create Houdini Digital Asset")
- CreateKarmaROP: CreatorModel = Field(
+ CreateKarmaROP: CreatorModel = SettingsField(
default_factory=CreatorModel,
title="Create Karma ROP")
- CreateMantraIFD: CreatorModel = Field(
+ CreateMantraIFD: CreatorModel = SettingsField(
default_factory=CreatorModel,
title="Create Mantra IFD")
- CreateMantraROP: CreatorModel = Field(
+ CreateMantraROP: CreatorModel = SettingsField(
default_factory=CreatorModel,
title="Create Mantra ROP")
- CreatePointCache: CreatorModel = Field(
+ CreatePointCache: CreatorModel = SettingsField(
default_factory=CreatorModel,
title="Create PointCache (Abc)")
- CreateBGEO: CreatorModel = Field(
+ CreateBGEO: CreatorModel = SettingsField(
default_factory=CreatorModel,
title="Create PointCache (Bgeo)")
- CreateRedshiftProxy: CreatorModel = Field(
+ CreateRedshiftProxy: CreatorModel = SettingsField(
default_factory=CreatorModel,
title="Create Redshift Proxy")
- CreateRedshiftROP: CreatorModel = Field(
+ CreateRedshiftROP: CreatorModel = SettingsField(
default_factory=CreatorModel,
title="Create Redshift ROP")
- CreateReview: CreatorModel = Field(
+ CreateReview: CreatorModel = SettingsField(
default_factory=CreatorModel,
title="Create Review")
# "-" is not compatible in the new model
- CreateStaticMesh: CreateStaticMeshModel = Field(
+ CreateStaticMesh: CreateStaticMeshModel = SettingsField(
default_factory=CreateStaticMeshModel,
title="Create Static Mesh")
- CreateUSD: CreatorModel = Field(
+ CreateUSD: CreatorModel = SettingsField(
default_factory=CreatorModel,
title="Create USD (experimental)")
- CreateUSDRender: CreatorModel = Field(
+ CreateUSDRender: CreatorModel = SettingsField(
default_factory=CreatorModel,
title="Create USD render (experimental)")
- CreateVDBCache: CreatorModel = Field(
+ CreateVDBCache: CreatorModel = SettingsField(
default_factory=CreatorModel,
title="Create VDB Cache")
- CreateVrayROP: CreatorModel = Field(
+ CreateVrayROP: CreatorModel = SettingsField(
default_factory=CreatorModel,
title="Create VRay ROP")
diff --git a/server_addon/houdini/server/settings/general.py b/server_addon/houdini/server/settings/general.py
index aee44f16488..b71feae5549 100644
--- a/server_addon/houdini/server/settings/general.py
+++ b/server_addon/houdini/server/settings/general.py
@@ -1,12 +1,11 @@
-from pydantic import Field
-from ayon_server.settings import BaseSettingsModel
+from ayon_server.settings import BaseSettingsModel, SettingsField
class HoudiniVarModel(BaseSettingsModel):
_layout = "expanded"
- var: str = Field("", title="Var")
- value: str = Field("", title="Value")
- is_directory: bool = Field(False, title="Treat as directory")
+ var: str = SettingsField("", title="Var")
+ value: str = SettingsField("", title="Value")
+ is_directory: bool = SettingsField(False, title="Treat as directory")
class UpdateHoudiniVarcontextModel(BaseSettingsModel):
@@ -16,20 +15,20 @@ class UpdateHoudiniVarcontextModel(BaseSettingsModel):
it will be ensured the folder exists.
"""
- enabled: bool = Field(title="Enabled")
+ enabled: bool = SettingsField(title="Enabled")
# TODO this was dynamic dictionary '{var: path}'
- houdini_vars: list[HoudiniVarModel] = Field(
+ houdini_vars: list[HoudiniVarModel] = SettingsField(
default_factory=list,
title="Houdini Vars"
)
class GeneralSettingsModel(BaseSettingsModel):
- add_self_publish_button: bool = Field(
+ add_self_publish_button: bool = SettingsField(
False,
title="Add Self Publish Button"
)
- update_houdini_var_context: UpdateHoudiniVarcontextModel = Field(
+ update_houdini_var_context: UpdateHoudiniVarcontextModel = SettingsField(
default_factory=UpdateHoudiniVarcontextModel,
title="Update Houdini Vars on context change"
)
diff --git a/server_addon/houdini/server/settings/imageio.py b/server_addon/houdini/server/settings/imageio.py
index 88aa40ecd64..f4850c5df7f 100644
--- a/server_addon/houdini/server/settings/imageio.py
+++ b/server_addon/houdini/server/settings/imageio.py
@@ -1,29 +1,29 @@
-from pydantic import Field, validator
-from ayon_server.settings import BaseSettingsModel
+from pydantic import validator
+from ayon_server.settings import BaseSettingsModel, SettingsField
from ayon_server.settings.validators import ensure_unique_names
class ImageIOConfigModel(BaseSettingsModel):
- override_global_config: bool = Field(
+ override_global_config: bool = SettingsField(
False,
title="Override global OCIO config"
)
- filepath: list[str] = Field(
+ filepath: list[str] = SettingsField(
default_factory=list,
title="Config path"
)
class ImageIOFileRuleModel(BaseSettingsModel):
- name: str = Field("", title="Rule name")
- pattern: str = Field("", title="Regex pattern")
- colorspace: str = Field("", title="Colorspace name")
- ext: str = Field("", title="File extension")
+ name: str = SettingsField("", title="Rule name")
+ pattern: str = SettingsField("", title="Regex pattern")
+ colorspace: str = SettingsField("", title="Colorspace name")
+ ext: str = SettingsField("", title="File extension")
class ImageIOFileRulesModel(BaseSettingsModel):
- activate_host_rules: bool = Field(False)
- rules: list[ImageIOFileRuleModel] = Field(
+ activate_host_rules: bool = SettingsField(False)
+ rules: list[ImageIOFileRuleModel] = SettingsField(
default_factory=list,
title="Rules"
)
@@ -35,14 +35,14 @@ def validate_unique_outputs(cls, value):
class HoudiniImageIOModel(BaseSettingsModel):
- activate_host_color_management: bool = Field(
+ activate_host_color_management: bool = SettingsField(
True, title="Enable Color Management"
)
- ocio_config: ImageIOConfigModel = Field(
+ ocio_config: ImageIOConfigModel = SettingsField(
default_factory=ImageIOConfigModel,
title="OCIO config"
)
- file_rules: ImageIOFileRulesModel = Field(
+ file_rules: ImageIOFileRulesModel = SettingsField(
default_factory=ImageIOFileRulesModel,
title="File Rules"
)
diff --git a/server_addon/houdini/server/settings/main.py b/server_addon/houdini/server/settings/main.py
index 9cfec54f22d..cbb19d15b78 100644
--- a/server_addon/houdini/server/settings/main.py
+++ b/server_addon/houdini/server/settings/main.py
@@ -1,5 +1,4 @@
-from pydantic import Field
-from ayon_server.settings import BaseSettingsModel
+from ayon_server.settings import BaseSettingsModel, SettingsField
from .general import (
GeneralSettingsModel,
DEFAULT_GENERAL_SETTINGS
@@ -17,23 +16,23 @@
class HoudiniSettings(BaseSettingsModel):
- general: GeneralSettingsModel = Field(
+ general: GeneralSettingsModel = SettingsField(
default_factory=GeneralSettingsModel,
title="General"
)
- imageio: HoudiniImageIOModel = Field(
+ imageio: HoudiniImageIOModel = SettingsField(
default_factory=HoudiniImageIOModel,
title="Color Management (ImageIO)"
)
- shelves: list[ShelvesModel] = Field(
+ shelves: list[ShelvesModel] = SettingsField(
default_factory=list,
title="Shelves Manager",
)
- create: CreatePluginsModel = Field(
+ create: CreatePluginsModel = SettingsField(
default_factory=CreatePluginsModel,
title="Creator Plugins",
)
- publish: PublishPluginsModel = Field(
+ publish: PublishPluginsModel = SettingsField(
default_factory=PublishPluginsModel,
title="Publish Plugins",
)
diff --git a/server_addon/houdini/server/settings/publish.py b/server_addon/houdini/server/settings/publish.py
index f551b3a2097..1741568d634 100644
--- a/server_addon/houdini/server/settings/publish.py
+++ b/server_addon/houdini/server/settings/publish.py
@@ -1,5 +1,4 @@
-from pydantic import Field
-from ayon_server.settings import BaseSettingsModel
+from ayon_server.settings import BaseSettingsModel, SettingsField
# Publish Plugins
@@ -9,64 +8,64 @@ class CollectAssetHandlesModel(BaseSettingsModel):
ignore start and end handles specified in the
asset data for publish instances
"""
- use_asset_handles: bool = Field(
+ use_asset_handles: bool = SettingsField(
title="Use asset handles")
class CollectChunkSizeModel(BaseSettingsModel):
"""Collect Chunk Size."""
- enabled: bool = Field(title="Enabled")
- optional: bool = Field(title="Optional")
- chunk_size: int = Field(
+ enabled: bool = SettingsField(title="Enabled")
+ optional: bool = SettingsField(title="Optional")
+ chunk_size: int = SettingsField(
title="Frames Per Task")
class ValidateWorkfilePathsModel(BaseSettingsModel):
- enabled: bool = Field(title="Enabled")
- optional: bool = Field(title="Optional")
- node_types: list[str] = Field(
+ enabled: bool = SettingsField(title="Enabled")
+ optional: bool = SettingsField(title="Optional")
+ node_types: list[str] = SettingsField(
default_factory=list,
title="Node Types"
)
- prohibited_vars: list[str] = Field(
+ prohibited_vars: list[str] = SettingsField(
default_factory=list,
title="Prohibited Variables"
)
class BasicValidateModel(BaseSettingsModel):
- enabled: bool = Field(title="Enabled")
- optional: bool = Field(title="Optional")
- active: bool = Field(title="Active")
+ enabled: bool = SettingsField(title="Enabled")
+ optional: bool = SettingsField(title="Optional")
+ active: bool = SettingsField(title="Active")
class PublishPluginsModel(BaseSettingsModel):
- CollectAssetHandles: CollectAssetHandlesModel = Field(
+ CollectAssetHandles: CollectAssetHandlesModel = SettingsField(
default_factory=CollectAssetHandlesModel,
title="Collect Asset Handles.",
section="Collectors"
)
- CollectChunkSize: CollectChunkSizeModel = Field(
+ CollectChunkSize: CollectChunkSizeModel = SettingsField(
default_factory=CollectChunkSizeModel,
title="Collect Chunk Size."
)
- ValidateContainers: BasicValidateModel = Field(
+ ValidateContainers: BasicValidateModel = SettingsField(
default_factory=BasicValidateModel,
title="Validate Latest Containers.",
section="Validators")
- ValidateMeshIsStatic: BasicValidateModel = Field(
+ ValidateMeshIsStatic: BasicValidateModel = SettingsField(
default_factory=BasicValidateModel,
title="Validate Mesh is Static.")
- ValidateReviewColorspace: BasicValidateModel = Field(
+ ValidateReviewColorspace: BasicValidateModel = SettingsField(
default_factory=BasicValidateModel,
title="Validate Review Colorspace.")
- ValidateSubsetName: BasicValidateModel = Field(
+ ValidateSubsetName: BasicValidateModel = SettingsField(
default_factory=BasicValidateModel,
title="Validate Subset Name.")
- ValidateUnrealStaticMeshName: BasicValidateModel = Field(
+ ValidateUnrealStaticMeshName: BasicValidateModel = SettingsField(
default_factory=BasicValidateModel,
title="Validate Unreal Static Mesh Name.")
- ValidateWorkfilePaths: ValidateWorkfilePathsModel = Field(
+ ValidateWorkfilePaths: ValidateWorkfilePathsModel = SettingsField(
default_factory=ValidateWorkfilePathsModel,
title="Validate workfile paths settings.")
diff --git a/server_addon/houdini/server/settings/shelves.py b/server_addon/houdini/server/settings/shelves.py
index 133c18f77c8..f6d7f1d06c7 100644
--- a/server_addon/houdini/server/settings/shelves.py
+++ b/server_addon/houdini/server/settings/shelves.py
@@ -1,37 +1,37 @@
-from pydantic import Field
from ayon_server.settings import (
BaseSettingsModel,
+ SettingsField,
MultiplatformPathModel
)
class ShelfToolsModel(BaseSettingsModel):
"""Name and Script Path are mandatory."""
- label: str = Field(title="Name")
- script: str = Field(title="Script Path")
- icon: str = Field("", title="Icon Path")
- help: str = Field("", title="Help text")
+ label: str = SettingsField(title="Name")
+ script: str = SettingsField(title="Script Path")
+ icon: str = SettingsField("", title="Icon Path")
+ help: str = SettingsField("", title="Help text")
class ShelfDefinitionModel(BaseSettingsModel):
_layout = "expanded"
- shelf_name: str = Field(title="Shelf name")
- tools_list: list[ShelfToolsModel] = Field(
+ shelf_name: str = SettingsField(title="Shelf name")
+ tools_list: list[ShelfToolsModel] = SettingsField(
default_factory=list,
title="Shelf Tools"
)
class AddShelfFileModel(BaseSettingsModel):
- shelf_set_source_path: MultiplatformPathModel = Field(
+ shelf_set_source_path: MultiplatformPathModel = SettingsField(
default_factory=MultiplatformPathModel,
title="Shelf Set Path"
)
class AddSetAndDefinitionsModel(BaseSettingsModel):
- shelf_set_name: str = Field("", title="Shelf Set Name")
- shelf_definition: list[ShelfDefinitionModel] = Field(
+ shelf_set_name: str = SettingsField("", title="Shelf Set Name")
+ shelf_definition: list[ShelfDefinitionModel] = SettingsField(
default_factory=list,
title="Shelves Definitions"
)
@@ -51,17 +51,17 @@ def shelves_enum_options():
class ShelvesModel(BaseSettingsModel):
- options: str = Field(
+ options: str = SettingsField(
title="Options",
description="Switch between shelves manager options",
enum_resolver=shelves_enum_options,
conditionalEnum=True
)
- add_shelf_file: AddShelfFileModel = Field(
+ add_shelf_file: AddShelfFileModel = SettingsField(
title="Add a .shelf file",
default_factory=AddShelfFileModel
)
- add_set_and_definitions: AddSetAndDefinitionsModel = Field(
+ add_set_and_definitions: AddSetAndDefinitionsModel = SettingsField(
title="Add Shelf Set Name and Shelves Definitions",
default_factory=AddSetAndDefinitionsModel
)
diff --git a/server_addon/max/server/settings/create_review_settings.py b/server_addon/max/server/settings/create_review_settings.py
index 43dac0730a1..807976a391a 100644
--- a/server_addon/max/server/settings/create_review_settings.py
+++ b/server_addon/max/server/settings/create_review_settings.py
@@ -1,6 +1,4 @@
-from pydantic import Field
-
-from ayon_server.settings import BaseSettingsModel
+from ayon_server.settings import BaseSettingsModel, SettingsField
def image_format_enum():
@@ -57,27 +55,27 @@ def anti_aliasing_enum():
class CreateReviewModel(BaseSettingsModel):
- review_width: int = Field(1920, title="Review Width")
- review_height: int = Field(1080, title="Review Height")
- percentSize: float = Field(100.0, title="Percent of Output")
- keep_images: bool = Field(False, title="Keep Image Sequences")
- image_format: str = Field(
+ review_width: int = SettingsField(1920, title="Review Width")
+ review_height: int = SettingsField(1080, title="Review Height")
+ percentSize: float = SettingsField(100.0, title="Percent of Output")
+ keep_images: bool = SettingsField(False, title="Keep Image Sequences")
+ image_format: str = SettingsField(
enum_resolver=image_format_enum,
title="Image Format Options"
)
- visual_style: str = Field(
+ visual_style: str = SettingsField(
enum_resolver=visual_style_enum,
title="Preference"
)
- viewport_preset: str = Field(
+ viewport_preset: str = SettingsField(
enum_resolver=preview_preset_enum,
title="Preview Preset"
)
- anti_aliasing: str = Field(
+ anti_aliasing: str = SettingsField(
enum_resolver=anti_aliasing_enum,
title="Anti-aliasing Quality"
)
- vp_texture: bool = Field(True, title="Viewport Texture")
+ vp_texture: bool = SettingsField(True, title="Viewport Texture")
DEFAULT_CREATE_REVIEW_SETTINGS = {
diff --git a/server_addon/max/server/settings/imageio.py b/server_addon/max/server/settings/imageio.py
index 5e46104fa73..221f85a41f4 100644
--- a/server_addon/max/server/settings/imageio.py
+++ b/server_addon/max/server/settings/imageio.py
@@ -1,29 +1,29 @@
-from pydantic import Field, validator
-from ayon_server.settings import BaseSettingsModel
+from pydantic import validator
+from ayon_server.settings import BaseSettingsModel, SettingsField
from ayon_server.settings.validators import ensure_unique_names
class ImageIOConfigModel(BaseSettingsModel):
- override_global_config: bool = Field(
+ override_global_config: bool = SettingsField(
False,
title="Override global OCIO config"
)
- filepath: list[str] = Field(
+ filepath: list[str] = SettingsField(
default_factory=list,
title="Config path"
)
class ImageIOFileRuleModel(BaseSettingsModel):
- name: str = Field("", title="Rule name")
- pattern: str = Field("", title="Regex pattern")
- colorspace: str = Field("", title="Colorspace name")
- ext: str = Field("", title="File extension")
+ name: str = SettingsField("", title="Rule name")
+ pattern: str = SettingsField("", title="Regex pattern")
+ colorspace: str = SettingsField("", title="Colorspace name")
+ ext: str = SettingsField("", title="File extension")
class ImageIOFileRulesModel(BaseSettingsModel):
- activate_host_rules: bool = Field(False)
- rules: list[ImageIOFileRuleModel] = Field(
+ activate_host_rules: bool = SettingsField(False)
+ rules: list[ImageIOFileRuleModel] = SettingsField(
default_factory=list,
title="Rules"
)
@@ -35,14 +35,14 @@ def validate_unique_outputs(cls, value):
class ImageIOSettings(BaseSettingsModel):
- activate_host_color_management: bool = Field(
+ activate_host_color_management: bool = SettingsField(
True, title="Enable Color Management"
)
- ocio_config: ImageIOConfigModel = Field(
+ ocio_config: ImageIOConfigModel = SettingsField(
default_factory=ImageIOConfigModel,
title="OCIO config"
)
- file_rules: ImageIOFileRulesModel = Field(
+ file_rules: ImageIOFileRulesModel = SettingsField(
default_factory=ImageIOFileRulesModel,
title="File Rules"
)
diff --git a/server_addon/max/server/settings/main.py b/server_addon/max/server/settings/main.py
index cad6024cf7f..7b0bfc64217 100644
--- a/server_addon/max/server/settings/main.py
+++ b/server_addon/max/server/settings/main.py
@@ -1,5 +1,4 @@
-from pydantic import Field
-from ayon_server.settings import BaseSettingsModel
+from ayon_server.settings import BaseSettingsModel, SettingsField
from .imageio import ImageIOSettings
from .render_settings import (
RenderSettingsModel, DEFAULT_RENDER_SETTINGS
@@ -23,8 +22,8 @@ def unit_scale_enum():
class UnitScaleSettings(BaseSettingsModel):
- enabled: bool = Field(True, title="Enabled")
- scene_unit_scale: str = Field(
+ enabled: bool = SettingsField(True, title="Enabled")
+ scene_unit_scale: str = SettingsField(
"Centimeters",
title="Scene Unit Scale",
enum_resolver=unit_scale_enum
@@ -33,37 +32,37 @@ class UnitScaleSettings(BaseSettingsModel):
class PRTAttributesModel(BaseSettingsModel):
_layout = "compact"
- name: str = Field(title="Name")
- value: str = Field(title="Attribute")
+ name: str = SettingsField(title="Name")
+ value: str = SettingsField(title="Attribute")
class PointCloudSettings(BaseSettingsModel):
- attribute: list[PRTAttributesModel] = Field(
+ attribute: list[PRTAttributesModel] = SettingsField(
default_factory=list, title="Channel Attribute")
class MaxSettings(BaseSettingsModel):
- unit_scale_settings: UnitScaleSettings = Field(
+ unit_scale_settings: UnitScaleSettings = SettingsField(
default_factory=UnitScaleSettings,
title="Set Unit Scale"
)
- imageio: ImageIOSettings = Field(
+ imageio: ImageIOSettings = SettingsField(
default_factory=ImageIOSettings,
title="Color Management (ImageIO)"
)
- RenderSettings: RenderSettingsModel = Field(
+ RenderSettings: RenderSettingsModel = SettingsField(
default_factory=RenderSettingsModel,
title="Render Settings"
)
- CreateReview: CreateReviewModel = Field(
+ CreateReview: CreateReviewModel = SettingsField(
default_factory=CreateReviewModel,
title="Create Review"
)
- PointCloud: PointCloudSettings = Field(
+ PointCloud: PointCloudSettings = SettingsField(
default_factory=PointCloudSettings,
title="Point Cloud"
)
- publish: PublishersModel = Field(
+ publish: PublishersModel = SettingsField(
default_factory=PublishersModel,
title="Publish Plugins")
diff --git a/server_addon/max/server/settings/publishers.py b/server_addon/max/server/settings/publishers.py
index d40d85a99be..da782cb4949 100644
--- a/server_addon/max/server/settings/publishers.py
+++ b/server_addon/max/server/settings/publishers.py
@@ -1,13 +1,13 @@
import json
-from pydantic import Field, validator
+from pydantic import validator
-from ayon_server.settings import BaseSettingsModel
+from ayon_server.settings import BaseSettingsModel, SettingsField
from ayon_server.exceptions import BadRequestException
class ValidateAttributesModel(BaseSettingsModel):
- enabled: bool = Field(title="ValidateAttributes")
- attributes: str = Field(
+ enabled: bool = SettingsField(title="ValidateAttributes")
+ attributes: str = SettingsField(
"{}", title="Attributes", widget="textarea")
@validator("attributes")
@@ -28,64 +28,64 @@ def validate_json(cls, value):
class FamilyMappingItemModel(BaseSettingsModel):
- product_types: list[str] = Field(
+ product_types: list[str] = SettingsField(
default_factory=list,
title="Product Types"
)
- plugins: list[str] = Field(
+ plugins: list[str] = SettingsField(
default_factory=list,
title="Plugins"
)
class ValidateLoadedPluginModel(BaseSettingsModel):
- enabled: bool = Field(title="Enabled")
- optional: bool = Field(title="Optional")
- family_plugins_mapping: list[FamilyMappingItemModel] = Field(
+ enabled: bool = SettingsField(title="Enabled")
+ optional: bool = SettingsField(title="Optional")
+ family_plugins_mapping: list[FamilyMappingItemModel] = SettingsField(
default_factory=list,
title="Family Plugins Mapping"
)
class BasicValidateModel(BaseSettingsModel):
- enabled: bool = Field(title="Enabled")
- optional: bool = Field(title="Optional")
- active: bool = Field(title="Active")
+ enabled: bool = SettingsField(title="Enabled")
+ optional: bool = SettingsField(title="Optional")
+ active: bool = SettingsField(title="Active")
class PublishersModel(BaseSettingsModel):
- ValidateFrameRange: BasicValidateModel = Field(
+ ValidateFrameRange: BasicValidateModel = SettingsField(
default_factory=BasicValidateModel,
title="Validate Frame Range",
section="Validators"
)
- ValidateAttributes: ValidateAttributesModel = Field(
+ ValidateAttributes: ValidateAttributesModel = SettingsField(
default_factory=ValidateAttributesModel,
title="Validate Attributes"
)
- ValidateLoadedPlugin: ValidateLoadedPluginModel = Field(
+ ValidateLoadedPlugin: ValidateLoadedPluginModel = SettingsField(
default_factory=ValidateLoadedPluginModel,
title="Validate Loaded Plugin"
)
- ExtractModelObj: BasicValidateModel = Field(
+ ExtractModelObj: BasicValidateModel = SettingsField(
default_factory=BasicValidateModel,
title="Extract OBJ",
section="Extractors"
)
- ExtractModelFbx: BasicValidateModel = Field(
+ ExtractModelFbx: BasicValidateModel = SettingsField(
default_factory=BasicValidateModel,
title="Extract FBX"
)
- ExtractModelUSD: BasicValidateModel = Field(
+ ExtractModelUSD: BasicValidateModel = SettingsField(
default_factory=BasicValidateModel,
title="Extract Geometry (USD)"
)
- ExtractModel: BasicValidateModel = Field(
+ ExtractModel: BasicValidateModel = SettingsField(
default_factory=BasicValidateModel,
title="Extract Geometry (Alembic)"
)
- ExtractMaxSceneRaw: BasicValidateModel = Field(
+ ExtractMaxSceneRaw: BasicValidateModel = SettingsField(
default_factory=BasicValidateModel,
title="Extract Max Scene (Raw)"
)
diff --git a/server_addon/max/server/settings/render_settings.py b/server_addon/max/server/settings/render_settings.py
index c00cb5e4360..19d36dd0f82 100644
--- a/server_addon/max/server/settings/render_settings.py
+++ b/server_addon/max/server/settings/render_settings.py
@@ -1,6 +1,4 @@
-from pydantic import Field
-
-from ayon_server.settings import BaseSettingsModel
+from ayon_server.settings import BaseSettingsModel, SettingsField
def aov_separators_enum():
@@ -26,19 +24,19 @@ def image_format_enum():
class RenderSettingsModel(BaseSettingsModel):
- default_render_image_folder: str = Field(
+ default_render_image_folder: str = SettingsField(
title="Default render image folder"
)
- aov_separator: str = Field(
+ aov_separator: str = SettingsField(
"underscore",
title="AOV Separator character",
enum_resolver=aov_separators_enum
)
- image_format: str = Field(
+ image_format: str = SettingsField(
enum_resolver=image_format_enum,
title="Output Image Format"
)
- multipass: bool = Field(title="multipass")
+ multipass: bool = SettingsField(title="multipass")
DEFAULT_RENDER_SETTINGS = {
diff --git a/server_addon/maya/server/settings/creators.py b/server_addon/maya/server/settings/creators.py
index 34a54832af0..5f3b850a1fe 100644
--- a/server_addon/maya/server/settings/creators.py
+++ b/server_addon/maya/server/settings/creators.py
@@ -1,232 +1,235 @@
-from pydantic import Field
-
-from ayon_server.settings import BaseSettingsModel
-from ayon_server.settings import task_types_enum
+from ayon_server.settings import (
+ BaseSettingsModel,
+ SettingsField,
+ task_types_enum,
+)
class CreateLookModel(BaseSettingsModel):
- enabled: bool = Field(title="Enabled")
- make_tx: bool = Field(title="Make tx files")
- rs_tex: bool = Field(title="Make Redshift texture files")
- default_variants: list[str] = Field(
+ enabled: bool = SettingsField(title="Enabled")
+ make_tx: bool = SettingsField(title="Make tx files")
+ rs_tex: bool = SettingsField(title="Make Redshift texture files")
+ default_variants: list[str] = SettingsField(
default_factory=list, title="Default Products"
)
class BasicCreatorModel(BaseSettingsModel):
- enabled: bool = Field(title="Enabled")
- default_variants: list[str] = Field(
+ enabled: bool = SettingsField(title="Enabled")
+ default_variants: list[str] = SettingsField(
default_factory=list,
title="Default Products"
)
class CreateUnrealStaticMeshModel(BaseSettingsModel):
- enabled: bool = Field(title="Enabled")
- default_variants: list[str] = Field(
+ enabled: bool = SettingsField(title="Enabled")
+ default_variants: list[str] = SettingsField(
default_factory=list,
title="Default Products"
)
- static_mesh_prefix: str = Field("S", title="Static Mesh Prefix")
- collision_prefixes: list[str] = Field(
+ static_mesh_prefix: str = SettingsField("S", title="Static Mesh Prefix")
+ collision_prefixes: list[str] = SettingsField(
default_factory=list,
title="Collision Prefixes"
)
class CreateUnrealSkeletalMeshModel(BaseSettingsModel):
- enabled: bool = Field(title="Enabled")
- default_variants: list[str] = Field(
+ enabled: bool = SettingsField(title="Enabled")
+ default_variants: list[str] = SettingsField(
default_factory=list, title="Default Products")
- joint_hints: str = Field("jnt_org", title="Joint root hint")
+ joint_hints: str = SettingsField("jnt_org", title="Joint root hint")
class CreateMultiverseLookModel(BaseSettingsModel):
- enabled: bool = Field(title="Enabled")
- publish_mip_map: bool = Field(title="publish_mip_map")
+ enabled: bool = SettingsField(title="Enabled")
+ publish_mip_map: bool = SettingsField(title="publish_mip_map")
class BasicExportMeshModel(BaseSettingsModel):
- enabled: bool = Field(title="Enabled")
- write_color_sets: bool = Field(title="Write Color Sets")
- write_face_sets: bool = Field(title="Write Face Sets")
- default_variants: list[str] = Field(
+ enabled: bool = SettingsField(title="Enabled")
+ write_color_sets: bool = SettingsField(title="Write Color Sets")
+ write_face_sets: bool = SettingsField(title="Write Face Sets")
+ default_variants: list[str] = SettingsField(
default_factory=list,
title="Default Products"
)
class CreateAnimationModel(BaseSettingsModel):
- write_color_sets: bool = Field(title="Write Color Sets")
- write_face_sets: bool = Field(title="Write Face Sets")
- include_parent_hierarchy: bool = Field(
+ write_color_sets: bool = SettingsField(title="Write Color Sets")
+ write_face_sets: bool = SettingsField(title="Write Face Sets")
+ include_parent_hierarchy: bool = SettingsField(
title="Include Parent Hierarchy")
- include_user_defined_attributes: bool = Field(
+ include_user_defined_attributes: bool = SettingsField(
title="Include User Defined Attributes")
- default_variants: list[str] = Field(
+ default_variants: list[str] = SettingsField(
default_factory=list,
title="Default Products"
)
class CreatePointCacheModel(BaseSettingsModel):
- enabled: bool = Field(title="Enabled")
- write_color_sets: bool = Field(title="Write Color Sets")
- write_face_sets: bool = Field(title="Write Face Sets")
- include_user_defined_attributes: bool = Field(
+ enabled: bool = SettingsField(title="Enabled")
+ write_color_sets: bool = SettingsField(title="Write Color Sets")
+ write_face_sets: bool = SettingsField(title="Write Face Sets")
+ include_user_defined_attributes: bool = SettingsField(
title="Include User Defined Attributes"
)
- default_variants: list[str] = Field(
+ default_variants: list[str] = SettingsField(
default_factory=list,
title="Default Products"
)
class CreateProxyAlembicModel(BaseSettingsModel):
- enabled: bool = Field(title="Enabled")
- write_color_sets: bool = Field(title="Write Color Sets")
- write_face_sets: bool = Field(title="Write Face Sets")
- default_variants: list[str] = Field(
+ enabled: bool = SettingsField(title="Enabled")
+ write_color_sets: bool = SettingsField(title="Write Color Sets")
+ write_face_sets: bool = SettingsField(title="Write Face Sets")
+ default_variants: list[str] = SettingsField(
default_factory=list,
title="Default Products"
)
class CreateAssModel(BasicCreatorModel):
- expandProcedurals: bool = Field(title="Expand Procedurals")
- motionBlur: bool = Field(title="Motion Blur")
- motionBlurKeys: int = Field(2, title="Motion Blur Keys")
- motionBlurLength: float = Field(0.5, title="Motion Blur Length")
- maskOptions: bool = Field(title="Mask Options")
- maskCamera: bool = Field(title="Mask Camera")
- maskLight: bool = Field(title="Mask Light")
- maskShape: bool = Field(title="Mask Shape")
- maskShader: bool = Field(title="Mask Shader")
- maskOverride: bool = Field(title="Mask Override")
- maskDriver: bool = Field(title="Mask Driver")
- maskFilter: bool = Field(title="Mask Filter")
- maskColor_manager: bool = Field(title="Mask Color Manager")
- maskOperator: bool = Field(title="Mask Operator")
+ expandProcedurals: bool = SettingsField(title="Expand Procedurals")
+ motionBlur: bool = SettingsField(title="Motion Blur")
+ motionBlurKeys: int = SettingsField(2, title="Motion Blur Keys")
+ motionBlurLength: float = SettingsField(0.5, title="Motion Blur Length")
+ maskOptions: bool = SettingsField(title="Mask Options")
+ maskCamera: bool = SettingsField(title="Mask Camera")
+ maskLight: bool = SettingsField(title="Mask Light")
+ maskShape: bool = SettingsField(title="Mask Shape")
+ maskShader: bool = SettingsField(title="Mask Shader")
+ maskOverride: bool = SettingsField(title="Mask Override")
+ maskDriver: bool = SettingsField(title="Mask Driver")
+ maskFilter: bool = SettingsField(title="Mask Filter")
+ maskColor_manager: bool = SettingsField(title="Mask Color Manager")
+ maskOperator: bool = SettingsField(title="Mask Operator")
class CreateReviewModel(BasicCreatorModel):
- useMayaTimeline: bool = Field(title="Use Maya Timeline for Frame Range.")
+ useMayaTimeline: bool = SettingsField(
+ title="Use Maya Timeline for Frame Range."
+ )
class CreateVrayProxyModel(BaseSettingsModel):
- enabled: bool = Field(True)
- vrmesh: bool = Field(title="VrMesh")
- alembic: bool = Field(title="Alembic")
- default_variants: list[str] = Field(
+ enabled: bool = SettingsField(True)
+ vrmesh: bool = SettingsField(title="VrMesh")
+ alembic: bool = SettingsField(title="Alembic")
+ default_variants: list[str] = SettingsField(
default_factory=list, title="Default Products")
class CreateMultishotLayout(BasicCreatorModel):
- shotParent: str = Field(title="Shot Parent Folder")
- groupLoadedAssets: bool = Field(title="Group Loaded Assets")
- task_type: list[str] = Field(
+ shotParent: str = SettingsField(title="Shot Parent Folder")
+ groupLoadedAssets: bool = SettingsField(title="Group Loaded Assets")
+ task_type: list[str] = SettingsField(
title="Task types",
enum_resolver=task_types_enum
)
- task_name: str = Field(title="Task name (regex)")
+ task_name: str = SettingsField(title="Task name (regex)")
class CreatorsModel(BaseSettingsModel):
- CreateLook: CreateLookModel = Field(
+ CreateLook: CreateLookModel = SettingsField(
default_factory=CreateLookModel,
title="Create Look"
)
- CreateRender: BasicCreatorModel = Field(
+ CreateRender: BasicCreatorModel = SettingsField(
default_factory=BasicCreatorModel,
title="Create Render"
)
# "-" is not compatible in the new model
- CreateUnrealStaticMesh: CreateUnrealStaticMeshModel = Field(
+ CreateUnrealStaticMesh: CreateUnrealStaticMeshModel = SettingsField(
default_factory=CreateUnrealStaticMeshModel,
title="Create Unreal_Static Mesh"
)
# "-" is not compatible in the new model
- CreateUnrealSkeletalMesh: CreateUnrealSkeletalMeshModel = Field(
+ CreateUnrealSkeletalMesh: CreateUnrealSkeletalMeshModel = SettingsField(
default_factory=CreateUnrealSkeletalMeshModel,
title="Create Unreal_Skeletal Mesh"
)
- CreateMultiverseLook: CreateMultiverseLookModel = Field(
+ CreateMultiverseLook: CreateMultiverseLookModel = SettingsField(
default_factory=CreateMultiverseLookModel,
title="Create Multiverse Look"
)
- CreateAnimation: CreateAnimationModel = Field(
+ CreateAnimation: CreateAnimationModel = SettingsField(
default_factory=CreateAnimationModel,
title="Create Animation"
)
- CreateModel: BasicExportMeshModel = Field(
+ CreateModel: BasicExportMeshModel = SettingsField(
default_factory=BasicExportMeshModel,
title="Create Model"
)
- CreatePointCache: CreatePointCacheModel = Field(
+ CreatePointCache: CreatePointCacheModel = SettingsField(
default_factory=CreatePointCacheModel,
title="Create Point Cache"
)
- CreateProxyAlembic: CreateProxyAlembicModel = Field(
+ CreateProxyAlembic: CreateProxyAlembicModel = SettingsField(
default_factory=CreateProxyAlembicModel,
title="Create Proxy Alembic"
)
- CreateMultiverseUsd: BasicCreatorModel = Field(
+ CreateMultiverseUsd: BasicCreatorModel = SettingsField(
default_factory=BasicCreatorModel,
title="Create Multiverse USD"
)
- CreateMultiverseUsdComp: BasicCreatorModel = Field(
+ CreateMultiverseUsdComp: BasicCreatorModel = SettingsField(
default_factory=BasicCreatorModel,
title="Create Multiverse USD Composition"
)
- CreateMultiverseUsdOver: BasicCreatorModel = Field(
+ CreateMultiverseUsdOver: BasicCreatorModel = SettingsField(
default_factory=BasicCreatorModel,
title="Create Multiverse USD Override"
)
- CreateAss: CreateAssModel = Field(
+ CreateAss: CreateAssModel = SettingsField(
default_factory=CreateAssModel,
title="Create Ass"
)
- CreateAssembly: BasicCreatorModel = Field(
+ CreateAssembly: BasicCreatorModel = SettingsField(
default_factory=BasicCreatorModel,
title="Create Assembly"
)
- CreateCamera: BasicCreatorModel = Field(
+ CreateCamera: BasicCreatorModel = SettingsField(
default_factory=BasicCreatorModel,
title="Create Camera"
)
- CreateLayout: BasicCreatorModel = Field(
+ CreateLayout: BasicCreatorModel = SettingsField(
default_factory=BasicCreatorModel,
title="Create Layout"
)
- CreateMayaScene: BasicCreatorModel = Field(
+ CreateMayaScene: BasicCreatorModel = SettingsField(
default_factory=BasicCreatorModel,
title="Create Maya Scene"
)
- CreateRenderSetup: BasicCreatorModel = Field(
+ CreateRenderSetup: BasicCreatorModel = SettingsField(
default_factory=BasicCreatorModel,
title="Create Render Setup"
)
- CreateReview: CreateReviewModel = Field(
+ CreateReview: CreateReviewModel = SettingsField(
default_factory=CreateReviewModel,
title="Create Review"
)
- CreateRig: BasicCreatorModel = Field(
+ CreateRig: BasicCreatorModel = SettingsField(
default_factory=BasicCreatorModel,
title="Create Rig"
)
- CreateSetDress: BasicCreatorModel = Field(
+ CreateSetDress: BasicCreatorModel = SettingsField(
default_factory=BasicCreatorModel,
title="Create Set Dress"
)
- CreateVrayProxy: CreateVrayProxyModel = Field(
+ CreateVrayProxy: CreateVrayProxyModel = SettingsField(
default_factory=CreateVrayProxyModel,
title="Create VRay Proxy"
)
- CreateVRayScene: BasicCreatorModel = Field(
+ CreateVRayScene: BasicCreatorModel = SettingsField(
default_factory=BasicCreatorModel,
title="Create VRay Scene"
)
- CreateYetiRig: BasicCreatorModel = Field(
+ CreateYetiRig: BasicCreatorModel = SettingsField(
default_factory=BasicCreatorModel,
title="Create Yeti Rig"
)
diff --git a/server_addon/maya/server/settings/explicit_plugins_loading.py b/server_addon/maya/server/settings/explicit_plugins_loading.py
index 394adb728f2..cda5154b90b 100644
--- a/server_addon/maya/server/settings/explicit_plugins_loading.py
+++ b/server_addon/maya/server/settings/explicit_plugins_loading.py
@@ -1,19 +1,17 @@
-from pydantic import Field
-
-from ayon_server.settings import BaseSettingsModel
+from ayon_server.settings import BaseSettingsModel, SettingsField
class PluginsModel(BaseSettingsModel):
_layout = "expanded"
- enabled: bool = Field(title="Enabled")
- name: str = Field("", title="Name")
+ enabled: bool = SettingsField(title="Enabled")
+ name: str = SettingsField("", title="Name")
class ExplicitPluginsLoadingModel(BaseSettingsModel):
"""Maya Explicit Plugins Loading."""
_isGroup: bool = True
- enabled: bool = Field(title="enabled")
- plugins_to_load: list[PluginsModel] = Field(
+ enabled: bool = SettingsField(title="enabled")
+ plugins_to_load: list[PluginsModel] = SettingsField(
default_factory=list, title="Plugins To Load"
)
diff --git a/server_addon/maya/server/settings/imageio.py b/server_addon/maya/server/settings/imageio.py
index 946a14c866f..f4cdf3fbff2 100644
--- a/server_addon/maya/server/settings/imageio.py
+++ b/server_addon/maya/server/settings/imageio.py
@@ -2,32 +2,36 @@
Note: Names were changed to get rid of the versions in class names.
"""
-from pydantic import Field, validator
+from pydantic import validator
-from ayon_server.settings import BaseSettingsModel, ensure_unique_names
+from ayon_server.settings import (
+ BaseSettingsModel,
+ SettingsField,
+ ensure_unique_names,
+)
class ImageIOConfigModel(BaseSettingsModel):
- override_global_config: bool = Field(
+ override_global_config: bool = SettingsField(
False,
title="Override global OCIO config"
)
- filepath: list[str] = Field(
+ filepath: list[str] = SettingsField(
default_factory=list,
title="Config path"
)
class ImageIOFileRuleModel(BaseSettingsModel):
- name: str = Field("", title="Rule name")
- pattern: str = Field("", title="Regex pattern")
- colorspace: str = Field("", title="Colorspace name")
- ext: str = Field("", title="File extension")
+ name: str = SettingsField("", title="Rule name")
+ pattern: str = SettingsField("", title="Regex pattern")
+ colorspace: str = SettingsField("", title="Colorspace name")
+ ext: str = SettingsField("", title="File extension")
class ImageIOFileRulesModel(BaseSettingsModel):
- activate_host_rules: bool = Field(False)
- rules: list[ImageIOFileRuleModel] = Field(
+ activate_host_rules: bool = SettingsField(False)
+ rules: list[ImageIOFileRuleModel] = SettingsField(
default_factory=list,
title="Rules"
)
@@ -44,25 +48,27 @@ class ColorManagementPreferenceV2Model(BaseSettingsModel):
Please migrate all to 'imageio/workfile' and enable it.
"""
- enabled: bool = Field(True, title="Use Color Management Preference v2")
+ enabled: bool = SettingsField(
+ True, title="Use Color Management Preference v2"
+ )
- renderSpace: str = Field(title="Rendering Space")
- displayName: str = Field(title="Display")
- viewName: str = Field(title="View")
+ renderSpace: str = SettingsField(title="Rendering Space")
+ displayName: str = SettingsField(title="Display")
+ viewName: str = SettingsField(title="View")
class ColorManagementPreferenceModel(BaseSettingsModel):
"""Color Management Preference (legacy)."""
- renderSpace: str = Field(title="Rendering Space")
- viewTransform: str = Field(title="Viewer Transform ")
+ renderSpace: str = SettingsField(title="Rendering Space")
+ viewTransform: str = SettingsField(title="Viewer Transform ")
class WorkfileImageIOModel(BaseSettingsModel):
- enabled: bool = Field(True, title="Enabled")
- renderSpace: str = Field(title="Rendering Space")
- displayName: str = Field(title="Display")
- viewName: str = Field(title="View")
+ enabled: bool = SettingsField(True, title="Enabled")
+ renderSpace: str = SettingsField(title="Rendering Space")
+ displayName: str = SettingsField(title="Display")
+ viewName: str = SettingsField(title="View")
class ImageIOSettings(BaseSettingsModel):
@@ -72,27 +78,29 @@ class ImageIOSettings(BaseSettingsModel):
"""
_isGroup: bool = True
- activate_host_color_management: bool = Field(
+ activate_host_color_management: bool = SettingsField(
True, title="Enable Color Management"
)
- ocio_config: ImageIOConfigModel = Field(
+ ocio_config: ImageIOConfigModel = SettingsField(
default_factory=ImageIOConfigModel,
title="OCIO config"
)
- file_rules: ImageIOFileRulesModel = Field(
+ file_rules: ImageIOFileRulesModel = SettingsField(
default_factory=ImageIOFileRulesModel,
title="File Rules"
)
- workfile: WorkfileImageIOModel = Field(
+ workfile: WorkfileImageIOModel = SettingsField(
default_factory=WorkfileImageIOModel,
title="Workfile"
)
# Deprecated
- colorManagementPreference_v2: ColorManagementPreferenceV2Model = Field(
- default_factory=ColorManagementPreferenceV2Model,
- title="DEPRECATED: Color Management Preference v2 (Maya 2022+)"
+ colorManagementPreference_v2: ColorManagementPreferenceV2Model = (
+ SettingsField(
+ default_factory=ColorManagementPreferenceV2Model,
+ title="DEPRECATED: Color Management Preference v2 (Maya 2022+)"
+ )
)
- colorManagementPreference: ColorManagementPreferenceModel = Field(
+ colorManagementPreference: ColorManagementPreferenceModel = SettingsField(
default_factory=ColorManagementPreferenceModel,
title="DEPRECATED: Color Management Preference (legacy)"
)
diff --git a/server_addon/maya/server/settings/include_handles.py b/server_addon/maya/server/settings/include_handles.py
index 3ba6aca66bd..931222ad2dc 100644
--- a/server_addon/maya/server/settings/include_handles.py
+++ b/server_addon/maya/server/settings/include_handles.py
@@ -1,24 +1,26 @@
-from pydantic import Field
-
-from ayon_server.settings import BaseSettingsModel, task_types_enum
+from ayon_server.settings import (
+ BaseSettingsModel,
+ SettingsField,
+ task_types_enum,
+)
class IncludeByTaskTypeModel(BaseSettingsModel):
- task_type: list[str] = Field(
+ task_type: list[str] = SettingsField(
default_factory=list,
title="Task types",
enum_resolver=task_types_enum
)
- include_handles: bool = Field(True, title="Include handles")
+ include_handles: bool = SettingsField(True, title="Include handles")
class IncludeHandlesModel(BaseSettingsModel):
"""Maya dirmap settings."""
# _layout = "expanded"
- include_handles_default: bool = Field(
+ include_handles_default: bool = SettingsField(
True, title="Include handles by default"
)
- per_task_type: list[IncludeByTaskTypeModel] = Field(
+ per_task_type: list[IncludeByTaskTypeModel] = SettingsField(
default_factory=list,
title="Include/exclude handles by task type"
)
diff --git a/server_addon/maya/server/settings/loaders.py b/server_addon/maya/server/settings/loaders.py
index ed6b6fd2ace..15d4275b809 100644
--- a/server_addon/maya/server/settings/loaders.py
+++ b/server_addon/maya/server/settings/loaders.py
@@ -1,66 +1,66 @@
-from pydantic import Field
-
-from ayon_server.settings import BaseSettingsModel
+from ayon_server.settings import BaseSettingsModel, SettingsField
from ayon_server.types import ColorRGBA_uint8
class ColorsSetting(BaseSettingsModel):
- model: ColorRGBA_uint8 = Field(
+ model: ColorRGBA_uint8 = SettingsField(
(209, 132, 30, 1.0), title="Model:")
- rig: ColorRGBA_uint8 = Field(
+ rig: ColorRGBA_uint8 = SettingsField(
(59, 226, 235, 1.0), title="Rig:")
- pointcache: ColorRGBA_uint8 = Field(
+ pointcache: ColorRGBA_uint8 = SettingsField(
(94, 209, 30, 1.0), title="Pointcache:")
- animation: ColorRGBA_uint8 = Field(
+ animation: ColorRGBA_uint8 = SettingsField(
(94, 209, 30, 1.0), title="Animation:")
- ass: ColorRGBA_uint8 = Field(
+ ass: ColorRGBA_uint8 = SettingsField(
(249, 135, 53, 1.0), title="Arnold StandIn:")
- camera: ColorRGBA_uint8 = Field(
+ camera: ColorRGBA_uint8 = SettingsField(
(136, 114, 244, 1.0), title="Camera:")
- fbx: ColorRGBA_uint8 = Field(
+ fbx: ColorRGBA_uint8 = SettingsField(
(215, 166, 255, 1.0), title="FBX:")
- mayaAscii: ColorRGBA_uint8 = Field(
+ mayaAscii: ColorRGBA_uint8 = SettingsField(
(67, 174, 255, 1.0), title="Maya Ascii:")
- mayaScene: ColorRGBA_uint8 = Field(
+ mayaScene: ColorRGBA_uint8 = SettingsField(
(67, 174, 255, 1.0), title="Maya Scene:")
- setdress: ColorRGBA_uint8 = Field(
+ setdress: ColorRGBA_uint8 = SettingsField(
(255, 250, 90, 1.0), title="Set Dress:")
- layout: ColorRGBA_uint8 = Field((
+ layout: ColorRGBA_uint8 = SettingsField((
255, 250, 90, 1.0), title="Layout:")
- vdbcache: ColorRGBA_uint8 = Field(
+ vdbcache: ColorRGBA_uint8 = SettingsField(
(249, 54, 0, 1.0), title="VDB Cache:")
- vrayproxy: ColorRGBA_uint8 = Field(
+ vrayproxy: ColorRGBA_uint8 = SettingsField(
(255, 150, 12, 1.0), title="VRay Proxy:")
- vrayscene_layer: ColorRGBA_uint8 = Field(
+ vrayscene_layer: ColorRGBA_uint8 = SettingsField(
(255, 150, 12, 1.0), title="VRay Scene:")
- yeticache: ColorRGBA_uint8 = Field(
+ yeticache: ColorRGBA_uint8 = SettingsField(
(99, 206, 220, 1.0), title="Yeti Cache:")
- yetiRig: ColorRGBA_uint8 = Field(
+ yetiRig: ColorRGBA_uint8 = SettingsField(
(0, 205, 125, 1.0), title="Yeti Rig:")
class ReferenceLoaderModel(BaseSettingsModel):
- namespace: str = Field(title="Namespace")
- group_name: str = Field(title="Group name")
- display_handle: bool = Field(title="Display Handle On Load References")
+ namespace: str = SettingsField(title="Namespace")
+ group_name: str = SettingsField(title="Group name")
+ display_handle: bool = SettingsField(
+ title="Display Handle On Load References"
+ )
class ImportLoaderModel(BaseSettingsModel):
- namespace: str = Field(title="Namespace")
- group_name: str = Field(title="Group name")
+ namespace: str = SettingsField(title="Namespace")
+ group_name: str = SettingsField(title="Group name")
class LoadersModel(BaseSettingsModel):
- colors: ColorsSetting = Field(
+ colors: ColorsSetting = SettingsField(
default_factory=ColorsSetting,
title="Loaded Products Outliner Colors")
- reference_loader: ReferenceLoaderModel = Field(
+ reference_loader: ReferenceLoaderModel = SettingsField(
default_factory=ReferenceLoaderModel,
title="Reference Loader"
)
- import_loader: ImportLoaderModel = Field(
+ import_loader: ImportLoaderModel = SettingsField(
default_factory=ImportLoaderModel,
title="Import Loader"
)
diff --git a/server_addon/maya/server/settings/main.py b/server_addon/maya/server/settings/main.py
index 3d084312e91..f7f62e219db 100644
--- a/server_addon/maya/server/settings/main.py
+++ b/server_addon/maya/server/settings/main.py
@@ -1,5 +1,9 @@
-from pydantic import Field, validator
-from ayon_server.settings import BaseSettingsModel, ensure_unique_names
+from pydantic import validator
+from ayon_server.settings import (
+ BaseSettingsModel,
+ SettingsField,
+ ensure_unique_names,
+)
from .imageio import ImageIOSettings, DEFAULT_IMAGEIO_SETTINGS
from .maya_dirmap import MayaDirmapModel, DEFAULT_MAYA_DIRMAP_SETTINGS
from .include_handles import IncludeHandlesModel, DEFAULT_INCLUDE_HANDLES
@@ -19,44 +23,46 @@
class ExtMappingItemModel(BaseSettingsModel):
_layout = "compact"
- name: str = Field(title="Product type")
- value: str = Field(title="Extension")
+ name: str = SettingsField(title="Product type")
+ value: str = SettingsField(title="Extension")
class MayaSettings(BaseSettingsModel):
"""Maya Project Settings."""
- open_workfile_post_initialization: bool = Field(
+ open_workfile_post_initialization: bool = SettingsField(
True, title="Open Workfile Post Initialization")
- explicit_plugins_loading: ExplicitPluginsLoadingModel = Field(
+ explicit_plugins_loading: ExplicitPluginsLoadingModel = SettingsField(
default_factory=ExplicitPluginsLoadingModel,
title="Explicit Plugins Loading")
- imageio: ImageIOSettings = Field(
+ imageio: ImageIOSettings = SettingsField(
default_factory=ImageIOSettings, title="Color Management (imageio)")
- mel_workspace: str = Field(title="Maya MEL Workspace", widget="textarea")
- ext_mapping: list[ExtMappingItemModel] = Field(
+ mel_workspace: str = SettingsField(
+ title="Maya MEL Workspace", widget="textarea"
+ )
+ ext_mapping: list[ExtMappingItemModel] = SettingsField(
default_factory=list, title="Extension Mapping")
- maya_dirmap: MayaDirmapModel = Field(
+ maya_dirmap: MayaDirmapModel = SettingsField(
default_factory=MayaDirmapModel, title="Maya dirmap Settings")
- include_handles: IncludeHandlesModel = Field(
+ include_handles: IncludeHandlesModel = SettingsField(
default_factory=IncludeHandlesModel,
title="Include/Exclude Handles in default playback & render range"
)
- scriptsmenu: ScriptsmenuModel = Field(
+ scriptsmenu: ScriptsmenuModel = SettingsField(
default_factory=ScriptsmenuModel,
title="Scriptsmenu Settings"
)
- render_settings: RenderSettingsModel = Field(
+ render_settings: RenderSettingsModel = SettingsField(
default_factory=RenderSettingsModel, title="Render Settings")
- create: CreatorsModel = Field(
+ create: CreatorsModel = SettingsField(
default_factory=CreatorsModel, title="Creators")
- publish: PublishersModel = Field(
+ publish: PublishersModel = SettingsField(
default_factory=PublishersModel, title="Publishers")
- load: LoadersModel = Field(
+ load: LoadersModel = SettingsField(
default_factory=LoadersModel, title="Loaders")
- workfile_build: ProfilesModel = Field(
+ workfile_build: ProfilesModel = SettingsField(
default_factory=ProfilesModel, title="Workfile Build Settings")
- templated_workfile_build: TemplatedProfilesModel = Field(
+ templated_workfile_build: TemplatedProfilesModel = SettingsField(
default_factory=TemplatedProfilesModel,
title="Templated Workfile Build Settings")
diff --git a/server_addon/maya/server/settings/maya_dirmap.py b/server_addon/maya/server/settings/maya_dirmap.py
index 243261dc872..f68028cd79e 100644
--- a/server_addon/maya/server/settings/maya_dirmap.py
+++ b/server_addon/maya/server/settings/maya_dirmap.py
@@ -1,14 +1,12 @@
-from pydantic import Field
-
-from ayon_server.settings import BaseSettingsModel
+from ayon_server.settings import BaseSettingsModel, SettingsField
class MayaDirmapPathsSubmodel(BaseSettingsModel):
_layout = "compact"
- source_path: list[str] = Field(
+ source_path: list[str] = SettingsField(
default_factory=list, title="Source Paths"
)
- destination_path: list[str] = Field(
+ destination_path: list[str] = SettingsField(
default_factory=list, title="Destination Paths"
)
@@ -18,13 +16,13 @@ class MayaDirmapModel(BaseSettingsModel):
# _layout = "expanded"
_isGroup: bool = True
- enabled: bool = Field(title="enabled")
+ enabled: bool = SettingsField(title="enabled")
# Use ${} placeholder instead of absolute value of a root in
# referenced filepaths.
- use_env_var_as_root: bool = Field(
+ use_env_var_as_root: bool = SettingsField(
title="Use env var placeholder in referenced paths"
)
- paths: MayaDirmapPathsSubmodel = Field(
+ paths: MayaDirmapPathsSubmodel = SettingsField(
default_factory=MayaDirmapPathsSubmodel,
title="Dirmap Paths"
)
diff --git a/server_addon/maya/server/settings/publish_playblast.py b/server_addon/maya/server/settings/publish_playblast.py
index 0abc9f71106..0461a18cc8c 100644
--- a/server_addon/maya/server/settings/publish_playblast.py
+++ b/server_addon/maya/server/settings/publish_playblast.py
@@ -1,7 +1,8 @@
-from pydantic import Field, validator
+from pydantic import validator
from ayon_server.settings import (
BaseSettingsModel,
+ SettingsField,
ensure_unique_names,
task_types_enum,
)
@@ -43,36 +44,40 @@ def plugin_objects_default():
class CodecSetting(BaseSettingsModel):
_layout = "expanded"
- compression: str = Field("png", title="Encoding")
- format: str = Field("image", title="Format")
- quality: int = Field(95, title="Quality", ge=0, le=100)
+ compression: str = SettingsField("png", title="Encoding")
+ format: str = SettingsField("image", title="Format")
+ quality: int = SettingsField(95, title="Quality", ge=0, le=100)
class DisplayOptionsSetting(BaseSettingsModel):
_layout = "expanded"
- override_display: bool = Field(True, title="Override display options")
- background: ColorRGBA_uint8 = Field(
+ override_display: bool = SettingsField(
+ True, title="Override display options"
+ )
+ background: ColorRGBA_uint8 = SettingsField(
(125, 125, 125, 1.0), title="Background Color"
)
- displayGradient: bool = Field(True, title="Display background gradient")
- backgroundTop: ColorRGBA_uint8 = Field(
+ displayGradient: bool = SettingsField(
+ True, title="Display background gradient"
+ )
+ backgroundTop: ColorRGBA_uint8 = SettingsField(
(125, 125, 125, 1.0), title="Background Top"
)
- backgroundBottom: ColorRGBA_uint8 = Field(
+ backgroundBottom: ColorRGBA_uint8 = SettingsField(
(125, 125, 125, 1.0), title="Background Bottom"
)
class GenericSetting(BaseSettingsModel):
_layout = "expanded"
- isolate_view: bool = Field(True, title="Isolate View")
- off_screen: bool = Field(True, title="Off Screen")
- pan_zoom: bool = Field(False, title="2D Pan/Zoom")
+ isolate_view: bool = SettingsField(True, title="Isolate View")
+ off_screen: bool = SettingsField(True, title="Off Screen")
+ pan_zoom: bool = SettingsField(False, title="2D Pan/Zoom")
class RendererSetting(BaseSettingsModel):
_layout = "expanded"
- rendererName: str = Field(
+ rendererName: str = SettingsField(
"vp2Renderer",
enum_resolver=renderer_enum,
title="Renderer name"
@@ -81,100 +86,112 @@ class RendererSetting(BaseSettingsModel):
class ResolutionSetting(BaseSettingsModel):
_layout = "expanded"
- width: int = Field(0, title="Width")
- height: int = Field(0, title="Height")
+ width: int = SettingsField(0, title="Width")
+ height: int = SettingsField(0, title="Height")
class PluginObjectsModel(BaseSettingsModel):
- name: str = Field("", title="Name")
- value: bool = Field(True, title="Enabled")
+ name: str = SettingsField("", title="Name")
+ value: bool = SettingsField(True, title="Enabled")
class ViewportOptionsSetting(BaseSettingsModel):
- override_viewport_options: bool = Field(
+ override_viewport_options: bool = SettingsField(
True, title="Override viewport options"
)
- displayLights: str = Field(
+ displayLights: str = SettingsField(
"default", enum_resolver=displayLights_enum, title="Display Lights"
)
- displayTextures: bool = Field(True, title="Display Textures")
- textureMaxResolution: int = Field(1024, title="Texture Clamp Resolution")
- renderDepthOfField: bool = Field(
+ displayTextures: bool = SettingsField(True, title="Display Textures")
+ textureMaxResolution: int = SettingsField(
+ 1024, title="Texture Clamp Resolution"
+ )
+ renderDepthOfField: bool = SettingsField(
True, title="Depth of Field", section="Depth of Field"
)
- shadows: bool = Field(True, title="Display Shadows")
- twoSidedLighting: bool = Field(True, title="Two Sided Lighting")
- lineAAEnable: bool = Field(
+ shadows: bool = SettingsField(True, title="Display Shadows")
+ twoSidedLighting: bool = SettingsField(True, title="Two Sided Lighting")
+ lineAAEnable: bool = SettingsField(
True, title="Enable Anti-Aliasing", section="Anti-Aliasing"
)
- multiSample: int = Field(8, title="Anti Aliasing Samples")
- loadTextures: bool = Field(False, title="Load Textures")
- useDefaultMaterial: bool = Field(False, title="Use Default Material")
- wireframeOnShaded: bool = Field(False, title="Wireframe On Shaded")
- xray: bool = Field(False, title="X-Ray")
- jointXray: bool = Field(False, title="X-Ray Joints")
- backfaceCulling: bool = Field(False, title="Backface Culling")
- ssaoEnable: bool = Field(
+ multiSample: int = SettingsField(8, title="Anti Aliasing Samples")
+ loadTextures: bool = SettingsField(False, title="Load Textures")
+ useDefaultMaterial: bool = SettingsField(
+ False, title="Use Default Material"
+ )
+ wireframeOnShaded: bool = SettingsField(False, title="Wireframe On Shaded")
+ xray: bool = SettingsField(False, title="X-Ray")
+ jointXray: bool = SettingsField(False, title="X-Ray Joints")
+ backfaceCulling: bool = SettingsField(False, title="Backface Culling")
+ ssaoEnable: bool = SettingsField(
False, title="Screen Space Ambient Occlusion", section="SSAO"
)
- ssaoAmount: int = Field(1, title="SSAO Amount")
- ssaoRadius: int = Field(16, title="SSAO Radius")
- ssaoFilterRadius: int = Field(16, title="SSAO Filter Radius")
- ssaoSamples: int = Field(16, title="SSAO Samples")
- fogging: bool = Field(False, title="Enable Hardware Fog", section="Fog")
- hwFogFalloff: str = Field(
+ ssaoAmount: int = SettingsField(1, title="SSAO Amount")
+ ssaoRadius: int = SettingsField(16, title="SSAO Radius")
+ ssaoFilterRadius: int = SettingsField(16, title="SSAO Filter Radius")
+ ssaoSamples: int = SettingsField(16, title="SSAO Samples")
+ fogging: bool = SettingsField(
+ False, title="Enable Hardware Fog", section="Fog"
+ )
+ hwFogFalloff: str = SettingsField(
"0", enum_resolver=hardware_falloff_enum, title="Hardware Falloff"
)
- hwFogDensity: float = Field(0.0, title="Fog Density")
- hwFogStart: int = Field(0, title="Fog Start")
- hwFogEnd: int = Field(100, title="Fog End")
- hwFogAlpha: int = Field(0, title="Fog Alpha")
- hwFogColorR: float = Field(1.0, title="Fog Color R")
- hwFogColorG: float = Field(1.0, title="Fog Color G")
- hwFogColorB: float = Field(1.0, title="Fog Color B")
- motionBlurEnable: bool = Field(
+ hwFogDensity: float = SettingsField(0.0, title="Fog Density")
+ hwFogStart: int = SettingsField(0, title="Fog Start")
+ hwFogEnd: int = SettingsField(100, title="Fog End")
+ hwFogAlpha: int = SettingsField(0, title="Fog Alpha")
+ hwFogColorR: float = SettingsField(1.0, title="Fog Color R")
+ hwFogColorG: float = SettingsField(1.0, title="Fog Color G")
+ hwFogColorB: float = SettingsField(1.0, title="Fog Color B")
+ motionBlurEnable: bool = SettingsField(
False, title="Enable Motion Blur", section="Motion Blur"
)
- motionBlurSampleCount: int = Field(8, title="Motion Blur Sample Count")
- motionBlurShutterOpenFraction: float = Field(
+ motionBlurSampleCount: int = SettingsField(
+ 8, title="Motion Blur Sample Count"
+ )
+ motionBlurShutterOpenFraction: float = SettingsField(
0.2, title="Shutter Open Fraction"
)
- cameras: bool = Field(False, title="Cameras", section="Show")
- clipGhosts: bool = Field(False, title="Clip Ghosts")
- deformers: bool = Field(False, title="Deformers")
- dimensions: bool = Field(False, title="Dimensions")
- dynamicConstraints: bool = Field(False, title="Dynamic Constraints")
- dynamics: bool = Field(False, title="Dynamics")
- fluids: bool = Field(False, title="Fluids")
- follicles: bool = Field(False, title="Follicles")
- greasePencils: bool = Field(False, title="Grease Pencils")
- grid: bool = Field(False, title="Grid")
- hairSystems: bool = Field(True, title="Hair Systems")
- handles: bool = Field(False, title="Handles")
- headsUpDisplay: bool = Field(False, title="HUD")
- ikHandles: bool = Field(False, title="IK Handles")
- imagePlane: bool = Field(True, title="Image Plane")
- joints: bool = Field(False, title="Joints")
- lights: bool = Field(False, title="Lights")
- locators: bool = Field(False, title="Locators")
- manipulators: bool = Field(False, title="Manipulators")
- motionTrails: bool = Field(False, title="Motion Trails")
- nCloths: bool = Field(False, title="nCloths")
- nParticles: bool = Field(False, title="nParticles")
- nRigids: bool = Field(False, title="nRigids")
- controlVertices: bool = Field(False, title="NURBS CVs")
- nurbsCurves: bool = Field(False, title="NURBS Curves")
- hulls: bool = Field(False, title="NURBS Hulls")
- nurbsSurfaces: bool = Field(False, title="NURBS Surfaces")
- particleInstancers: bool = Field(False, title="Particle Instancers")
- pivots: bool = Field(False, title="Pivots")
- planes: bool = Field(False, title="Planes")
- pluginShapes: bool = Field(False, title="Plugin Shapes")
- polymeshes: bool = Field(True, title="Polygons")
- strokes: bool = Field(False, title="Strokes")
- subdivSurfaces: bool = Field(False, title="Subdiv Surfaces")
- textures: bool = Field(False, title="Texture Placements")
- pluginObjects: list[PluginObjectsModel] = Field(
+ cameras: bool = SettingsField(False, title="Cameras", section="Show")
+ clipGhosts: bool = SettingsField(False, title="Clip Ghosts")
+ deformers: bool = SettingsField(False, title="Deformers")
+ dimensions: bool = SettingsField(False, title="Dimensions")
+ dynamicConstraints: bool = SettingsField(
+ False, title="Dynamic Constraints"
+ )
+ dynamics: bool = SettingsField(False, title="Dynamics")
+ fluids: bool = SettingsField(False, title="Fluids")
+ follicles: bool = SettingsField(False, title="Follicles")
+ greasePencils: bool = SettingsField(False, title="Grease Pencils")
+ grid: bool = SettingsField(False, title="Grid")
+ hairSystems: bool = SettingsField(True, title="Hair Systems")
+ handles: bool = SettingsField(False, title="Handles")
+ headsUpDisplay: bool = SettingsField(False, title="HUD")
+ ikHandles: bool = SettingsField(False, title="IK Handles")
+ imagePlane: bool = SettingsField(True, title="Image Plane")
+ joints: bool = SettingsField(False, title="Joints")
+ lights: bool = SettingsField(False, title="Lights")
+ locators: bool = SettingsField(False, title="Locators")
+ manipulators: bool = SettingsField(False, title="Manipulators")
+ motionTrails: bool = SettingsField(False, title="Motion Trails")
+ nCloths: bool = SettingsField(False, title="nCloths")
+ nParticles: bool = SettingsField(False, title="nParticles")
+ nRigids: bool = SettingsField(False, title="nRigids")
+ controlVertices: bool = SettingsField(False, title="NURBS CVs")
+ nurbsCurves: bool = SettingsField(False, title="NURBS Curves")
+ hulls: bool = SettingsField(False, title="NURBS Hulls")
+ nurbsSurfaces: bool = SettingsField(False, title="NURBS Surfaces")
+ particleInstancers: bool = SettingsField(
+ False, title="Particle Instancers"
+ )
+ pivots: bool = SettingsField(False, title="Pivots")
+ planes: bool = SettingsField(False, title="Planes")
+ pluginShapes: bool = SettingsField(False, title="Plugin Shapes")
+ polymeshes: bool = SettingsField(True, title="Polygons")
+ strokes: bool = SettingsField(False, title="Strokes")
+ subdivSurfaces: bool = SettingsField(False, title="Subdiv Surfaces")
+ textures: bool = SettingsField(False, title="Texture Placements")
+ pluginObjects: list[PluginObjectsModel] = SettingsField(
default_factory=plugin_objects_default,
title="Plugin Objects"
)
@@ -186,67 +203,71 @@ def validate_unique_plugin_objects(cls, value):
class CameraOptionsSetting(BaseSettingsModel):
- displayGateMask: bool = Field(False, title="Display Gate Mask")
- displayResolution: bool = Field(False, title="Display Resolution")
- displayFilmGate: bool = Field(False, title="Display Film Gate")
- displayFieldChart: bool = Field(False, title="Display Field Chart")
- displaySafeAction: bool = Field(False, title="Display Safe Action")
- displaySafeTitle: bool = Field(False, title="Display Safe Title")
- displayFilmPivot: bool = Field(False, title="Display Film Pivot")
- displayFilmOrigin: bool = Field(False, title="Display Film Origin")
- overscan: int = Field(1.0, title="Overscan")
+ displayGateMask: bool = SettingsField(False, title="Display Gate Mask")
+ displayResolution: bool = SettingsField(False, title="Display Resolution")
+ displayFilmGate: bool = SettingsField(False, title="Display Film Gate")
+ displayFieldChart: bool = SettingsField(False, title="Display Field Chart")
+ displaySafeAction: bool = SettingsField(False, title="Display Safe Action")
+ displaySafeTitle: bool = SettingsField(False, title="Display Safe Title")
+ displayFilmPivot: bool = SettingsField(False, title="Display Film Pivot")
+ displayFilmOrigin: bool = SettingsField(False, title="Display Film Origin")
+ overscan: int = SettingsField(1.0, title="Overscan")
class CapturePresetSetting(BaseSettingsModel):
- Codec: CodecSetting = Field(
+ Codec: CodecSetting = SettingsField(
default_factory=CodecSetting,
title="Codec",
section="Codec")
- DisplayOptions: DisplayOptionsSetting = Field(
+ DisplayOptions: DisplayOptionsSetting = SettingsField(
default_factory=DisplayOptionsSetting,
title="Display Options",
section="Display Options")
- Generic: GenericSetting = Field(
+ Generic: GenericSetting = SettingsField(
default_factory=GenericSetting,
title="Generic",
section="Generic")
- Renderer: RendererSetting = Field(
+ Renderer: RendererSetting = SettingsField(
default_factory=RendererSetting,
title="Renderer",
section="Renderer")
- Resolution: ResolutionSetting = Field(
+ Resolution: ResolutionSetting = SettingsField(
default_factory=ResolutionSetting,
title="Resolution",
section="Resolution")
- ViewportOptions: ViewportOptionsSetting = Field(
+ ViewportOptions: ViewportOptionsSetting = SettingsField(
default_factory=ViewportOptionsSetting,
title="Viewport Options")
- CameraOptions: CameraOptionsSetting = Field(
+ CameraOptions: CameraOptionsSetting = SettingsField(
default_factory=CameraOptionsSetting,
title="Camera Options")
class ProfilesModel(BaseSettingsModel):
_layout = "expanded"
- task_types: list[str] = Field(
+ task_types: list[str] = SettingsField(
default_factory=list,
title="Task types",
enum_resolver=task_types_enum
)
- task_names: list[str] = Field(default_factory=list, title="Task names")
- product_names: list[str] = Field(default_factory=list, title="Products names")
- capture_preset: CapturePresetSetting = Field(
+ task_names: list[str] = SettingsField(
+ default_factory=list, title="Task names"
+ )
+ product_names: list[str] = SettingsField(
+ default_factory=list, title="Products names"
+ )
+ capture_preset: CapturePresetSetting = SettingsField(
default_factory=CapturePresetSetting,
title="Capture Preset"
)
class ExtractPlayblastSetting(BaseSettingsModel):
- capture_preset: CapturePresetSetting = Field(
+ capture_preset: CapturePresetSetting = SettingsField(
default_factory=CapturePresetSetting,
title="DEPRECATED! Please use \"Profiles\" below. Capture Preset"
)
- profiles: list[ProfilesModel] = Field(
+ profiles: list[ProfilesModel] = SettingsField(
default_factory=list,
title="Profiles"
)
diff --git a/server_addon/maya/server/settings/publishers.py b/server_addon/maya/server/settings/publishers.py
index e823efe6810..3a6de2eb445 100644
--- a/server_addon/maya/server/settings/publishers.py
+++ b/server_addon/maya/server/settings/publishers.py
@@ -1,7 +1,8 @@
import json
-from pydantic import Field, validator
+from pydantic import validator
from ayon_server.settings import (
BaseSettingsModel,
+ SettingsField,
MultiplatformPathModel,
ensure_unique_names,
)
@@ -35,9 +36,9 @@ def angular_unit_enum():
class BasicValidateModel(BaseSettingsModel):
- enabled: bool = Field(title="Enabled")
- optional: bool = Field(title="Optional")
- active: bool = Field(title="Active")
+ enabled: bool = SettingsField(title="Enabled")
+ optional: bool = SettingsField(title="Optional")
+ active: bool = SettingsField(title="Active")
class ValidateMeshUVSetMap1Model(BasicValidateModel):
@@ -51,22 +52,24 @@ class ValidateNoAnimationModel(BasicValidateModel):
class ValidateRigOutSetNodeIdsModel(BaseSettingsModel):
- enabled: bool = Field(title="ValidateSkinclusterDeformerSet")
- optional: bool = Field(title="Optional")
- allow_history_only: bool = Field(title="Allow history only")
+ enabled: bool = SettingsField(title="ValidateSkinclusterDeformerSet")
+ optional: bool = SettingsField(title="Optional")
+ allow_history_only: bool = SettingsField(title="Allow history only")
class ValidateModelNameModel(BaseSettingsModel):
- enabled: bool = Field(title="Enabled")
- database: bool = Field(title="Use database shader name definitions")
- material_file: MultiplatformPathModel = Field(
+ enabled: bool = SettingsField(title="Enabled")
+ database: bool = SettingsField(
+ title="Use database shader name definitions"
+ )
+ material_file: MultiplatformPathModel = SettingsField(
default_factory=MultiplatformPathModel,
title="Material File",
description=(
"Path to material file defining list of material names to check."
)
)
- regex: str = Field(
+ regex: str = SettingsField(
"(.*)_(\\d)*_(?P.*)_(GEO)",
title="Validation regex",
description=(
@@ -74,7 +77,7 @@ class ValidateModelNameModel(BaseSettingsModel):
" named capturing groups:(?P.*) for Asset name"
)
)
- top_level_regex: str = Field(
+ top_level_regex: str = SettingsField(
".*_GRP",
title="Top level group name regex",
description=(
@@ -85,15 +88,15 @@ class ValidateModelNameModel(BaseSettingsModel):
class ValidateModelContentModel(BaseSettingsModel):
- enabled: bool = Field(title="Enabled")
- optional: bool = Field(title="Optional")
- validate_top_group: bool = Field(title="Validate one top group")
+ enabled: bool = SettingsField(title="Enabled")
+ optional: bool = SettingsField(title="Optional")
+ validate_top_group: bool = SettingsField(title="Validate one top group")
class ValidateTransformNamingSuffixModel(BaseSettingsModel):
- enabled: bool = Field(title="Enabled")
- optional: bool = Field(title="Optional")
- SUFFIX_NAMING_TABLE: str = Field(
+ enabled: bool = SettingsField(title="Enabled")
+ optional: bool = SettingsField(title="Optional")
+ SUFFIX_NAMING_TABLE: str = SettingsField(
"{}",
title="Suffix Naming Tables",
widget="textarea",
@@ -118,34 +121,34 @@ def validate_json(cls, value):
"The text can't be parsed as json object"
)
return value
- ALLOW_IF_NOT_IN_SUFFIX_TABLE: bool = Field(
+ ALLOW_IF_NOT_IN_SUFFIX_TABLE: bool = SettingsField(
title="Allow if suffix not in table"
)
class CollectMayaRenderModel(BaseSettingsModel):
- sync_workfile_version: bool = Field(
+ sync_workfile_version: bool = SettingsField(
title="Sync render version with workfile"
)
class CollectFbxAnimationModel(BaseSettingsModel):
- enabled: bool = Field(title="Collect Fbx Animation")
+ enabled: bool = SettingsField(title="Collect Fbx Animation")
class CollectFbxCameraModel(BaseSettingsModel):
- enabled: bool = Field(title="CollectFbxCamera")
+ enabled: bool = SettingsField(title="CollectFbxCamera")
class CollectGLTFModel(BaseSettingsModel):
- enabled: bool = Field(title="CollectGLTF")
+ enabled: bool = SettingsField(title="CollectGLTF")
class ValidateFrameRangeModel(BaseSettingsModel):
- enabled: bool = Field(title="ValidateFrameRange")
- optional: bool = Field(title="Optional")
- active: bool = Field(title="Active")
- exclude_product_types: list[str] = Field(
+ enabled: bool = SettingsField(title="ValidateFrameRange")
+ optional: bool = SettingsField(title="Optional")
+ active: bool = SettingsField(title="Active")
+ exclude_product_types: list[str] = SettingsField(
default_factory=list,
title="Exclude product types"
)
@@ -155,15 +158,18 @@ class ValidateShaderNameModel(BaseSettingsModel):
"""
Shader name regex can use named capture group asset to validate against current asset name.
"""
- enabled: bool = Field(title="ValidateShaderName")
- optional: bool = Field(title="Optional")
- active: bool = Field(title="Active")
- regex: str = Field("(?P.*)_(.*)_SHD", title="Validation regex")
+ enabled: bool = SettingsField(title="ValidateShaderName")
+ optional: bool = SettingsField(title="Optional")
+ active: bool = SettingsField(title="Active")
+ regex: str = SettingsField(
+ "(?P.*)_(.*)_SHD",
+ title="Validation regex"
+ )
class ValidateAttributesModel(BaseSettingsModel):
- enabled: bool = Field(title="ValidateAttributes")
- attributes: str = Field(
+ enabled: bool = SettingsField(title="ValidateAttributes")
+ attributes: str = SettingsField(
"{}", title="Attributes", widget="textarea")
@validator("attributes")
@@ -184,46 +190,50 @@ def validate_json(cls, value):
class ValidateLoadedPluginModel(BaseSettingsModel):
- enabled: bool = Field(title="ValidateLoadedPlugin")
- optional: bool = Field(title="Optional")
- whitelist_native_plugins: bool = Field(
+ enabled: bool = SettingsField(title="ValidateLoadedPlugin")
+ optional: bool = SettingsField(title="Optional")
+ whitelist_native_plugins: bool = SettingsField(
title="Whitelist Maya Native Plugins"
)
- authorized_plugins: list[str] = Field(
+ authorized_plugins: list[str] = SettingsField(
default_factory=list, title="Authorized plugins"
)
class ValidateMayaUnitsModel(BaseSettingsModel):
- enabled: bool = Field(title="ValidateMayaUnits")
- optional: bool = Field(title="Optional")
- validate_linear_units: bool = Field(title="Validate linear units")
- linear_units: str = Field(
+ enabled: bool = SettingsField(title="ValidateMayaUnits")
+ optional: bool = SettingsField(title="Optional")
+ validate_linear_units: bool = SettingsField(title="Validate linear units")
+ linear_units: str = SettingsField(
enum_resolver=linear_unit_enum, title="Linear Units"
)
- validate_angular_units: bool = Field(title="Validate angular units")
- angular_units: str = Field(
+ validate_angular_units: bool = SettingsField(
+ title="Validate angular units"
+ )
+ angular_units: str = SettingsField(
enum_resolver=angular_unit_enum, title="Angular units"
)
- validate_fps: bool = Field(title="Validate fps")
+ validate_fps: bool = SettingsField(title="Validate fps")
class ValidateUnrealStaticMeshNameModel(BaseSettingsModel):
- enabled: bool = Field(title="ValidateUnrealStaticMeshName")
- optional: bool = Field(title="Optional")
- validate_mesh: bool = Field(title="Validate mesh names")
- validate_collision: bool = Field(title="Validate collison names")
+ enabled: bool = SettingsField(title="ValidateUnrealStaticMeshName")
+ optional: bool = SettingsField(title="Optional")
+ validate_mesh: bool = SettingsField(title="Validate mesh names")
+ validate_collision: bool = SettingsField(title="Validate collison names")
class ValidateCycleErrorModel(BaseSettingsModel):
- enabled: bool = Field(title="ValidateCycleError")
- optional: bool = Field(title="Optional")
- families: list[str] = Field(default_factory=list, title="Families")
+ enabled: bool = SettingsField(title="ValidateCycleError")
+ optional: bool = SettingsField(title="Optional")
+ families: list[str] = SettingsField(
+ default_factory=list, title="Families"
+ )
class ValidatePluginPathAttributesAttrModel(BaseSettingsModel):
- name: str = Field(title="Node type")
- value: str = Field(title="Attribute")
+ name: str = SettingsField(title="Node type")
+ value: str = SettingsField(title="Attribute")
class ValidatePluginPathAttributesModel(BaseSettingsModel):
@@ -234,9 +244,9 @@ class ValidatePluginPathAttributesModel(BaseSettingsModel):
"""
enabled: bool = True
- optional: bool = Field(title="Optional")
- active: bool = Field(title="Active")
- attribute: list[ValidatePluginPathAttributesAttrModel] = Field(
+ optional: bool = SettingsField(title="Optional")
+ active: bool = SettingsField(title="Active")
+ attribute: list[ValidatePluginPathAttributesAttrModel] = SettingsField(
default_factory=list,
title="File Attribute"
)
@@ -250,66 +260,68 @@ def validate_unique_outputs(cls, value):
# Validate Render Setting
class RendererAttributesModel(BaseSettingsModel):
_layout = "compact"
- type: str = Field(title="Type")
- value: str = Field(title="Value")
+ type: str = SettingsField(title="Type")
+ value: str = SettingsField(title="Value")
class ValidateRenderSettingsModel(BaseSettingsModel):
- arnold_render_attributes: list[RendererAttributesModel] = Field(
+ arnold_render_attributes: list[RendererAttributesModel] = SettingsField(
default_factory=list, title="Arnold Render Attributes")
- vray_render_attributes: list[RendererAttributesModel] = Field(
+ vray_render_attributes: list[RendererAttributesModel] = SettingsField(
default_factory=list, title="VRay Render Attributes")
- redshift_render_attributes: list[RendererAttributesModel] = Field(
+ redshift_render_attributes: list[RendererAttributesModel] = SettingsField(
default_factory=list, title="Redshift Render Attributes")
- renderman_render_attributes: list[RendererAttributesModel] = Field(
+ renderman_render_attributes: list[RendererAttributesModel] = SettingsField(
default_factory=list, title="Renderman Render Attributes")
class BasicValidateModel(BaseSettingsModel):
- enabled: bool = Field(title="Enabled")
- optional: bool = Field(title="Optional")
- active: bool = Field(title="Active")
+ enabled: bool = SettingsField(title="Enabled")
+ optional: bool = SettingsField(title="Optional")
+ active: bool = SettingsField(title="Active")
class ValidateCameraContentsModel(BaseSettingsModel):
- enabled: bool = Field(title="Enabled")
- optional: bool = Field(title="Optional")
- validate_shapes: bool = Field(title="Validate presence of shapes")
+ enabled: bool = SettingsField(title="Enabled")
+ optional: bool = SettingsField(title="Optional")
+ validate_shapes: bool = SettingsField(title="Validate presence of shapes")
class ExtractProxyAlembicModel(BaseSettingsModel):
- enabled: bool = Field(title="Enabled")
- families: list[str] = Field(
+ enabled: bool = SettingsField(title="Enabled")
+ families: list[str] = SettingsField(
default_factory=list,
title="Families")
class ExtractAlembicModel(BaseSettingsModel):
- enabled: bool = Field(title="Enabled")
- families: list[str] = Field(
+ enabled: bool = SettingsField(title="Enabled")
+ families: list[str] = SettingsField(
default_factory=list,
title="Families")
class ExtractObjModel(BaseSettingsModel):
- enabled: bool = Field(title="Enabled")
- optional: bool = Field(title="Optional")
+ enabled: bool = SettingsField(title="Enabled")
+ optional: bool = SettingsField(title="Optional")
class ExtractMayaSceneRawModel(BaseSettingsModel):
"""Add loaded instances to those published families:"""
- enabled: bool = Field(title="ExtractMayaSceneRaw")
- add_for_families: list[str] = Field(default_factory=list, title="Families")
+ enabled: bool = SettingsField(title="ExtractMayaSceneRaw")
+ add_for_families: list[str] = SettingsField(
+ default_factory=list, title="Families"
+ )
class ExtractCameraAlembicModel(BaseSettingsModel):
"""
List of attributes that will be added to the baked alembic camera. Needs to be written in python list syntax.
"""
- enabled: bool = Field(title="ExtractCameraAlembic")
- optional: bool = Field(title="Optional")
- active: bool = Field(title="Active")
- bake_attributes: str = Field(
+ enabled: bool = SettingsField(title="ExtractCameraAlembic")
+ optional: bool = SettingsField(title="Optional")
+ active: bool = SettingsField(title="Active")
+ bake_attributes: str = SettingsField(
"[]", title="Base Attributes", widget="textarea"
)
@@ -332,17 +344,19 @@ def validate_json_list(cls, value):
class ExtractGLBModel(BaseSettingsModel):
enabled: bool = True
- active: bool = Field(title="Active")
- ogsfx_path: str = Field(title="GLSL Shader Directory")
+ active: bool = SettingsField(title="Active")
+ ogsfx_path: str = SettingsField(title="GLSL Shader Directory")
class ExtractLookArgsModel(BaseSettingsModel):
- argument: str = Field(title="Argument")
- parameters: list[str] = Field(default_factory=list, title="Parameters")
+ argument: str = SettingsField(title="Argument")
+ parameters: list[str] = SettingsField(
+ default_factory=list, title="Parameters"
+ )
class ExtractLookModel(BaseSettingsModel):
- maketx_arguments: list[ExtractLookArgsModel] = Field(
+ maketx_arguments: list[ExtractLookArgsModel] = SettingsField(
default_factory=list,
title="Extra arguments for maketx command line"
)
@@ -350,423 +364,437 @@ class ExtractLookModel(BaseSettingsModel):
class ExtractGPUCacheModel(BaseSettingsModel):
enabled: bool = True
- families: list[str] = Field(default_factory=list, title="Families")
- step: float = Field(1.0, ge=1.0, title="Step")
- stepSave: int = Field(1, ge=1, title="Step Save")
- optimize: bool = Field(title="Optimize Hierarchy")
- optimizationThreshold: int = Field(1, ge=1, title="Optimization Threshold")
- optimizeAnimationsForMotionBlur: bool = Field(
+ families: list[str] = SettingsField(default_factory=list, title="Families")
+ step: float = SettingsField(1.0, ge=1.0, title="Step")
+ stepSave: int = SettingsField(1, ge=1, title="Step Save")
+ optimize: bool = SettingsField(title="Optimize Hierarchy")
+ optimizationThreshold: int = SettingsField(
+ 1, ge=1, title="Optimization Threshold"
+ )
+ optimizeAnimationsForMotionBlur: bool = SettingsField(
title="Optimize Animations For Motion Blur"
)
- writeMaterials: bool = Field(title="Write Materials")
- useBaseTessellation: bool = Field(title="User Base Tesselation")
+ writeMaterials: bool = SettingsField(title="Write Materials")
+ useBaseTessellation: bool = SettingsField(title="User Base Tesselation")
class PublishersModel(BaseSettingsModel):
- CollectMayaRender: CollectMayaRenderModel = Field(
+ CollectMayaRender: CollectMayaRenderModel = SettingsField(
default_factory=CollectMayaRenderModel,
title="Collect Render Layers",
section="Collectors"
)
- CollectFbxAnimation: CollectFbxAnimationModel = Field(
+ CollectFbxAnimation: CollectFbxAnimationModel = SettingsField(
default_factory=CollectFbxAnimationModel,
title="Collect FBX Animation",
)
- CollectFbxCamera: CollectFbxCameraModel = Field(
+ CollectFbxCamera: CollectFbxCameraModel = SettingsField(
default_factory=CollectFbxCameraModel,
title="Collect Camera for FBX export",
)
- CollectGLTF: CollectGLTFModel = Field(
+ CollectGLTF: CollectGLTFModel = SettingsField(
default_factory=CollectGLTFModel,
title="Collect Assets for GLB/GLTF export"
)
- ValidateInstanceInContext: BasicValidateModel = Field(
+ ValidateInstanceInContext: BasicValidateModel = SettingsField(
default_factory=BasicValidateModel,
title="Validate Instance In Context",
section="Validators"
)
- ValidateContainers: BasicValidateModel = Field(
+ ValidateContainers: BasicValidateModel = SettingsField(
default_factory=BasicValidateModel,
title="Validate Containers"
)
- ValidateFrameRange: ValidateFrameRangeModel = Field(
+ ValidateFrameRange: ValidateFrameRangeModel = SettingsField(
default_factory=ValidateFrameRangeModel,
title="Validate Frame Range"
)
- ValidateShaderName: ValidateShaderNameModel = Field(
+ ValidateShaderName: ValidateShaderNameModel = SettingsField(
default_factory=ValidateShaderNameModel,
title="Validate Shader Name"
)
- ValidateShadingEngine: BasicValidateModel = Field(
+ ValidateShadingEngine: BasicValidateModel = SettingsField(
default_factory=BasicValidateModel,
title="Validate Look Shading Engine Naming"
)
- ValidateMayaColorSpace: BasicValidateModel = Field(
+ ValidateMayaColorSpace: BasicValidateModel = SettingsField(
default_factory=BasicValidateModel,
title="Validate Colorspace"
)
- ValidateAttributes: ValidateAttributesModel = Field(
+ ValidateAttributes: ValidateAttributesModel = SettingsField(
default_factory=ValidateAttributesModel,
title="Validate Attributes"
)
- ValidateLoadedPlugin: ValidateLoadedPluginModel = Field(
+ ValidateLoadedPlugin: ValidateLoadedPluginModel = SettingsField(
default_factory=ValidateLoadedPluginModel,
title="Validate Loaded Plugin"
)
- ValidateMayaUnits: ValidateMayaUnitsModel = Field(
+ ValidateMayaUnits: ValidateMayaUnitsModel = SettingsField(
default_factory=ValidateMayaUnitsModel,
title="Validate Maya Units"
)
- ValidateUnrealStaticMeshName: ValidateUnrealStaticMeshNameModel = Field(
- default_factory=ValidateUnrealStaticMeshNameModel,
- title="Validate Unreal Static Mesh Name"
+ ValidateUnrealStaticMeshName: ValidateUnrealStaticMeshNameModel = (
+ SettingsField(
+ default_factory=ValidateUnrealStaticMeshNameModel,
+ title="Validate Unreal Static Mesh Name"
+ )
)
- ValidateCycleError: ValidateCycleErrorModel = Field(
+ ValidateCycleError: ValidateCycleErrorModel = SettingsField(
default_factory=ValidateCycleErrorModel,
title="Validate Cycle Error"
)
- ValidatePluginPathAttributes: ValidatePluginPathAttributesModel = Field(
- default_factory=ValidatePluginPathAttributesModel,
- title="Plug-in Path Attributes"
+ ValidatePluginPathAttributes: ValidatePluginPathAttributesModel = (
+ SettingsField(
+ default_factory=ValidatePluginPathAttributesModel,
+ title="Plug-in Path Attributes"
+ )
)
- ValidateRenderSettings: ValidateRenderSettingsModel = Field(
+ ValidateRenderSettings: ValidateRenderSettingsModel = SettingsField(
default_factory=ValidateRenderSettingsModel,
title="Validate Render Settings"
)
- ValidateResolution: BasicValidateModel = Field(
+ ValidateResolution: BasicValidateModel = SettingsField(
default_factory=BasicValidateModel,
title="Validate Resolution Setting"
)
- ValidateCurrentRenderLayerIsRenderable: BasicValidateModel = Field(
- default_factory=BasicValidateModel,
- title="Validate Current Render Layer Has Renderable Camera"
+ ValidateCurrentRenderLayerIsRenderable: BasicValidateModel = (
+ SettingsField(
+ default_factory=BasicValidateModel,
+ title="Validate Current Render Layer Has Renderable Camera"
+ )
)
- ValidateGLSLMaterial: BasicValidateModel = Field(
+ ValidateGLSLMaterial: BasicValidateModel = SettingsField(
default_factory=BasicValidateModel,
title="Validate GLSL Material"
)
- ValidateGLSLPlugin: BasicValidateModel = Field(
+ ValidateGLSLPlugin: BasicValidateModel = SettingsField(
default_factory=BasicValidateModel,
title="Validate GLSL Plugin"
)
- ValidateRenderImageRule: BasicValidateModel = Field(
+ ValidateRenderImageRule: BasicValidateModel = SettingsField(
default_factory=BasicValidateModel,
title="Validate Render Image Rule (Workspace)"
)
- ValidateRenderNoDefaultCameras: BasicValidateModel = Field(
+ ValidateRenderNoDefaultCameras: BasicValidateModel = SettingsField(
default_factory=BasicValidateModel,
title="Validate No Default Cameras Renderable"
)
- ValidateRenderSingleCamera: BasicValidateModel = Field(
+ ValidateRenderSingleCamera: BasicValidateModel = SettingsField(
default_factory=BasicValidateModel,
title="Validate Render Single Camera "
)
- ValidateRenderLayerAOVs: BasicValidateModel = Field(
+ ValidateRenderLayerAOVs: BasicValidateModel = SettingsField(
default_factory=BasicValidateModel,
title="Validate Render Passes/AOVs Are Registered"
)
- ValidateStepSize: BasicValidateModel = Field(
+ ValidateStepSize: BasicValidateModel = SettingsField(
default_factory=BasicValidateModel,
title="Validate Step Size"
)
- ValidateVRayDistributedRendering: BasicValidateModel = Field(
+ ValidateVRayDistributedRendering: BasicValidateModel = SettingsField(
default_factory=BasicValidateModel,
title="VRay Distributed Rendering"
)
- ValidateVrayReferencedAOVs: BasicValidateModel = Field(
+ ValidateVrayReferencedAOVs: BasicValidateModel = SettingsField(
default_factory=BasicValidateModel,
title="VRay Referenced AOVs"
)
- ValidateVRayTranslatorEnabled: BasicValidateModel = Field(
+ ValidateVRayTranslatorEnabled: BasicValidateModel = SettingsField(
default_factory=BasicValidateModel,
title="VRay Translator Settings"
)
- ValidateVrayProxy: BasicValidateModel = Field(
+ ValidateVrayProxy: BasicValidateModel = SettingsField(
default_factory=BasicValidateModel,
title="VRay Proxy Settings"
)
- ValidateVrayProxyMembers: BasicValidateModel = Field(
+ ValidateVrayProxyMembers: BasicValidateModel = SettingsField(
default_factory=BasicValidateModel,
title="VRay Proxy Members"
)
- ValidateYetiRenderScriptCallbacks: BasicValidateModel = Field(
+ ValidateYetiRenderScriptCallbacks: BasicValidateModel = SettingsField(
default_factory=BasicValidateModel,
title="Yeti Render Script Callbacks"
)
- ValidateYetiRigCacheState: BasicValidateModel = Field(
+ ValidateYetiRigCacheState: BasicValidateModel = SettingsField(
default_factory=BasicValidateModel,
title="Yeti Rig Cache State"
)
- ValidateYetiRigInputShapesInInstance: BasicValidateModel = Field(
+ ValidateYetiRigInputShapesInInstance: BasicValidateModel = SettingsField(
default_factory=BasicValidateModel,
title="Yeti Rig Input Shapes In Instance"
)
- ValidateYetiRigSettings: BasicValidateModel = Field(
+ ValidateYetiRigSettings: BasicValidateModel = SettingsField(
default_factory=BasicValidateModel,
title="Yeti Rig Settings"
)
# Model - START
- ValidateModelName: ValidateModelNameModel = Field(
+ ValidateModelName: ValidateModelNameModel = SettingsField(
default_factory=ValidateModelNameModel,
title="Validate Model Name",
section="Model",
)
- ValidateModelContent: ValidateModelContentModel = Field(
+ ValidateModelContent: ValidateModelContentModel = SettingsField(
default_factory=ValidateModelContentModel,
title="Validate Model Content",
)
- ValidateTransformNamingSuffix: ValidateTransformNamingSuffixModel = Field(
- default_factory=ValidateTransformNamingSuffixModel,
- title="Validate Transform Naming Suffix",
+ ValidateTransformNamingSuffix: ValidateTransformNamingSuffixModel = (
+ SettingsField(
+ default_factory=ValidateTransformNamingSuffixModel,
+ title="Validate Transform Naming Suffix",
+ )
)
- ValidateColorSets: BasicValidateModel = Field(
+ ValidateColorSets: BasicValidateModel = SettingsField(
default_factory=BasicValidateModel,
title="Validate Color Sets",
)
- ValidateMeshHasOverlappingUVs: BasicValidateModel = Field(
+ ValidateMeshHasOverlappingUVs: BasicValidateModel = SettingsField(
default_factory=BasicValidateModel,
title="Validate Mesh Has Overlapping UVs",
)
- ValidateMeshArnoldAttributes: BasicValidateModel = Field(
+ ValidateMeshArnoldAttributes: BasicValidateModel = SettingsField(
default_factory=BasicValidateModel,
title="Validate Mesh Arnold Attributes",
)
- ValidateMeshShaderConnections: BasicValidateModel = Field(
+ ValidateMeshShaderConnections: BasicValidateModel = SettingsField(
default_factory=BasicValidateModel,
title="Validate Mesh Shader Connections",
)
- ValidateMeshSingleUVSet: BasicValidateModel = Field(
+ ValidateMeshSingleUVSet: BasicValidateModel = SettingsField(
default_factory=BasicValidateModel,
title="Validate Mesh Single UV Set",
)
- ValidateMeshHasUVs: BasicValidateModel = Field(
+ ValidateMeshHasUVs: BasicValidateModel = SettingsField(
default_factory=BasicValidateModel,
title="Validate Mesh Has UVs",
)
- ValidateMeshLaminaFaces: BasicValidateModel = Field(
+ ValidateMeshLaminaFaces: BasicValidateModel = SettingsField(
default_factory=BasicValidateModel,
title="Validate Mesh Lamina Faces",
)
- ValidateMeshNgons: BasicValidateModel = Field(
+ ValidateMeshNgons: BasicValidateModel = SettingsField(
default_factory=BasicValidateModel,
title="Validate Mesh Ngons",
)
- ValidateMeshNonManifold: BasicValidateModel = Field(
+ ValidateMeshNonManifold: BasicValidateModel = SettingsField(
default_factory=BasicValidateModel,
title="Validate Mesh Non-Manifold",
)
- ValidateMeshNoNegativeScale: BasicValidateModel = Field(
+ ValidateMeshNoNegativeScale: BasicValidateModel = SettingsField(
default_factory=BasicValidateModel,
title="Validate Mesh No Negative Scale",
)
- ValidateMeshNonZeroEdgeLength: BasicValidateModel = Field(
+ ValidateMeshNonZeroEdgeLength: BasicValidateModel = SettingsField(
default_factory=BasicValidateModel,
title="Validate Mesh Edge Length Non Zero",
)
- ValidateMeshNormalsUnlocked: BasicValidateModel = Field(
+ ValidateMeshNormalsUnlocked: BasicValidateModel = SettingsField(
default_factory=BasicValidateModel,
title="Validate Mesh Normals Unlocked",
)
- ValidateMeshUVSetMap1: ValidateMeshUVSetMap1Model = Field(
+ ValidateMeshUVSetMap1: ValidateMeshUVSetMap1Model = SettingsField(
default_factory=ValidateMeshUVSetMap1Model,
title="Validate Mesh UV Set Map 1",
)
- ValidateMeshVerticesHaveEdges: BasicValidateModel = Field(
+ ValidateMeshVerticesHaveEdges: BasicValidateModel = SettingsField(
default_factory=BasicValidateModel,
title="Validate Mesh Vertices Have Edges",
)
- ValidateNoAnimation: ValidateNoAnimationModel = Field(
+ ValidateNoAnimation: ValidateNoAnimationModel = SettingsField(
default_factory=ValidateNoAnimationModel,
title="Validate No Animation",
)
- ValidateNoNamespace: BasicValidateModel = Field(
+ ValidateNoNamespace: BasicValidateModel = SettingsField(
default_factory=BasicValidateModel,
title="Validate No Namespace",
)
- ValidateNoNullTransforms: BasicValidateModel = Field(
+ ValidateNoNullTransforms: BasicValidateModel = SettingsField(
default_factory=BasicValidateModel,
title="Validate No Null Transforms",
)
- ValidateNoUnknownNodes: BasicValidateModel = Field(
+ ValidateNoUnknownNodes: BasicValidateModel = SettingsField(
default_factory=BasicValidateModel,
title="Validate No Unknown Nodes",
)
- ValidateNodeNoGhosting: BasicValidateModel = Field(
+ ValidateNodeNoGhosting: BasicValidateModel = SettingsField(
default_factory=BasicValidateModel,
title="Validate Node No Ghosting",
)
- ValidateShapeDefaultNames: BasicValidateModel = Field(
+ ValidateShapeDefaultNames: BasicValidateModel = SettingsField(
default_factory=BasicValidateModel,
title="Validate Shape Default Names",
)
- ValidateShapeRenderStats: BasicValidateModel = Field(
+ ValidateShapeRenderStats: BasicValidateModel = SettingsField(
default_factory=BasicValidateModel,
title="Validate Shape Render Stats",
)
- ValidateShapeZero: BasicValidateModel = Field(
+ ValidateShapeZero: BasicValidateModel = SettingsField(
default_factory=BasicValidateModel,
title="Validate Shape Zero",
)
- ValidateTransformZero: BasicValidateModel = Field(
+ ValidateTransformZero: BasicValidateModel = SettingsField(
default_factory=BasicValidateModel,
title="Validate Transform Zero",
)
- ValidateUniqueNames: BasicValidateModel = Field(
+ ValidateUniqueNames: BasicValidateModel = SettingsField(
default_factory=BasicValidateModel,
title="Validate Unique Names",
)
- ValidateNoVRayMesh: BasicValidateModel = Field(
+ ValidateNoVRayMesh: BasicValidateModel = SettingsField(
default_factory=BasicValidateModel,
title="Validate No V-Ray Proxies (VRayMesh)",
)
- ValidateUnrealMeshTriangulated: BasicValidateModel = Field(
+ ValidateUnrealMeshTriangulated: BasicValidateModel = SettingsField(
default_factory=BasicValidateModel,
title="Validate if Mesh is Triangulated",
)
- ValidateAlembicVisibleOnly: BasicValidateModel = Field(
+ ValidateAlembicVisibleOnly: BasicValidateModel = SettingsField(
default_factory=BasicValidateModel,
title="Validate Alembic Visible Node",
)
- ExtractProxyAlembic: ExtractProxyAlembicModel = Field(
+ ExtractProxyAlembic: ExtractProxyAlembicModel = SettingsField(
default_factory=ExtractProxyAlembicModel,
title="Extract Proxy Alembic",
section="Model Extractors",
)
- ExtractAlembic: ExtractAlembicModel = Field(
+ ExtractAlembic: ExtractAlembicModel = SettingsField(
default_factory=ExtractAlembicModel,
title="Extract Alembic",
)
- ExtractObj: ExtractObjModel = Field(
+ ExtractObj: ExtractObjModel = SettingsField(
default_factory=ExtractObjModel,
title="Extract OBJ"
)
# Model - END
# Rig - START
- ValidateRigContents: BasicValidateModel = Field(
+ ValidateRigContents: BasicValidateModel = SettingsField(
default_factory=BasicValidateModel,
title="Validate Rig Contents",
section="Rig",
)
- ValidateRigJointsHidden: BasicValidateModel = Field(
+ ValidateRigJointsHidden: BasicValidateModel = SettingsField(
default_factory=BasicValidateModel,
title="Validate Rig Joints Hidden",
)
- ValidateRigControllers: BasicValidateModel = Field(
+ ValidateRigControllers: BasicValidateModel = SettingsField(
default_factory=BasicValidateModel,
title="Validate Rig Controllers",
)
- ValidateAnimatedReferenceRig: BasicValidateModel = Field(
+ ValidateAnimatedReferenceRig: BasicValidateModel = SettingsField(
default_factory=BasicValidateModel,
title="Validate Animated Reference Rig",
)
- ValidateAnimationContent: BasicValidateModel = Field(
+ ValidateAnimationContent: BasicValidateModel = SettingsField(
default_factory=BasicValidateModel,
title="Validate Animation Content",
)
- ValidateOutRelatedNodeIds: BasicValidateModel = Field(
+ ValidateOutRelatedNodeIds: BasicValidateModel = SettingsField(
default_factory=BasicValidateModel,
title="Validate Animation Out Set Related Node Ids",
)
- ValidateRigControllersArnoldAttributes: BasicValidateModel = Field(
- default_factory=BasicValidateModel,
- title="Validate Rig Controllers (Arnold Attributes)",
+ ValidateRigControllersArnoldAttributes: BasicValidateModel = (
+ SettingsField(
+ default_factory=BasicValidateModel,
+ title="Validate Rig Controllers (Arnold Attributes)",
+ )
)
- ValidateSkeletalMeshHierarchy: BasicValidateModel = Field(
+ ValidateSkeletalMeshHierarchy: BasicValidateModel = SettingsField(
default_factory=BasicValidateModel,
title="Validate Skeletal Mesh Top Node",
)
- ValidateSkeletonRigContents: BasicValidateModel = Field(
+ ValidateSkeletonRigContents: BasicValidateModel = SettingsField(
default_factory=BasicValidateModel,
title="Validate Skeleton Rig Contents"
)
- ValidateSkeletonRigControllers: BasicValidateModel = Field(
+ ValidateSkeletonRigControllers: BasicValidateModel = SettingsField(
default_factory=BasicValidateModel,
title="Validate Skeleton Rig Controllers"
)
- ValidateSkinclusterDeformerSet: BasicValidateModel = Field(
+ ValidateSkinclusterDeformerSet: BasicValidateModel = SettingsField(
default_factory=BasicValidateModel,
title="Validate Skincluster Deformer Relationships",
)
- ValidateSkeletonRigOutputIds: BasicValidateModel = Field(
+ ValidateSkeletonRigOutputIds: BasicValidateModel = SettingsField(
default_factory=BasicValidateModel,
title="Validate Skeleton Rig Output Ids"
)
- ValidateSkeletonTopGroupHierarchy: BasicValidateModel = Field(
+ ValidateSkeletonTopGroupHierarchy: BasicValidateModel = SettingsField(
default_factory=BasicValidateModel,
title="Validate Skeleton Top Group Hierarchy",
)
- ValidateRigOutSetNodeIds: ValidateRigOutSetNodeIdsModel = Field(
+ ValidateRigOutSetNodeIds: ValidateRigOutSetNodeIdsModel = SettingsField(
default_factory=ValidateRigOutSetNodeIdsModel,
title="Validate Rig Out Set Node Ids",
)
- ValidateSkeletonRigOutSetNodeIds: ValidateRigOutSetNodeIdsModel = Field(
- default_factory=ValidateRigOutSetNodeIdsModel,
- title="Validate Skeleton Rig Out Set Node Ids",
+ ValidateSkeletonRigOutSetNodeIds: ValidateRigOutSetNodeIdsModel = (
+ SettingsField(
+ default_factory=ValidateRigOutSetNodeIdsModel,
+ title="Validate Skeleton Rig Out Set Node Ids",
+ )
)
# Rig - END
- ValidateCameraAttributes: BasicValidateModel = Field(
+ ValidateCameraAttributes: BasicValidateModel = SettingsField(
default_factory=BasicValidateModel,
title="Validate Camera Attributes"
)
- ValidateAssemblyName: BasicValidateModel = Field(
+ ValidateAssemblyName: BasicValidateModel = SettingsField(
default_factory=BasicValidateModel,
title="Validate Assembly Name"
)
- ValidateAssemblyNamespaces: BasicValidateModel = Field(
+ ValidateAssemblyNamespaces: BasicValidateModel = SettingsField(
default_factory=BasicValidateModel,
title="Validate Assembly Namespaces"
)
- ValidateAssemblyModelTransforms: BasicValidateModel = Field(
+ ValidateAssemblyModelTransforms: BasicValidateModel = SettingsField(
default_factory=BasicValidateModel,
title="Validate Assembly Model Transforms"
)
- ValidateAssRelativePaths: BasicValidateModel = Field(
+ ValidateAssRelativePaths: BasicValidateModel = SettingsField(
default_factory=BasicValidateModel,
title="Validate Ass Relative Paths"
)
- ValidateInstancerContent: BasicValidateModel = Field(
+ ValidateInstancerContent: BasicValidateModel = SettingsField(
default_factory=BasicValidateModel,
title="Validate Instancer Content"
)
- ValidateInstancerFrameRanges: BasicValidateModel = Field(
+ ValidateInstancerFrameRanges: BasicValidateModel = SettingsField(
default_factory=BasicValidateModel,
title="Validate Instancer Cache Frame Ranges"
)
- ValidateNoDefaultCameras: BasicValidateModel = Field(
+ ValidateNoDefaultCameras: BasicValidateModel = SettingsField(
default_factory=BasicValidateModel,
title="Validate No Default Cameras"
)
- ValidateUnrealUpAxis: BasicValidateModel = Field(
+ ValidateUnrealUpAxis: BasicValidateModel = SettingsField(
default_factory=BasicValidateModel,
title="Validate Unreal Up-Axis Check"
)
- ValidateCameraContents: ValidateCameraContentsModel = Field(
+ ValidateCameraContents: ValidateCameraContentsModel = SettingsField(
default_factory=ValidateCameraContentsModel,
title="Validate Camera Content"
)
- ExtractPlayblast: ExtractPlayblastSetting = Field(
+ ExtractPlayblast: ExtractPlayblastSetting = SettingsField(
default_factory=ExtractPlayblastSetting,
title="Extract Playblast Settings",
section="Extractors"
)
- ExtractMayaSceneRaw: ExtractMayaSceneRawModel = Field(
+ ExtractMayaSceneRaw: ExtractMayaSceneRawModel = SettingsField(
default_factory=ExtractMayaSceneRawModel,
title="Maya Scene(Raw)"
)
- ExtractCameraAlembic: ExtractCameraAlembicModel = Field(
+ ExtractCameraAlembic: ExtractCameraAlembicModel = SettingsField(
default_factory=ExtractCameraAlembicModel,
title="Extract Camera Alembic"
)
- ExtractGLB: ExtractGLBModel = Field(
+ ExtractGLB: ExtractGLBModel = SettingsField(
default_factory=ExtractGLBModel,
title="Extract GLB"
)
- ExtractLook: ExtractLookModel = Field(
+ ExtractLook: ExtractLookModel = SettingsField(
default_factory=ExtractLookModel,
title="Extract Look"
)
- ExtractGPUCache: ExtractGPUCacheModel = Field(
+ ExtractGPUCache: ExtractGPUCacheModel = SettingsField(
default_factory=ExtractGPUCacheModel,
title="Extract GPU Cache",
)
diff --git a/server_addon/maya/server/settings/render_settings.py b/server_addon/maya/server/settings/render_settings.py
index b6163a04ce0..15ff177e7fe 100644
--- a/server_addon/maya/server/settings/render_settings.py
+++ b/server_addon/maya/server/settings/render_settings.py
@@ -1,7 +1,5 @@
"""Providing models and values for Maya Render Settings."""
-from pydantic import Field
-
-from ayon_server.settings import BaseSettingsModel
+from ayon_server.settings import BaseSettingsModel, SettingsField
def aov_separators_enum():
@@ -278,22 +276,22 @@ class AdditionalOptionsModel(BaseSettingsModel):
"""Additional Option"""
_layout = "compact"
- attribute: str = Field("", title="Attribute name")
- value: str = Field("", title="Value")
+ attribute: str = SettingsField("", title="Attribute name")
+ value: str = SettingsField("", title="Value")
class ArnoldSettingsModel(BaseSettingsModel):
- image_prefix: str = Field(title="Image prefix template")
- image_format: str = Field(
+ image_prefix: str = SettingsField(title="Image prefix template")
+ image_format: str = SettingsField(
enum_resolver=arnold_image_format_enum, title="Output Image Format")
- multilayer_exr: bool = Field(title="Multilayer (exr)")
- tiled: bool = Field(title="Tiled (tif, exr)")
- aov_list: list[str] = Field(
+ multilayer_exr: bool = SettingsField(title="Multilayer (exr)")
+ tiled: bool = SettingsField(title="Tiled (tif, exr)")
+ aov_list: list[str] = SettingsField(
default_factory=list,
enum_resolver=arnold_aov_list_enum,
title="AOVs to create"
)
- additional_options: list[AdditionalOptionsModel] = Field(
+ additional_options: list[AdditionalOptionsModel] = SettingsField(
default_factory=list,
title="Additional Arnold Options",
description=(
@@ -303,25 +301,25 @@ class ArnoldSettingsModel(BaseSettingsModel):
class VraySettingsModel(BaseSettingsModel):
- image_prefix: str = Field(title="Image prefix template")
+ image_prefix: str = SettingsField(title="Image prefix template")
# engine was str because of JSON limitation (key must be string)
- engine: str = Field(
+ engine: str = SettingsField(
enum_resolver=lambda: [
{"label": "V-Ray", "value": "1"},
{"label": "V-Ray GPU", "value": "2"}
],
title="Production Engine"
)
- image_format: str = Field(
+ image_format: str = SettingsField(
enum_resolver=vray_image_output_enum,
title="Output Image Format"
)
- aov_list: list[str] = Field(
+ aov_list: list[str] = SettingsField(
default_factory=list,
enum_resolver=vray_aov_list_enum,
title="AOVs to create"
)
- additional_options: list[AdditionalOptionsModel] = Field(
+ additional_options: list[AdditionalOptionsModel] = SettingsField(
default_factory=list,
title="Additional Vray Options",
description=(
@@ -332,29 +330,29 @@ class VraySettingsModel(BaseSettingsModel):
class RedshiftSettingsModel(BaseSettingsModel):
- image_prefix: str = Field(title="Image prefix template")
+ image_prefix: str = SettingsField(title="Image prefix template")
# both engines are using the same enumerator,
# both were originally str because of JSON limitation.
- primary_gi_engine: str = Field(
+ primary_gi_engine: str = SettingsField(
enum_resolver=redshift_engine_enum,
title="Primary GI Engine"
)
- secondary_gi_engine: str = Field(
+ secondary_gi_engine: str = SettingsField(
enum_resolver=redshift_engine_enum,
title="Secondary GI Engine"
)
- image_format: str = Field(
+ image_format: str = SettingsField(
enum_resolver=redshift_image_output_enum,
title="Output Image Format"
)
- multilayer_exr: bool = Field(title="Multilayer (exr)")
- force_combine: bool = Field(title="Force combine beauty and AOVs")
- aov_list: list[str] = Field(
+ multilayer_exr: bool = SettingsField(title="Multilayer (exr)")
+ force_combine: bool = SettingsField(title="Force combine beauty and AOVs")
+ aov_list: list[str] = SettingsField(
default_factory=list,
enum_resolver=redshift_aov_list_enum,
title="AOVs to create"
)
- additional_options: list[AdditionalOptionsModel] = Field(
+ additional_options: list[AdditionalOptionsModel] = SettingsField(
default_factory=list,
title="Additional Vray Options",
description=(
@@ -396,61 +394,61 @@ def renderman_sample_filters_enum():
class RendermanSettingsModel(BaseSettingsModel):
- image_prefix: str = Field(
+ image_prefix: str = SettingsField(
"", title="Image prefix template")
- image_dir: str = Field(
+ image_dir: str = SettingsField(
"", title="Image Output Directory")
- display_filters: list[str] = Field(
+ display_filters: list[str] = SettingsField(
default_factory=list,
title="Display Filters",
enum_resolver=renderman_display_filters
)
- imageDisplay_dir: str = Field(
+ imageDisplay_dir: str = SettingsField(
"", title="Image Display Filter Directory")
- sample_filters: list[str] = Field(
+ sample_filters: list[str] = SettingsField(
default_factory=list,
title="Sample Filters",
enum_resolver=renderman_sample_filters_enum
)
- cryptomatte_dir: str = Field(
+ cryptomatte_dir: str = SettingsField(
"", title="Cryptomatte Output Directory")
- watermark_dir: str = Field(
+ watermark_dir: str = SettingsField(
"", title="Watermark Filter Directory")
- additional_options: list[AdditionalOptionsModel] = Field(
+ additional_options: list[AdditionalOptionsModel] = SettingsField(
default_factory=list,
title="Additional Renderer Options"
)
class RenderSettingsModel(BaseSettingsModel):
- apply_render_settings: bool = Field(
+ apply_render_settings: bool = SettingsField(
title="Apply Render Settings on creation"
)
- default_render_image_folder: str = Field(
+ default_render_image_folder: str = SettingsField(
title="Default render image folder"
)
- enable_all_lights: bool = Field(
+ enable_all_lights: bool = SettingsField(
title="Include all lights in Render Setup Layers by default"
)
- aov_separator: str = Field(
+ aov_separator: str = SettingsField(
"underscore",
title="AOV Separator character",
enum_resolver=aov_separators_enum
)
- reset_current_frame: bool = Field(
+ reset_current_frame: bool = SettingsField(
title="Reset Current Frame")
- remove_aovs: bool = Field(
+ remove_aovs: bool = SettingsField(
title="Remove existing AOVs")
- arnold_renderer: ArnoldSettingsModel = Field(
+ arnold_renderer: ArnoldSettingsModel = SettingsField(
default_factory=ArnoldSettingsModel,
title="Arnold Renderer")
- vray_renderer: VraySettingsModel = Field(
+ vray_renderer: VraySettingsModel = SettingsField(
default_factory=VraySettingsModel,
title="Vray Renderer")
- redshift_renderer: RedshiftSettingsModel = Field(
+ redshift_renderer: RedshiftSettingsModel = SettingsField(
default_factory=RedshiftSettingsModel,
title="Redshift Renderer")
- renderman_renderer: RendermanSettingsModel = Field(
+ renderman_renderer: RendermanSettingsModel = SettingsField(
default_factory=RendermanSettingsModel,
title="Renderman Renderer")
diff --git a/server_addon/maya/server/settings/scriptsmenu.py b/server_addon/maya/server/settings/scriptsmenu.py
index 4ac2263f7a7..d01dff1621f 100644
--- a/server_addon/maya/server/settings/scriptsmenu.py
+++ b/server_addon/maya/server/settings/scriptsmenu.py
@@ -1,24 +1,24 @@
-from pydantic import Field
-
-from ayon_server.settings import BaseSettingsModel
+from ayon_server.settings import BaseSettingsModel, SettingsField
class ScriptsmenuSubmodel(BaseSettingsModel):
"""Item Definition"""
_isGroup = True
- type: str = Field(title="Type")
- command: str = Field(title="Command")
- sourcetype: str = Field(title="Source Type")
- title: str = Field(title="Title")
- tooltip: str = Field(title="Tooltip")
- tags: list[str] = Field(default_factory=list, title="A list of tags")
+ type: str = SettingsField(title="Type")
+ command: str = SettingsField(title="Command")
+ sourcetype: str = SettingsField(title="Source Type")
+ title: str = SettingsField(title="Title")
+ tooltip: str = SettingsField(title="Tooltip")
+ tags: list[str] = SettingsField(
+ default_factory=list, title="A list of tags"
+ )
class ScriptsmenuModel(BaseSettingsModel):
_isGroup = True
- name: str = Field(title="Menu Name")
- definition: list[ScriptsmenuSubmodel] = Field(
+ name: str = SettingsField(title="Menu Name")
+ definition: list[ScriptsmenuSubmodel] = SettingsField(
default_factory=list,
title="Menu Definition",
description="Scriptmenu Items Definition"
diff --git a/server_addon/maya/server/settings/templated_workfile_settings.py b/server_addon/maya/server/settings/templated_workfile_settings.py
index ef81b31a071..1baa2c895cc 100644
--- a/server_addon/maya/server/settings/templated_workfile_settings.py
+++ b/server_addon/maya/server/settings/templated_workfile_settings.py
@@ -1,20 +1,25 @@
-from pydantic import Field
-from ayon_server.settings import BaseSettingsModel, task_types_enum
+from ayon_server.settings import (
+ BaseSettingsModel,
+ SettingsField,
+ task_types_enum,
+)
class WorkfileBuildProfilesModel(BaseSettingsModel):
_layout = "expanded"
- task_types: list[str] = Field(
+ task_types: list[str] = SettingsField(
default_factory=list,
title="Task types",
enum_resolver=task_types_enum
)
- task_names: list[str] = Field(default_factory=list, title="Task names")
- path: str = Field("", title="Path to template")
+ task_names: list[str] = SettingsField(
+ default_factory=list, title="Task names"
+ )
+ path: str = SettingsField("", title="Path to template")
class TemplatedProfilesModel(BaseSettingsModel):
- profiles: list[WorkfileBuildProfilesModel] = Field(
+ profiles: list[WorkfileBuildProfilesModel] = SettingsField(
default_factory=list,
title="Profiles"
)
diff --git a/server_addon/maya/server/settings/workfile_build_settings.py b/server_addon/maya/server/settings/workfile_build_settings.py
index 2c7fea85c4e..ee0b7934052 100644
--- a/server_addon/maya/server/settings/workfile_build_settings.py
+++ b/server_addon/maya/server/settings/workfile_build_settings.py
@@ -1,38 +1,41 @@
-from pydantic import Field
-from ayon_server.settings import BaseSettingsModel, task_types_enum
+from ayon_server.settings import (
+ BaseSettingsModel,
+ SettingsField,
+ task_types_enum,
+)
class ContextItemModel(BaseSettingsModel):
_layout = "expanded"
- product_name_filters: list[str] = Field(
+ product_name_filters: list[str] = SettingsField(
default_factory=list, title="Product name Filters")
- product_types: list[str] = Field(
+ product_types: list[str] = SettingsField(
default_factory=list, title="Product types")
- repre_names: list[str] = Field(
+ repre_names: list[str] = SettingsField(
default_factory=list, title="Repre Names")
- loaders: list[str] = Field(
+ loaders: list[str] = SettingsField(
default_factory=list, title="Loaders")
class WorkfileSettingModel(BaseSettingsModel):
_layout = "expanded"
- task_types: list[str] = Field(
+ task_types: list[str] = SettingsField(
default_factory=list,
enum_resolver=task_types_enum,
title="Task types")
- tasks: list[str] = Field(
+ tasks: list[str] = SettingsField(
default_factory=list,
title="Task names")
- current_context: list[ContextItemModel] = Field(
+ current_context: list[ContextItemModel] = SettingsField(
default_factory=list,
title="Current Context")
- linked_assets: list[ContextItemModel] = Field(
+ linked_assets: list[ContextItemModel] = SettingsField(
default_factory=list,
title="Linked Assets")
class ProfilesModel(BaseSettingsModel):
- profiles: list[WorkfileSettingModel] = Field(
+ profiles: list[WorkfileSettingModel] = SettingsField(
default_factory=list,
title="Profiles"
)
diff --git a/server_addon/nuke/server/settings/common.py b/server_addon/nuke/server/settings/common.py
index 2bc3c9be81a..e0ee2b7b3da 100644
--- a/server_addon/nuke/server/settings/common.py
+++ b/server_addon/nuke/server/settings/common.py
@@ -1,7 +1,6 @@
import json
-from pydantic import Field
from ayon_server.exceptions import BadRequestException
-from ayon_server.settings import BaseSettingsModel
+from ayon_server.settings import BaseSettingsModel, SettingsField
from ayon_server.types import (
ColorRGBA_float,
ColorRGB_uint8
@@ -27,25 +26,25 @@ def validate_json_dict(value):
class Vector2d(BaseSettingsModel):
_layout = "compact"
- x: float = Field(1.0, title="X")
- y: float = Field(1.0, title="Y")
+ x: float = SettingsField(1.0, title="X")
+ y: float = SettingsField(1.0, title="Y")
class Vector3d(BaseSettingsModel):
_layout = "compact"
- x: float = Field(1.0, title="X")
- y: float = Field(1.0, title="Y")
- z: float = Field(1.0, title="Z")
+ x: float = SettingsField(1.0, title="X")
+ y: float = SettingsField(1.0, title="Y")
+ z: float = SettingsField(1.0, title="Z")
class Box(BaseSettingsModel):
_layout = "compact"
- x: float = Field(1.0, title="X")
- y: float = Field(1.0, title="Y")
- r: float = Field(1.0, title="R")
- t: float = Field(1.0, title="T")
+ x: float = SettingsField(1.0, title="X")
+ y: float = SettingsField(1.0, title="Y")
+ r: float = SettingsField(1.0, title="R")
+ t: float = SettingsField(1.0, title="T")
def formatable_knob_type_enum():
@@ -61,12 +60,12 @@ def formatable_knob_type_enum():
class Formatable(BaseSettingsModel):
_layout = "compact"
- template: str = Field(
+ template: str = SettingsField(
"",
placeholder="""{{key}} or {{key}};{{key}}""",
title="Template"
)
- to_type: str = Field(
+ to_type: str = SettingsField(
"Text",
title="To Knob type",
enum_resolver=formatable_knob_type_enum,
@@ -91,46 +90,46 @@ class Formatable(BaseSettingsModel):
class KnobModel(BaseSettingsModel):
_layout = "expanded"
- type: str = Field(
+ type: str = SettingsField(
title="Type",
description="Switch between different knob types",
enum_resolver=lambda: knob_types_enum,
conditionalEnum=True
)
- name: str = Field(
+ name: str = SettingsField(
title="Name",
placeholder="Name"
)
- text: str = Field("", title="Value")
- color_gui: ColorRGB_uint8 = Field(
+ text: str = SettingsField("", title="Value")
+ color_gui: ColorRGB_uint8 = SettingsField(
(0, 0, 255),
title="RGB Uint8",
)
- boolean: bool = Field(False, title="Value")
- number: int = Field(0, title="Value")
- decimal_number: float = Field(0.0, title="Value")
- vector_2d: Vector2d = Field(
+ boolean: bool = SettingsField(False, title="Value")
+ number: int = SettingsField(0, title="Value")
+ decimal_number: float = SettingsField(0.0, title="Value")
+ vector_2d: Vector2d = SettingsField(
default_factory=Vector2d,
title="Value"
)
- vector_3d: Vector3d = Field(
+ vector_3d: Vector3d = SettingsField(
default_factory=Vector3d,
title="Value"
)
- color: ColorRGBA_float = Field(
+ color: ColorRGBA_float = SettingsField(
(0.0, 0.0, 1.0, 1.0),
title="RGBA Float"
)
- box: Box = Field(
+ box: Box = SettingsField(
default_factory=Box,
title="Value"
)
- formatable: Formatable = Field(
+ formatable: Formatable = SettingsField(
default_factory=Formatable,
title="Formatable"
)
- expression: str = Field(
+ expression: str = SettingsField(
"",
title="Expression"
)
diff --git a/server_addon/nuke/server/settings/create_plugins.py b/server_addon/nuke/server/settings/create_plugins.py
index 80aec51ae05..378d449b0b0 100644
--- a/server_addon/nuke/server/settings/create_plugins.py
+++ b/server_addon/nuke/server/settings/create_plugins.py
@@ -1,6 +1,7 @@
-from pydantic import validator, Field
+from pydantic import validator
from ayon_server.settings import (
BaseSettingsModel,
+ SettingsField,
ensure_unique_names
)
from .common import KnobModel
@@ -16,20 +17,20 @@ def instance_attributes_enum():
class PrenodeModel(BaseSettingsModel):
- name: str = Field(
+ name: str = SettingsField(
title="Node name"
)
- nodeclass: str = Field(
+ nodeclass: str = SettingsField(
"",
title="Node class"
)
- dependent: str = Field(
+ dependent: str = SettingsField(
"",
title="Incoming dependency"
)
- knobs: list[KnobModel] = Field(
+ knobs: list[KnobModel] = SettingsField(
default_factory=list,
title="Knobs",
)
@@ -42,20 +43,20 @@ def ensure_unique_names(cls, value):
class CreateWriteRenderModel(BaseSettingsModel):
- temp_rendering_path_template: str = Field(
+ temp_rendering_path_template: str = SettingsField(
title="Temporary rendering path template"
)
- default_variants: list[str] = Field(
+ default_variants: list[str] = SettingsField(
title="Default variants",
default_factory=list
)
- instance_attributes: list[str] = Field(
+ instance_attributes: list[str] = SettingsField(
default_factory=list,
enum_resolver=instance_attributes_enum,
title="Instance attributes"
)
- prenodes: list[PrenodeModel] = Field(
+ prenodes: list[PrenodeModel] = SettingsField(
default_factory=list,
title="Preceding nodes",
)
@@ -68,20 +69,20 @@ def ensure_unique_names(cls, value):
class CreateWritePrerenderModel(BaseSettingsModel):
- temp_rendering_path_template: str = Field(
+ temp_rendering_path_template: str = SettingsField(
title="Temporary rendering path template"
)
- default_variants: list[str] = Field(
+ default_variants: list[str] = SettingsField(
title="Default variants",
default_factory=list
)
- instance_attributes: list[str] = Field(
+ instance_attributes: list[str] = SettingsField(
default_factory=list,
enum_resolver=instance_attributes_enum,
title="Instance attributes"
)
- prenodes: list[PrenodeModel] = Field(
+ prenodes: list[PrenodeModel] = SettingsField(
default_factory=list,
title="Preceding nodes",
)
@@ -94,20 +95,20 @@ def ensure_unique_names(cls, value):
class CreateWriteImageModel(BaseSettingsModel):
- temp_rendering_path_template: str = Field(
+ temp_rendering_path_template: str = SettingsField(
title="Temporary rendering path template"
)
- default_variants: list[str] = Field(
+ default_variants: list[str] = SettingsField(
title="Default variants",
default_factory=list
)
- instance_attributes: list[str] = Field(
+ instance_attributes: list[str] = SettingsField(
default_factory=list,
enum_resolver=instance_attributes_enum,
title="Instance attributes"
)
- prenodes: list[PrenodeModel] = Field(
+ prenodes: list[PrenodeModel] = SettingsField(
default_factory=list,
title="Preceding nodes",
)
@@ -120,15 +121,15 @@ def ensure_unique_names(cls, value):
class CreatorPluginsSettings(BaseSettingsModel):
- CreateWriteRender: CreateWriteRenderModel = Field(
+ CreateWriteRender: CreateWriteRenderModel = SettingsField(
default_factory=CreateWriteRenderModel,
title="Create Write Render"
)
- CreateWritePrerender: CreateWritePrerenderModel = Field(
+ CreateWritePrerender: CreateWritePrerenderModel = SettingsField(
default_factory=CreateWritePrerenderModel,
title="Create Write Prerender"
)
- CreateWriteImage: CreateWriteImageModel = Field(
+ CreateWriteImage: CreateWriteImageModel = SettingsField(
default_factory=CreateWriteImageModel,
title="Create Write Image"
)
diff --git a/server_addon/nuke/server/settings/dirmap.py b/server_addon/nuke/server/settings/dirmap.py
index 7e3c4439572..3e1bac07397 100644
--- a/server_addon/nuke/server/settings/dirmap.py
+++ b/server_addon/nuke/server/settings/dirmap.py
@@ -1,14 +1,13 @@
-from pydantic import Field
-from ayon_server.settings import BaseSettingsModel
+from ayon_server.settings import BaseSettingsModel, SettingsField
class DirmapPathsSubmodel(BaseSettingsModel):
_layout = "compact"
- source_path: list[str] = Field(
+ source_path: list[str] = SettingsField(
default_factory=list,
title="Source Paths"
)
- destination_path: list[str] = Field(
+ destination_path: list[str] = SettingsField(
default_factory=list,
title="Destination Paths"
)
@@ -18,8 +17,8 @@ class DirmapSettings(BaseSettingsModel):
"""Nuke color management project settings."""
_isGroup: bool = True
- enabled: bool = Field(title="enabled")
- paths: DirmapPathsSubmodel = Field(
+ enabled: bool = SettingsField(title="enabled")
+ paths: DirmapPathsSubmodel = SettingsField(
default_factory=DirmapPathsSubmodel,
title="Dirmap Paths"
)
diff --git a/server_addon/nuke/server/settings/general.py b/server_addon/nuke/server/settings/general.py
index bcbb1839520..d54c725dc16 100644
--- a/server_addon/nuke/server/settings/general.py
+++ b/server_addon/nuke/server/settings/general.py
@@ -1,23 +1,22 @@
-from pydantic import Field
-from ayon_server.settings import BaseSettingsModel
+from ayon_server.settings import BaseSettingsModel, SettingsField
class MenuShortcut(BaseSettingsModel):
"""Nuke general project settings."""
- create: str = Field(
+ create: str = SettingsField(
title="Create..."
)
- publish: str = Field(
+ publish: str = SettingsField(
title="Publish..."
)
- load: str = Field(
+ load: str = SettingsField(
title="Load..."
)
- manage: str = Field(
+ manage: str = SettingsField(
title="Manage..."
)
- build_workfile: str = Field(
+ build_workfile: str = SettingsField(
title="Build Workfile..."
)
@@ -25,7 +24,7 @@ class MenuShortcut(BaseSettingsModel):
class GeneralSettings(BaseSettingsModel):
"""Nuke general project settings."""
- menu: MenuShortcut = Field(
+ menu: MenuShortcut = SettingsField(
default_factory=MenuShortcut,
title="Menu Shortcuts",
)
diff --git a/server_addon/nuke/server/settings/gizmo.py b/server_addon/nuke/server/settings/gizmo.py
index 4cdd614da8a..ddb56f891c7 100644
--- a/server_addon/nuke/server/settings/gizmo.py
+++ b/server_addon/nuke/server/settings/gizmo.py
@@ -1,52 +1,52 @@
-from pydantic import Field
from ayon_server.settings import (
BaseSettingsModel,
+ SettingsField,
MultiplatformPathModel,
MultiplatformPathListModel,
)
class SubGizmoItem(BaseSettingsModel):
- title: str = Field(
+ title: str = SettingsField(
title="Label"
)
- sourcetype: str = Field(
+ sourcetype: str = SettingsField(
title="Type of usage"
)
- command: str = Field(
+ command: str = SettingsField(
title="Python command"
)
- icon: str = Field(
+ icon: str = SettingsField(
title="Icon Path"
)
- shortcut: str = Field(
+ shortcut: str = SettingsField(
title="Hotkey"
)
class GizmoDefinitionItem(BaseSettingsModel):
- gizmo_toolbar_path: str = Field(
+ gizmo_toolbar_path: str = SettingsField(
title="Gizmo Menu"
)
- sub_gizmo_list: list[SubGizmoItem] = Field(
+ sub_gizmo_list: list[SubGizmoItem] = SettingsField(
default_factory=list, title="Sub Gizmo List")
class GizmoItem(BaseSettingsModel):
"""Nuke gizmo item """
- toolbar_menu_name: str = Field(
+ toolbar_menu_name: str = SettingsField(
title="Toolbar Menu Name"
)
- gizmo_source_dir: MultiplatformPathListModel = Field(
+ gizmo_source_dir: MultiplatformPathListModel = SettingsField(
default_factory=MultiplatformPathListModel,
title="Gizmo Directory Path"
)
- toolbar_icon_path: MultiplatformPathModel = Field(
+ toolbar_icon_path: MultiplatformPathModel = SettingsField(
default_factory=MultiplatformPathModel,
title="Toolbar Icon Path"
)
- gizmo_definition: list[GizmoDefinitionItem] = Field(
+ gizmo_definition: list[GizmoDefinitionItem] = SettingsField(
default_factory=list, title="Gizmo Definition")
diff --git a/server_addon/nuke/server/settings/imageio.py b/server_addon/nuke/server/settings/imageio.py
index 19ad5ff24aa..1b84457133c 100644
--- a/server_addon/nuke/server/settings/imageio.py
+++ b/server_addon/nuke/server/settings/imageio.py
@@ -1,7 +1,8 @@
from typing import Literal
-from pydantic import validator, Field
+from pydantic import validator
from ayon_server.settings import (
BaseSettingsModel,
+ SettingsField,
ensure_unique_names,
)
@@ -10,17 +11,17 @@
class NodesModel(BaseSettingsModel):
_layout = "expanded"
- plugins: list[str] = Field(
+ plugins: list[str] = SettingsField(
default_factory=list,
title="Used in plugins"
)
- nuke_node_class: str = Field(
+ nuke_node_class: str = SettingsField(
title="Nuke Node Class",
)
class RequiredNodesModel(NodesModel):
- knobs: list[KnobModel] = Field(
+ knobs: list[KnobModel] = SettingsField(
default_factory=list,
title="Knobs",
)
@@ -33,12 +34,12 @@ def ensure_unique_names(cls, value):
class OverrideNodesModel(NodesModel):
- subsets: list[str] = Field(
+ subsets: list[str] = SettingsField(
default_factory=list,
title="Subsets"
)
- knobs: list[KnobModel] = Field(
+ knobs: list[KnobModel] = SettingsField(
default_factory=list,
title="Knobs",
)
@@ -51,11 +52,11 @@ def ensure_unique_names(cls, value):
class NodesSetting(BaseSettingsModel):
- required_nodes: list[RequiredNodesModel] = Field(
+ required_nodes: list[RequiredNodesModel] = SettingsField(
title="Plugin required",
default_factory=list
)
- override_nodes: list[OverrideNodesModel] = Field(
+ override_nodes: list[OverrideNodesModel] = SettingsField(
title="Plugin's node overrides",
default_factory=list
)
@@ -82,21 +83,21 @@ def ocio_configs_switcher_enum():
class WorkfileColorspaceSettings(BaseSettingsModel):
"""Nuke workfile colorspace preset. """
- color_management: Literal["Nuke", "OCIO"] = Field(
+ color_management: Literal["Nuke", "OCIO"] = SettingsField(
title="Color Management Workflow"
)
- native_ocio_config: str = Field(
+ native_ocio_config: str = SettingsField(
title="Native OpenColorIO Config",
description="Switch between native OCIO configs",
enum_resolver=ocio_configs_switcher_enum,
conditionalEnum=True
)
- working_space: str = Field(
+ working_space: str = SettingsField(
title="Working Space"
)
- thumbnail_space: str = Field(
+ thumbnail_space: str = SettingsField(
title="Thumbnail Space"
)
@@ -104,44 +105,44 @@ class WorkfileColorspaceSettings(BaseSettingsModel):
class ReadColorspaceRulesItems(BaseSettingsModel):
_layout = "expanded"
- regex: str = Field("", title="Regex expression")
- colorspace: str = Field("", title="Colorspace")
+ regex: str = SettingsField("", title="Regex expression")
+ colorspace: str = SettingsField("", title="Colorspace")
class RegexInputsModel(BaseSettingsModel):
- inputs: list[ReadColorspaceRulesItems] = Field(
+ inputs: list[ReadColorspaceRulesItems] = SettingsField(
default_factory=list,
title="Inputs"
)
class ViewProcessModel(BaseSettingsModel):
- viewerProcess: str = Field(
+ viewerProcess: str = SettingsField(
title="Viewer Process Name"
)
class ImageIOConfigModel(BaseSettingsModel):
- override_global_config: bool = Field(
+ override_global_config: bool = SettingsField(
False,
title="Override global OCIO config"
)
- filepath: list[str] = Field(
+ filepath: list[str] = SettingsField(
default_factory=list,
title="Config path"
)
class ImageIOFileRuleModel(BaseSettingsModel):
- name: str = Field("", title="Rule name")
- pattern: str = Field("", title="Regex pattern")
- colorspace: str = Field("", title="Colorspace name")
- ext: str = Field("", title="File extension")
+ name: str = SettingsField("", title="Rule name")
+ pattern: str = SettingsField("", title="Regex pattern")
+ colorspace: str = SettingsField("", title="Colorspace name")
+ ext: str = SettingsField("", title="File extension")
class ImageIOFileRulesModel(BaseSettingsModel):
- activate_host_rules: bool = Field(False)
- rules: list[ImageIOFileRuleModel] = Field(
+ activate_host_rules: bool = SettingsField(False)
+ rules: list[ImageIOFileRuleModel] = SettingsField(
default_factory=list,
title="Rules"
)
@@ -162,17 +163,17 @@ class ImageIOSettings(BaseSettingsModel):
now: nuke/imageio/viewer/viewerProcess
future: nuke/imageio/viewer
"""
- activate_host_color_management: bool = Field(
+ activate_host_color_management: bool = SettingsField(
True, title="Enable Color Management")
- ocio_config: ImageIOConfigModel = Field(
+ ocio_config: ImageIOConfigModel = SettingsField(
default_factory=ImageIOConfigModel,
title="OCIO config"
)
- file_rules: ImageIOFileRulesModel = Field(
+ file_rules: ImageIOFileRulesModel = SettingsField(
default_factory=ImageIOFileRulesModel,
title="File Rules"
)
- viewer: ViewProcessModel = Field(
+ viewer: ViewProcessModel = SettingsField(
default_factory=ViewProcessModel,
title="Viewer",
description="""Viewer profile is used during
@@ -185,19 +186,19 @@ class ImageIOSettings(BaseSettingsModel):
now: nuke/imageio/baking/viewerProcess
future: nuke/imageio/baking
"""
- baking: ViewProcessModel = Field(
+ baking: ViewProcessModel = SettingsField(
default_factory=ViewProcessModel,
title="Baking",
description="""Baking profile is used during
publishing baked colorspace data at knob viewerProcess"""
)
- workfile: WorkfileColorspaceSettings = Field(
+ workfile: WorkfileColorspaceSettings = SettingsField(
default_factory=WorkfileColorspaceSettings,
title="Workfile"
)
- nodes: NodesSetting = Field(
+ nodes: NodesSetting = SettingsField(
default_factory=NodesSetting,
title="Nodes"
)
@@ -205,7 +206,7 @@ class ImageIOSettings(BaseSettingsModel):
- [ ] no need for `inputs` middle part. It can stay
directly on `regex_inputs`
"""
- regex_inputs: RegexInputsModel = Field(
+ regex_inputs: RegexInputsModel = SettingsField(
default_factory=RegexInputsModel,
title="Assign colorspace to read nodes via rules"
)
diff --git a/server_addon/nuke/server/settings/loader_plugins.py b/server_addon/nuke/server/settings/loader_plugins.py
index 51e2c2149b4..a5c3315fd49 100644
--- a/server_addon/nuke/server/settings/loader_plugins.py
+++ b/server_addon/nuke/server/settings/loader_plugins.py
@@ -1,54 +1,53 @@
-from pydantic import Field
-from ayon_server.settings import BaseSettingsModel
+from ayon_server.settings import BaseSettingsModel, SettingsField
class LoadImageModel(BaseSettingsModel):
- enabled: bool = Field(
+ enabled: bool = SettingsField(
title="Enabled"
)
- representations_include: list[str] = Field(
+ representations_include: list[str] = SettingsField(
default_factory=list,
title="Include representations"
)
- node_name_template: str = Field(
+ node_name_template: str = SettingsField(
title="Read node name template"
)
class LoadClipOptionsModel(BaseSettingsModel):
- start_at_workfile: bool = Field(
+ start_at_workfile: bool = SettingsField(
title="Start at workfile's start frame"
)
- add_retime: bool = Field(
+ add_retime: bool = SettingsField(
title="Add retime"
)
class LoadClipModel(BaseSettingsModel):
- enabled: bool = Field(
+ enabled: bool = SettingsField(
title="Enabled"
)
- representations_include: list[str] = Field(
+ representations_include: list[str] = SettingsField(
default_factory=list,
title="Include representations"
)
- node_name_template: str = Field(
+ node_name_template: str = SettingsField(
title="Read node name template"
)
- options_defaults: LoadClipOptionsModel = Field(
+ options_defaults: LoadClipOptionsModel = SettingsField(
default_factory=LoadClipOptionsModel,
title="Loader option defaults"
)
class LoaderPuginsModel(BaseSettingsModel):
- LoadImage: LoadImageModel = Field(
+ LoadImage: LoadImageModel = SettingsField(
default_factory=LoadImageModel,
title="Load Image"
)
- LoadClip: LoadClipModel = Field(
+ LoadClip: LoadClipModel = SettingsField(
default_factory=LoadClipModel,
title="Load Clip"
)
diff --git a/server_addon/nuke/server/settings/main.py b/server_addon/nuke/server/settings/main.py
index b6729e7c2f4..2b269f1fce8 100644
--- a/server_addon/nuke/server/settings/main.py
+++ b/server_addon/nuke/server/settings/main.py
@@ -1,7 +1,6 @@
-from pydantic import validator, Field
-
from ayon_server.settings import (
BaseSettingsModel,
+ SettingsField,
ensure_unique_names
)
@@ -49,50 +48,50 @@
class NukeSettings(BaseSettingsModel):
"""Nuke addon settings."""
- general: GeneralSettings = Field(
+ general: GeneralSettings = SettingsField(
default_factory=GeneralSettings,
title="General",
)
- imageio: ImageIOSettings = Field(
+ imageio: ImageIOSettings = SettingsField(
default_factory=ImageIOSettings,
title="Color Management (imageio)",
)
- dirmap: DirmapSettings = Field(
+ dirmap: DirmapSettings = SettingsField(
default_factory=DirmapSettings,
title="Nuke Directory Mapping",
)
- scriptsmenu: ScriptsmenuSettings = Field(
+ scriptsmenu: ScriptsmenuSettings = SettingsField(
default_factory=ScriptsmenuSettings,
title="Scripts Menu Definition",
)
- gizmo: list[GizmoItem] = Field(
+ gizmo: list[GizmoItem] = SettingsField(
default_factory=list, title="Gizmo Menu")
- create: CreatorPluginsSettings = Field(
+ create: CreatorPluginsSettings = SettingsField(
default_factory=CreatorPluginsSettings,
title="Creator Plugins",
)
- publish: PublishPuginsModel = Field(
+ publish: PublishPuginsModel = SettingsField(
default_factory=PublishPuginsModel,
title="Publish Plugins",
)
- load: LoaderPuginsModel = Field(
+ load: LoaderPuginsModel = SettingsField(
default_factory=LoaderPuginsModel,
title="Loader Plugins",
)
- workfile_builder: WorkfileBuilderModel = Field(
+ workfile_builder: WorkfileBuilderModel = SettingsField(
default_factory=WorkfileBuilderModel,
title="Workfile Builder",
)
- templated_workfile_build: TemplatedWorkfileBuildModel = Field(
+ templated_workfile_build: TemplatedWorkfileBuildModel = SettingsField(
title="Templated Workfile Build",
default_factory=TemplatedWorkfileBuildModel
)
diff --git a/server_addon/nuke/server/settings/publish_plugins.py b/server_addon/nuke/server/settings/publish_plugins.py
index 84457d24841..02ee9b3bab3 100644
--- a/server_addon/nuke/server/settings/publish_plugins.py
+++ b/server_addon/nuke/server/settings/publish_plugins.py
@@ -1,6 +1,7 @@
-from pydantic import validator, Field
+from pydantic import validator
from ayon_server.settings import (
BaseSettingsModel,
+ SettingsField,
ensure_unique_names,
task_types_enum
)
@@ -28,18 +29,18 @@ def nuke_product_types_enum():
class NodeModel(BaseSettingsModel):
- name: str = Field(
+ name: str = SettingsField(
title="Node name"
)
- nodeclass: str = Field(
+ nodeclass: str = SettingsField(
"",
title="Node class"
)
- dependent: str = Field(
+ dependent: str = SettingsField(
"",
title="Incoming dependency"
)
- knobs: list[KnobModel] = Field(
+ knobs: list[KnobModel] = SettingsField(
default_factory=list,
title="Knobs",
)
@@ -52,7 +53,7 @@ def ensure_unique_names(cls, value):
class CollectInstanceDataModel(BaseSettingsModel):
- sync_workfile_version_on_product_types: list[str] = Field(
+ sync_workfile_version_on_product_types: list[str] = SettingsField(
default_factory=list,
enum_resolver=nuke_product_types_enum,
title="Sync workfile versions for familes"
@@ -60,14 +61,14 @@ class CollectInstanceDataModel(BaseSettingsModel):
class OptionalPluginModel(BaseSettingsModel):
- enabled: bool = Field(True)
- optional: bool = Field(title="Optional")
- active: bool = Field(title="Active")
+ enabled: bool = SettingsField(True)
+ optional: bool = SettingsField(title="Optional")
+ active: bool = SettingsField(title="Active")
class ValidateKnobsModel(BaseSettingsModel):
- enabled: bool = Field(title="Enabled")
- knobs: str = Field(
+ enabled: bool = SettingsField(title="Enabled")
+ knobs: str = SettingsField(
"{}",
title="Knobs",
widget="textarea",
@@ -79,31 +80,31 @@ def validate_json(cls, value):
class ExtractReviewDataModel(BaseSettingsModel):
- enabled: bool = Field(title="Enabled")
+ enabled: bool = SettingsField(title="Enabled")
class ExtractReviewDataLutModel(BaseSettingsModel):
- enabled: bool = Field(title="Enabled")
+ enabled: bool = SettingsField(title="Enabled")
class BakingStreamFilterModel(BaseSettingsModel):
- task_types: list[str] = Field(
+ task_types: list[str] = SettingsField(
default_factory=list,
title="Task types",
enum_resolver=task_types_enum
)
- product_types: list[str] = Field(
+ product_types: list[str] = SettingsField(
default_factory=list,
enum_resolver=nuke_render_publish_types_enum,
title="Sync workfile versions for familes"
)
- product_names: list[str] = Field(
+ product_names: list[str] = SettingsField(
default_factory=list, title="Product names")
class ReformatNodesRepositionNodes(BaseSettingsModel):
- node_class: str = Field(title="Node class")
- knobs: list[KnobModel] = Field(
+ node_class: str = SettingsField(title="Node class")
+ knobs: list[KnobModel] = SettingsField(
default_factory=list,
title="Node knobs")
@@ -115,41 +116,41 @@ class ReformatNodesConfigModel(BaseSettingsModel):
Order of reformat nodes is important. First reformat node will
be applied first and last reformat node will be applied last.
"""
- enabled: bool = Field(False)
- reposition_nodes: list[ReformatNodesRepositionNodes] = Field(
+ enabled: bool = SettingsField(False)
+ reposition_nodes: list[ReformatNodesRepositionNodes] = SettingsField(
default_factory=list,
title="Reposition knobs"
)
class IntermediateOutputModel(BaseSettingsModel):
- name: str = Field(title="Output name")
- filter: BakingStreamFilterModel = Field(
+ name: str = SettingsField(title="Output name")
+ filter: BakingStreamFilterModel = SettingsField(
title="Filter", default_factory=BakingStreamFilterModel)
- read_raw: bool = Field(
+ read_raw: bool = SettingsField(
False,
title="Read raw switch"
)
- viewer_process_override: str = Field(
+ viewer_process_override: str = SettingsField(
"",
title="Viewer process override"
)
- bake_viewer_process: bool = Field(
+ bake_viewer_process: bool = SettingsField(
True,
title="Bake viewer process"
)
- bake_viewer_input_process: bool = Field(
+ bake_viewer_input_process: bool = SettingsField(
True,
title="Bake viewer input process node (LUT)"
)
- reformat_nodes_config: ReformatNodesConfigModel = Field(
+ reformat_nodes_config: ReformatNodesConfigModel = SettingsField(
default_factory=ReformatNodesConfigModel,
title="Reformat Nodes")
- extension: str = Field(
+ extension: str = SettingsField(
"mov",
title="File extension"
)
- add_custom_tags: list[str] = Field(
+ add_custom_tags: list[str] = SettingsField(
title="Custom tags", default_factory=list)
@@ -157,123 +158,125 @@ class ExtractReviewDataMovModel(BaseSettingsModel):
"""[deprecated] use Extract Review Data Baking
Streams instead.
"""
- enabled: bool = Field(title="Enabled")
- viewer_lut_raw: bool = Field(title="Viewer lut raw")
- outputs: list[IntermediateOutputModel] = Field(
+ enabled: bool = SettingsField(title="Enabled")
+ viewer_lut_raw: bool = SettingsField(title="Viewer lut raw")
+ outputs: list[IntermediateOutputModel] = SettingsField(
default_factory=list,
title="Baking streams"
)
class ExtractReviewIntermediatesModel(BaseSettingsModel):
- enabled: bool = Field(title="Enabled")
- viewer_lut_raw: bool = Field(title="Viewer lut raw")
- outputs: list[IntermediateOutputModel] = Field(
+ enabled: bool = SettingsField(title="Enabled")
+ viewer_lut_raw: bool = SettingsField(title="Viewer lut raw")
+ outputs: list[IntermediateOutputModel] = SettingsField(
default_factory=list,
title="Baking streams"
)
class FSubmissionNoteModel(BaseSettingsModel):
- enabled: bool = Field(title="enabled")
- template: str = Field(title="Template")
+ enabled: bool = SettingsField(title="enabled")
+ template: str = SettingsField(title="Template")
class FSubmistingForModel(BaseSettingsModel):
- enabled: bool = Field(title="enabled")
- template: str = Field(title="Template")
+ enabled: bool = SettingsField(title="enabled")
+ template: str = SettingsField(title="Template")
class FVFXScopeOfWorkModel(BaseSettingsModel):
- enabled: bool = Field(title="enabled")
- template: str = Field(title="Template")
+ enabled: bool = SettingsField(title="enabled")
+ template: str = SettingsField(title="Template")
class ExctractSlateFrameParamModel(BaseSettingsModel):
- f_submission_note: FSubmissionNoteModel = Field(
+ f_submission_note: FSubmissionNoteModel = SettingsField(
title="f_submission_note",
default_factory=FSubmissionNoteModel
)
- f_submitting_for: FSubmistingForModel = Field(
+ f_submitting_for: FSubmistingForModel = SettingsField(
title="f_submitting_for",
default_factory=FSubmistingForModel
)
- f_vfx_scope_of_work: FVFXScopeOfWorkModel = Field(
+ f_vfx_scope_of_work: FVFXScopeOfWorkModel = SettingsField(
title="f_vfx_scope_of_work",
default_factory=FVFXScopeOfWorkModel
)
class ExtractSlateFrameModel(BaseSettingsModel):
- viewer_lut_raw: bool = Field(title="Viewer lut raw")
- key_value_mapping: ExctractSlateFrameParamModel = Field(
+ viewer_lut_raw: bool = SettingsField(title="Viewer lut raw")
+ key_value_mapping: ExctractSlateFrameParamModel = SettingsField(
title="Key value mapping",
default_factory=ExctractSlateFrameParamModel
)
class IncrementScriptVersionModel(BaseSettingsModel):
- enabled: bool = Field(title="Enabled")
- optional: bool = Field(title="Optional")
- active: bool = Field(title="Active")
+ enabled: bool = SettingsField(title="Enabled")
+ optional: bool = SettingsField(title="Optional")
+ active: bool = SettingsField(title="Active")
class PublishPuginsModel(BaseSettingsModel):
- CollectInstanceData: CollectInstanceDataModel = Field(
+ CollectInstanceData: CollectInstanceDataModel = SettingsField(
title="Collect Instance Version",
default_factory=CollectInstanceDataModel,
section="Collectors"
)
- ValidateCorrectAssetContext: OptionalPluginModel = Field(
+ ValidateCorrectAssetContext: OptionalPluginModel = SettingsField(
title="Validate Correct Folder Name",
default_factory=OptionalPluginModel,
section="Validators"
)
- ValidateContainers: OptionalPluginModel = Field(
+ ValidateContainers: OptionalPluginModel = SettingsField(
title="Validate Containers",
default_factory=OptionalPluginModel
)
- ValidateKnobs: ValidateKnobsModel = Field(
+ ValidateKnobs: ValidateKnobsModel = SettingsField(
title="Validate Knobs",
default_factory=ValidateKnobsModel
)
- ValidateOutputResolution: OptionalPluginModel = Field(
+ ValidateOutputResolution: OptionalPluginModel = SettingsField(
title="Validate Output Resolution",
default_factory=OptionalPluginModel
)
- ValidateGizmo: OptionalPluginModel = Field(
+ ValidateGizmo: OptionalPluginModel = SettingsField(
title="Validate Gizmo",
default_factory=OptionalPluginModel
)
- ValidateBackdrop: OptionalPluginModel = Field(
+ ValidateBackdrop: OptionalPluginModel = SettingsField(
title="Validate Backdrop",
default_factory=OptionalPluginModel
)
- ValidateScriptAttributes: OptionalPluginModel = Field(
+ ValidateScriptAttributes: OptionalPluginModel = SettingsField(
title="Validate workfile attributes",
default_factory=OptionalPluginModel
)
- ExtractReviewData: ExtractReviewDataModel = Field(
+ ExtractReviewData: ExtractReviewDataModel = SettingsField(
title="Extract Review Data",
default_factory=ExtractReviewDataModel
)
- ExtractReviewDataLut: ExtractReviewDataLutModel = Field(
+ ExtractReviewDataLut: ExtractReviewDataLutModel = SettingsField(
title="Extract Review Data Lut",
default_factory=ExtractReviewDataLutModel
)
- ExtractReviewDataMov: ExtractReviewDataMovModel = Field(
+ ExtractReviewDataMov: ExtractReviewDataMovModel = SettingsField(
title="Extract Review Data Mov",
default_factory=ExtractReviewDataMovModel
)
- ExtractReviewIntermediates: ExtractReviewIntermediatesModel = Field(
- title="Extract Review Intermediates",
- default_factory=ExtractReviewIntermediatesModel
+ ExtractReviewIntermediates: ExtractReviewIntermediatesModel = (
+ SettingsField(
+ title="Extract Review Intermediates",
+ default_factory=ExtractReviewIntermediatesModel
+ )
)
- ExtractSlateFrame: ExtractSlateFrameModel = Field(
+ ExtractSlateFrame: ExtractSlateFrameModel = SettingsField(
title="Extract Slate Frame",
default_factory=ExtractSlateFrameModel
)
- IncrementScriptVersion: IncrementScriptVersionModel = Field(
+ IncrementScriptVersion: IncrementScriptVersionModel = SettingsField(
title="Increment Workfile Version",
default_factory=IncrementScriptVersionModel,
section="Integrators"
diff --git a/server_addon/nuke/server/settings/scriptsmenu.py b/server_addon/nuke/server/settings/scriptsmenu.py
index 3dd6765920e..7ffd6841d52 100644
--- a/server_addon/nuke/server/settings/scriptsmenu.py
+++ b/server_addon/nuke/server/settings/scriptsmenu.py
@@ -1,24 +1,23 @@
-from pydantic import Field
-from ayon_server.settings import BaseSettingsModel
+from ayon_server.settings import BaseSettingsModel, SettingsField
class ScriptsmenuSubmodel(BaseSettingsModel):
"""Item Definition"""
_isGroup = True
- type: str = Field(title="Type")
- command: str = Field(title="Command")
- sourcetype: str = Field(title="Source Type")
- title: str = Field(title="Title")
- tooltip: str = Field(title="Tooltip")
+ type: str = SettingsField(title="Type")
+ command: str = SettingsField(title="Command")
+ sourcetype: str = SettingsField(title="Source Type")
+ title: str = SettingsField(title="Title")
+ tooltip: str = SettingsField(title="Tooltip")
class ScriptsmenuSettings(BaseSettingsModel):
"""Nuke script menu project settings."""
_isGroup = True
- name: str = Field(title="Menu Name")
- definition: list[ScriptsmenuSubmodel] = Field(
+ name: str = SettingsField(title="Menu Name")
+ definition: list[ScriptsmenuSubmodel] = SettingsField(
default_factory=list,
title="Definition",
description="Scriptmenu Items Definition"
diff --git a/server_addon/nuke/server/settings/templated_workfile_build.py b/server_addon/nuke/server/settings/templated_workfile_build.py
index 0899be841ec..12ebedf5700 100644
--- a/server_addon/nuke/server/settings/templated_workfile_build.py
+++ b/server_addon/nuke/server/settings/templated_workfile_build.py
@@ -1,27 +1,27 @@
-from pydantic import Field
from ayon_server.settings import (
BaseSettingsModel,
+ SettingsField,
task_types_enum,
)
class TemplatedWorkfileProfileModel(BaseSettingsModel):
- task_types: list[str] = Field(
+ task_types: list[str] = SettingsField(
default_factory=list,
title="Task types",
enum_resolver=task_types_enum
)
- task_names: list[str] = Field(
+ task_names: list[str] = SettingsField(
default_factory=list,
title="Task names"
)
- path: str = Field(
+ path: str = SettingsField(
title="Path to template"
)
- keep_placeholder: bool = Field(
+ keep_placeholder: bool = SettingsField(
False,
title="Keep placeholders")
- create_first_version: bool = Field(
+ create_first_version: bool = SettingsField(
True,
title="Create first version"
)
@@ -29,6 +29,6 @@ class TemplatedWorkfileProfileModel(BaseSettingsModel):
class TemplatedWorkfileBuildModel(BaseSettingsModel):
"""Settings for templated workfile builder."""
- profiles: list[TemplatedWorkfileProfileModel] = Field(
+ profiles: list[TemplatedWorkfileProfileModel] = SettingsField(
default_factory=list
)
diff --git a/server_addon/nuke/server/settings/workfile_builder.py b/server_addon/nuke/server/settings/workfile_builder.py
index 3ae3b08788e..97961655f30 100644
--- a/server_addon/nuke/server/settings/workfile_builder.py
+++ b/server_addon/nuke/server/settings/workfile_builder.py
@@ -1,57 +1,57 @@
-from pydantic import Field
from ayon_server.settings import (
BaseSettingsModel,
+ SettingsField,
task_types_enum,
MultiplatformPathModel,
)
class CustomTemplateModel(BaseSettingsModel):
- task_types: list[str] = Field(
+ task_types: list[str] = SettingsField(
default_factory=list,
title="Task types",
enum_resolver=task_types_enum
)
- path: MultiplatformPathModel = Field(
+ path: MultiplatformPathModel = SettingsField(
default_factory=MultiplatformPathModel,
title="Gizmo Directory Path"
)
class BuilderProfileItemModel(BaseSettingsModel):
- product_name_filters: list[str] = Field(
+ product_name_filters: list[str] = SettingsField(
default_factory=list,
title="Product name"
)
- product_types: list[str] = Field(
+ product_types: list[str] = SettingsField(
default_factory=list,
title="Product types"
)
- repre_names: list[str] = Field(
+ repre_names: list[str] = SettingsField(
default_factory=list,
title="Representations"
)
- loaders: list[str] = Field(
+ loaders: list[str] = SettingsField(
default_factory=list,
title="Loader plugins"
)
class BuilderProfileModel(BaseSettingsModel):
- task_types: list[str] = Field(
+ task_types: list[str] = SettingsField(
default_factory=list,
title="Task types",
enum_resolver=task_types_enum
)
- tasks: list[str] = Field(
+ tasks: list[str] = SettingsField(
default_factory=list,
title="Task names"
)
- current_context: list[BuilderProfileItemModel] = Field(
+ current_context: list[BuilderProfileItemModel] = SettingsField(
default_factory=list,
title="Current context"
)
- linked_assets: list[BuilderProfileItemModel] = Field(
+ linked_assets: list[BuilderProfileItemModel] = SettingsField(
default_factory=list,
title="Linked assets/shots"
)
@@ -60,17 +60,17 @@ class BuilderProfileModel(BaseSettingsModel):
class WorkfileBuilderModel(BaseSettingsModel):
"""[deprecated] use Template Workfile Build Settings instead.
"""
- create_first_version: bool = Field(
+ create_first_version: bool = SettingsField(
title="Create first workfile")
- custom_templates: list[CustomTemplateModel] = Field(
+ custom_templates: list[CustomTemplateModel] = SettingsField(
default_factory=list,
title="Custom templates"
)
- builder_on_start: bool = Field(
+ builder_on_start: bool = SettingsField(
default=False,
title="Run Builder at first workfile"
)
- profiles: list[BuilderProfileModel] = Field(
+ profiles: list[BuilderProfileModel] = SettingsField(
default_factory=list,
title="Builder profiles"
)
diff --git a/server_addon/photoshop/server/settings/creator_plugins.py b/server_addon/photoshop/server/settings/creator_plugins.py
index 2fe63a7e3a9..8acc2138664 100644
--- a/server_addon/photoshop/server/settings/creator_plugins.py
+++ b/server_addon/photoshop/server/settings/creator_plugins.py
@@ -1,51 +1,49 @@
-from pydantic import Field
-
-from ayon_server.settings import BaseSettingsModel
+from ayon_server.settings import BaseSettingsModel, SettingsField
class CreateImagePluginModel(BaseSettingsModel):
- enabled: bool = Field(True, title="Enabled")
- active_on_create: bool = Field(True, title="Active by default")
- mark_for_review: bool = Field(False, title="Review by default")
- default_variants: list[str] = Field(
+ enabled: bool = SettingsField(True, title="Enabled")
+ active_on_create: bool = SettingsField(True, title="Active by default")
+ mark_for_review: bool = SettingsField(False, title="Review by default")
+ default_variants: list[str] = SettingsField(
default_factory=list,
title="Default Variants"
)
class AutoImageCreatorPluginModel(BaseSettingsModel):
- enabled: bool = Field(False, title="Enabled")
- active_on_create: bool = Field(True, title="Active by default")
- mark_for_review: bool = Field(False, title="Review by default")
- default_variant: str = Field("", title="Default Variants")
+ enabled: bool = SettingsField(False, title="Enabled")
+ active_on_create: bool = SettingsField(True, title="Active by default")
+ mark_for_review: bool = SettingsField(False, title="Review by default")
+ default_variant: str = SettingsField("", title="Default Variants")
class CreateReviewPlugin(BaseSettingsModel):
- enabled: bool = Field(True, title="Enabled")
- active_on_create: bool = Field(True, title="Active by default")
- default_variant: str = Field("", title="Default Variants")
+ enabled: bool = SettingsField(True, title="Enabled")
+ active_on_create: bool = SettingsField(True, title="Active by default")
+ default_variant: str = SettingsField("", title="Default Variants")
class CreateWorkfilelugin(BaseSettingsModel):
- enabled: bool = Field(True, title="Enabled")
- active_on_create: bool = Field(True, title="Active by default")
- default_variant: str = Field("", title="Default Variants")
+ enabled: bool = SettingsField(True, title="Enabled")
+ active_on_create: bool = SettingsField(True, title="Active by default")
+ default_variant: str = SettingsField("", title="Default Variants")
class PhotoshopCreatorPlugins(BaseSettingsModel):
- ImageCreator: CreateImagePluginModel = Field(
+ ImageCreator: CreateImagePluginModel = SettingsField(
title="Create Image",
default_factory=CreateImagePluginModel,
)
- AutoImageCreator: AutoImageCreatorPluginModel = Field(
+ AutoImageCreator: AutoImageCreatorPluginModel = SettingsField(
title="Create Flatten Image",
default_factory=AutoImageCreatorPluginModel,
)
- ReviewCreator: CreateReviewPlugin = Field(
+ ReviewCreator: CreateReviewPlugin = SettingsField(
title="Create Review",
default_factory=CreateReviewPlugin,
)
- WorkfileCreator: CreateWorkfilelugin = Field(
+ WorkfileCreator: CreateWorkfilelugin = SettingsField(
title="Create Workfile",
default_factory=CreateWorkfilelugin,
)
diff --git a/server_addon/photoshop/server/settings/imageio.py b/server_addon/photoshop/server/settings/imageio.py
index 56b7f2fa328..9178497c6cc 100644
--- a/server_addon/photoshop/server/settings/imageio.py
+++ b/server_addon/photoshop/server/settings/imageio.py
@@ -1,29 +1,29 @@
-from pydantic import Field, validator
-from ayon_server.settings import BaseSettingsModel
+from pydantic import validator
+from ayon_server.settings import BaseSettingsModel, SettingsField
from ayon_server.settings.validators import ensure_unique_names
class ImageIOConfigModel(BaseSettingsModel):
- override_global_config: bool = Field(
+ override_global_config: bool = SettingsField(
False,
title="Override global OCIO config"
)
- filepath: list[str] = Field(
+ filepath: list[str] = SettingsField(
default_factory=list,
title="Config path"
)
class ImageIOFileRuleModel(BaseSettingsModel):
- name: str = Field("", title="Rule name")
- pattern: str = Field("", title="Regex pattern")
- colorspace: str = Field("", title="Colorspace name")
- ext: str = Field("", title="File extension")
+ name: str = SettingsField("", title="Rule name")
+ pattern: str = SettingsField("", title="Regex pattern")
+ colorspace: str = SettingsField("", title="Colorspace name")
+ ext: str = SettingsField("", title="File extension")
class ImageIOFileRulesModel(BaseSettingsModel):
- activate_host_rules: bool = Field(False)
- rules: list[ImageIOFileRuleModel] = Field(
+ activate_host_rules: bool = SettingsField(False)
+ rules: list[ImageIOFileRuleModel] = SettingsField(
default_factory=list,
title="Rules"
)
@@ -35,30 +35,30 @@ def validate_unique_outputs(cls, value):
class ImageIORemappingRulesModel(BaseSettingsModel):
- host_native_name: str = Field(
+ host_native_name: str = SettingsField(
title="Application native colorspace name"
)
- ocio_name: str = Field(title="OCIO colorspace name")
+ ocio_name: str = SettingsField(title="OCIO colorspace name")
class ImageIORemappingModel(BaseSettingsModel):
- rules: list[ImageIORemappingRulesModel] = Field(
+ rules: list[ImageIORemappingRulesModel] = SettingsField(
default_factory=list)
class PhotoshopImageIOModel(BaseSettingsModel):
- activate_host_color_management: bool = Field(
+ activate_host_color_management: bool = SettingsField(
True, title="Enable Color Management"
)
- remapping: ImageIORemappingModel = Field(
+ remapping: ImageIORemappingModel = SettingsField(
title="Remapping colorspace names",
default_factory=ImageIORemappingModel
)
- ocio_config: ImageIOConfigModel = Field(
+ ocio_config: ImageIOConfigModel = SettingsField(
default_factory=ImageIOConfigModel,
title="OCIO config"
)
- file_rules: ImageIOFileRulesModel = Field(
+ file_rules: ImageIOFileRulesModel = SettingsField(
default_factory=ImageIOFileRulesModel,
title="File Rules"
)
diff --git a/server_addon/photoshop/server/settings/main.py b/server_addon/photoshop/server/settings/main.py
index ae7705b3dbb..b6474d6d296 100644
--- a/server_addon/photoshop/server/settings/main.py
+++ b/server_addon/photoshop/server/settings/main.py
@@ -1,5 +1,4 @@
-from pydantic import Field
-from ayon_server.settings import BaseSettingsModel
+from ayon_server.settings import BaseSettingsModel, SettingsField
from .imageio import PhotoshopImageIOModel
from .creator_plugins import PhotoshopCreatorPlugins, DEFAULT_CREATE_SETTINGS
@@ -10,22 +9,22 @@
class PhotoshopSettings(BaseSettingsModel):
"""Photoshop Project Settings."""
- imageio: PhotoshopImageIOModel = Field(
+ imageio: PhotoshopImageIOModel = SettingsField(
default_factory=PhotoshopImageIOModel,
title="OCIO config"
)
- create: PhotoshopCreatorPlugins = Field(
+ create: PhotoshopCreatorPlugins = SettingsField(
default_factory=PhotoshopCreatorPlugins,
title="Creator plugins"
)
- publish: PhotoshopPublishPlugins = Field(
+ publish: PhotoshopPublishPlugins = SettingsField(
default_factory=PhotoshopPublishPlugins,
title="Publish plugins"
)
- workfile_builder: WorkfileBuilderPlugin = Field(
+ workfile_builder: WorkfileBuilderPlugin = SettingsField(
default_factory=WorkfileBuilderPlugin,
title="Workfile Builder"
)
diff --git a/server_addon/photoshop/server/settings/publish_plugins.py b/server_addon/photoshop/server/settings/publish_plugins.py
index 21e7d670f0f..c4a392d4907 100644
--- a/server_addon/photoshop/server/settings/publish_plugins.py
+++ b/server_addon/photoshop/server/settings/publish_plugins.py
@@ -1,6 +1,4 @@
-from pydantic import Field
-
-from ayon_server.settings import BaseSettingsModel
+from ayon_server.settings import BaseSettingsModel, SettingsField
create_flatten_image_enum = [
@@ -22,30 +20,30 @@
class ColorCodeMappings(BaseSettingsModel):
- color_code: list[str] = Field(
+ color_code: list[str] = SettingsField(
title="Color codes for layers",
default_factory=list,
enum_resolver=lambda: color_code_enum,
)
- layer_name_regex: list[str] = Field(
+ layer_name_regex: list[str] = SettingsField(
default_factory=list,
title="Layer name regex"
)
- product_type: str = Field(
+ product_type: str = SettingsField(
"",
title="Resulting product type"
)
- product_name_template: str = Field(
+ product_name_template: str = SettingsField(
"",
title="Product name template"
)
class ExtractedOptions(BaseSettingsModel):
- tags: list[str] = Field(
+ tags: list[str] = SettingsField(
title="Tags",
default_factory=list
)
@@ -57,19 +55,19 @@ class CollectColorCodedInstancesPlugin(BaseSettingsModel):
instances.
(Applicable only for remote publishing!)"""
- enabled: bool = Field(True, title="Enabled")
- create_flatten_image: str = Field(
+ enabled: bool = SettingsField(True, title="Enabled")
+ create_flatten_image: str = SettingsField(
"",
title="Create flatten image",
enum_resolver=lambda: create_flatten_image_enum,
)
- flatten_product_type_template: str = Field(
+ flatten_product_type_template: str = SettingsField(
"",
title="Subset template for flatten image"
)
- color_code_mapping: list[ColorCodeMappings] = Field(
+ color_code_mapping: list[ColorCodeMappings] = SettingsField(
title="Color code mappings",
default_factory=ColorCodeMappings,
)
@@ -77,30 +75,30 @@ class CollectColorCodedInstancesPlugin(BaseSettingsModel):
class CollectReviewPlugin(BaseSettingsModel):
"""Should review product be created"""
- enabled: bool = Field(True, title="Enabled")
+ enabled: bool = SettingsField(True, title="Enabled")
class CollectVersionPlugin(BaseSettingsModel):
"""Synchronize version for image and review instances by workfile version""" # noqa
- enabled: bool = Field(True, title="Enabled")
+ enabled: bool = SettingsField(True, title="Enabled")
class ValidateContainersPlugin(BaseSettingsModel):
"""Check that workfile contains latest version of loaded items""" # noqa
_isGroup = True
enabled: bool = True
- optional: bool = Field(False, title="Optional")
- active: bool = Field(True, title="Active")
+ optional: bool = SettingsField(False, title="Optional")
+ active: bool = SettingsField(True, title="Active")
class ValidateNamingPlugin(BaseSettingsModel):
"""Validate naming of products and layers""" # noqa
- invalid_chars: str = Field(
+ invalid_chars: str = SettingsField(
'',
title="Regex pattern of invalid characters"
)
- replace_char: str = Field(
+ replace_char: str = SettingsField(
'',
title="Replacement character"
)
@@ -108,19 +106,19 @@ class ValidateNamingPlugin(BaseSettingsModel):
class ExtractImagePlugin(BaseSettingsModel):
"""Currently only jpg and png are supported"""
- formats: list[str] = Field(
+ formats: list[str] = SettingsField(
title="Extract Formats",
default_factory=list,
)
class ExtractReviewPlugin(BaseSettingsModel):
- make_image_sequence: bool = Field(
+ make_image_sequence: bool = SettingsField(
False,
title="Make an image sequence instead of flatten image"
)
- max_downscale_size: int = Field(
+ max_downscale_size: int = SettingsField(
8192,
title="Maximum size of sources for review",
description="FFMpeg can only handle limited resolution for creation of review and/or thumbnail", # noqa
@@ -128,48 +126,50 @@ class ExtractReviewPlugin(BaseSettingsModel):
le=16384, # less or equal
)
- jpg_options: ExtractedOptions = Field(
+ jpg_options: ExtractedOptions = SettingsField(
title="Extracted jpg Options",
default_factory=ExtractedOptions
)
- mov_options: ExtractedOptions = Field(
+ mov_options: ExtractedOptions = SettingsField(
title="Extracted mov Options",
default_factory=ExtractedOptions
)
class PhotoshopPublishPlugins(BaseSettingsModel):
- CollectColorCodedInstances: CollectColorCodedInstancesPlugin = Field(
- title="Collect Color Coded Instances",
- default_factory=CollectColorCodedInstancesPlugin,
+ CollectColorCodedInstances: CollectColorCodedInstancesPlugin = (
+ SettingsField(
+ title="Collect Color Coded Instances",
+ default_factory=CollectColorCodedInstancesPlugin,
+ )
)
- CollectReview: CollectReviewPlugin = Field(
+ CollectReview: CollectReviewPlugin = SettingsField(
title="Collect Review",
default_factory=CollectReviewPlugin,
)
- CollectVersion: CollectVersionPlugin = Field(
+ CollectVersion: CollectVersionPlugin = SettingsField(
title="Collect Version",
default_factory=CollectVersionPlugin,
)
- ValidateContainers: ValidateContainersPlugin = Field(
+ ValidateContainers: ValidateContainersPlugin = SettingsField(
title="Validate Containers",
default_factory=ValidateContainersPlugin,
)
- ValidateNaming: ValidateNamingPlugin = Field(
+ ValidateNaming: ValidateNamingPlugin = SettingsField(
title="Validate naming of products and layers",
default_factory=ValidateNamingPlugin,
)
- ExtractImage: ExtractImagePlugin = Field(
+ ExtractImage: ExtractImagePlugin = SettingsField(
title="Extract Image",
default_factory=ExtractImagePlugin,
)
- ExtractReview: ExtractReviewPlugin = Field(
+ ExtractReview: ExtractReviewPlugin = SettingsField(
title="Extract Review",
default_factory=ExtractReviewPlugin,
)
diff --git a/server_addon/photoshop/server/settings/workfile_builder.py b/server_addon/photoshop/server/settings/workfile_builder.py
index 68db05270dc..4b00b992727 100644
--- a/server_addon/photoshop/server/settings/workfile_builder.py
+++ b/server_addon/photoshop/server/settings/workfile_builder.py
@@ -1,16 +1,18 @@
-from pydantic import Field
-
-from ayon_server.settings import BaseSettingsModel, MultiplatformPathModel
+from ayon_server.settings import (
+ BaseSettingsModel,
+ SettingsField,
+ MultiplatformPathModel,
+)
class CustomBuilderTemplate(BaseSettingsModel):
_layout = "expanded"
- task_types: list[str] = Field(
+ task_types: list[str] = SettingsField(
default_factory=list,
title="Task types",
)
- path: MultiplatformPathModel = Field(
+ path: MultiplatformPathModel = SettingsField(
default_factory=MultiplatformPathModel,
title="Template path"
)
@@ -18,12 +20,12 @@ class CustomBuilderTemplate(BaseSettingsModel):
class WorkfileBuilderPlugin(BaseSettingsModel):
_title = "Workfile Builder"
- create_first_version: bool = Field(
+ create_first_version: bool = SettingsField(
False,
title="Create first workfile"
)
- custom_templates: list[CustomBuilderTemplate] = Field(
+ custom_templates: list[CustomBuilderTemplate] = SettingsField(
default_factory=CustomBuilderTemplate,
title="Template profiles"
)
diff --git a/server_addon/resolve/server/imageio.py b/server_addon/resolve/server/imageio.py
index c2bfcd40d04..9540f5d1d96 100644
--- a/server_addon/resolve/server/imageio.py
+++ b/server_addon/resolve/server/imageio.py
@@ -1,29 +1,29 @@
-from pydantic import Field, validator
-from ayon_server.settings import BaseSettingsModel
+from pydantic import validator
+from ayon_server.settings import BaseSettingsModel, SettingsField
from ayon_server.settings.validators import ensure_unique_names
class ImageIOConfigModel(BaseSettingsModel):
- override_global_config: bool = Field(
+ override_global_config: bool = SettingsField(
False,
title="Override global OCIO config"
)
- filepath: list[str] = Field(
+ filepath: list[str] = SettingsField(
default_factory=list,
title="Config path"
)
class ImageIOFileRuleModel(BaseSettingsModel):
- name: str = Field("", title="Rule name")
- pattern: str = Field("", title="Regex pattern")
- colorspace: str = Field("", title="Colorspace name")
- ext: str = Field("", title="File extension")
+ name: str = SettingsField("", title="Rule name")
+ pattern: str = SettingsField("", title="Regex pattern")
+ colorspace: str = SettingsField("", title="Colorspace name")
+ ext: str = SettingsField("", title="File extension")
class ImageIOFileRulesModel(BaseSettingsModel):
- activate_host_rules: bool = Field(False)
- rules: list[ImageIOFileRuleModel] = Field(
+ activate_host_rules: bool = SettingsField(False)
+ rules: list[ImageIOFileRuleModel] = SettingsField(
default_factory=list,
title="Rules"
)
@@ -35,30 +35,30 @@ def validate_unique_outputs(cls, value):
class ImageIORemappingRulesModel(BaseSettingsModel):
- host_native_name: str = Field(
+ host_native_name: str = SettingsField(
title="Application native colorspace name"
)
- ocio_name: str = Field(title="OCIO colorspace name")
+ ocio_name: str = SettingsField(title="OCIO colorspace name")
class ImageIORemappingModel(BaseSettingsModel):
- rules: list[ImageIORemappingRulesModel] = Field(
+ rules: list[ImageIORemappingRulesModel] = SettingsField(
default_factory=list)
class ResolveImageIOModel(BaseSettingsModel):
- activate_host_color_management: bool = Field(
+ activate_host_color_management: bool = SettingsField(
True, title="Enable Color Management"
)
- remapping: ImageIORemappingModel = Field(
+ remapping: ImageIORemappingModel = SettingsField(
title="Remapping colorspace names",
default_factory=ImageIORemappingModel
)
- ocio_config: ImageIOConfigModel = Field(
+ ocio_config: ImageIOConfigModel = SettingsField(
default_factory=ImageIOConfigModel,
title="OCIO config"
)
- file_rules: ImageIOFileRulesModel = Field(
+ file_rules: ImageIOFileRulesModel = SettingsField(
default_factory=ImageIOFileRulesModel,
title="File Rules"
)
diff --git a/server_addon/resolve/server/settings.py b/server_addon/resolve/server/settings.py
index 326f6bea1e0..dcdb2f1b27e 100644
--- a/server_addon/resolve/server/settings.py
+++ b/server_addon/resolve/server/settings.py
@@ -1,91 +1,90 @@
-from pydantic import Field
-from ayon_server.settings import BaseSettingsModel
+from ayon_server.settings import BaseSettingsModel, SettingsField
from .imageio import ResolveImageIOModel
class CreateShotClipModels(BaseSettingsModel):
- hierarchy: str = Field(
+ hierarchy: str = SettingsField(
"{folder}/{sequence}",
title="Shot parent hierarchy",
section="Shot Hierarchy And Rename Settings"
)
- clipRename: bool = Field(
+ clipRename: bool = SettingsField(
True,
title="Rename clips"
)
- clipName: str = Field(
+ clipName: str = SettingsField(
"{track}{sequence}{shot}",
title="Clip name template"
)
- countFrom: int = Field(
+ countFrom: int = SettingsField(
10,
title="Count sequence from"
)
- countSteps: int = Field(
+ countSteps: int = SettingsField(
10,
title="Stepping number"
)
- folder: str = Field(
+ folder: str = SettingsField(
"shots",
title="{folder}",
section="Shot Template Keywords"
)
- episode: str = Field(
+ episode: str = SettingsField(
"ep01",
title="{episode}"
)
- sequence: str = Field(
+ sequence: str = SettingsField(
"sq01",
title="{sequence}"
)
- track: str = Field(
+ track: str = SettingsField(
"{_track_}",
title="{track}"
)
- shot: str = Field(
+ shot: str = SettingsField(
"sh###",
title="{shot}"
)
- vSyncOn: bool = Field(
+ vSyncOn: bool = SettingsField(
False,
title="Enable Vertical Sync",
section="Vertical Synchronization Of Attributes"
)
- workfileFrameStart: int = Field(
+ workfileFrameStart: int = SettingsField(
1001,
title="Workfiles Start Frame",
section="Shot Attributes"
)
- handleStart: int = Field(
+ handleStart: int = SettingsField(
10,
title="Handle start (head)"
)
- handleEnd: int = Field(
+ handleEnd: int = SettingsField(
10,
title="Handle end (tail)"
)
class CreatorPuginsModel(BaseSettingsModel):
- CreateShotClip: CreateShotClipModels = Field(
+ CreateShotClip: CreateShotClipModels = SettingsField(
default_factory=CreateShotClipModels,
title="Create Shot Clip"
)
class ResolveSettings(BaseSettingsModel):
- launch_openpype_menu_on_start: bool = Field(
+ launch_openpype_menu_on_start: bool = SettingsField(
False, title="Launch OpenPype menu on start of Resolve"
)
- imageio: ResolveImageIOModel = Field(
+ imageio: ResolveImageIOModel = SettingsField(
default_factory=ResolveImageIOModel,
title="Color Management (ImageIO)"
)
- create: CreatorPuginsModel = Field(
+ create: CreatorPuginsModel = SettingsField(
default_factory=CreatorPuginsModel,
title="Creator plugins",
)
diff --git a/server_addon/royal_render/server/settings.py b/server_addon/royal_render/server/settings.py
index 677d7e2671e..6e077feb3e9 100644
--- a/server_addon/royal_render/server/settings.py
+++ b/server_addon/royal_render/server/settings.py
@@ -1,5 +1,8 @@
-from pydantic import Field
-from ayon_server.settings import BaseSettingsModel, MultiplatformPathModel
+from ayon_server.settings import (
+ BaseSettingsModel,
+ SettingsField,
+ MultiplatformPathModel,
+)
class CustomPath(MultiplatformPathModel):
@@ -8,18 +11,20 @@ class CustomPath(MultiplatformPathModel):
class ServerListSubmodel(BaseSettingsModel):
_layout = "expanded"
- name: str = Field("", title="Name")
- value: CustomPath = Field(
+ name: str = SettingsField("", title="Name")
+ value: CustomPath = SettingsField(
default_factory=CustomPath
)
class CollectSequencesFromJobModel(BaseSettingsModel):
- review: bool = Field(True, title="Generate reviews from sequences")
+ review: bool = SettingsField(
+ True, title="Generate reviews from sequences"
+ )
class PublishPluginsModel(BaseSettingsModel):
- CollectSequencesFromJob: CollectSequencesFromJobModel = Field(
+ CollectSequencesFromJob: CollectSequencesFromJobModel = SettingsField(
default_factory=CollectSequencesFromJobModel,
title="Collect Sequences from the Job"
)
@@ -31,19 +36,19 @@ class RoyalRenderSettings(BaseSettingsModel):
# - both system and project settings contained 'rr_path'
# where project settings did choose one of rr_path from system settings
# that is not possible in AYON
- rr_paths: list[ServerListSubmodel] = Field(
+ rr_paths: list[ServerListSubmodel] = SettingsField(
default_factory=list,
title="Royal Render Root Paths",
scope=["studio"],
)
# This was 'rr_paths' in project settings and should be enum of
# 'rr_paths' from system settings, but that's not possible in AYON
- selected_rr_paths: list[str] = Field(
+ selected_rr_paths: list[str] = SettingsField(
default_factory=list,
title="Selected Royal Render Paths",
section="---",
)
- publish: PublishPluginsModel = Field(
+ publish: PublishPluginsModel = SettingsField(
default_factory=PublishPluginsModel,
title="Publish plugins",
)
diff --git a/server_addon/substancepainter/server/settings/imageio.py b/server_addon/substancepainter/server/settings/imageio.py
index e301d3d865f..ea685047b07 100644
--- a/server_addon/substancepainter/server/settings/imageio.py
+++ b/server_addon/substancepainter/server/settings/imageio.py
@@ -1,29 +1,29 @@
-from pydantic import Field, validator
-from ayon_server.settings import BaseSettingsModel
+from pydantic import validator
+from ayon_server.settings import BaseSettingsModel, SettingsField
from ayon_server.settings.validators import ensure_unique_names
class ImageIOConfigModel(BaseSettingsModel):
- override_global_config: bool = Field(
+ override_global_config: bool = SettingsField(
False,
title="Override global OCIO config"
)
- filepath: list[str] = Field(
+ filepath: list[str] = SettingsField(
default_factory=list,
title="Config path"
)
class ImageIOFileRuleModel(BaseSettingsModel):
- name: str = Field("", title="Rule name")
- pattern: str = Field("", title="Regex pattern")
- colorspace: str = Field("", title="Colorspace name")
- ext: str = Field("", title="File extension")
+ name: str = SettingsField("", title="Rule name")
+ pattern: str = SettingsField("", title="Regex pattern")
+ colorspace: str = SettingsField("", title="Colorspace name")
+ ext: str = SettingsField("", title="File extension")
class ImageIOFileRulesModel(BaseSettingsModel):
- activate_host_rules: bool = Field(False)
- rules: list[ImageIOFileRuleModel] = Field(
+ activate_host_rules: bool = SettingsField(False)
+ rules: list[ImageIOFileRuleModel] = SettingsField(
default_factory=list,
title="Rules"
)
@@ -35,14 +35,14 @@ def validate_unique_outputs(cls, value):
class ImageIOSettings(BaseSettingsModel):
- activate_host_color_management: bool = Field(
+ activate_host_color_management: bool = SettingsField(
True, title="Enable Color Management"
)
- ocio_config: ImageIOConfigModel = Field(
+ ocio_config: ImageIOConfigModel = SettingsField(
default_factory=ImageIOConfigModel,
title="OCIO config"
)
- file_rules: ImageIOFileRulesModel = Field(
+ file_rules: ImageIOFileRulesModel = SettingsField(
default_factory=ImageIOFileRulesModel,
title="File Rules"
)
diff --git a/server_addon/substancepainter/server/settings/main.py b/server_addon/substancepainter/server/settings/main.py
index f8397c3c081..f80fa9fe1ec 100644
--- a/server_addon/substancepainter/server/settings/main.py
+++ b/server_addon/substancepainter/server/settings/main.py
@@ -1,20 +1,19 @@
-from pydantic import Field
-from ayon_server.settings import BaseSettingsModel
+from ayon_server.settings import BaseSettingsModel, SettingsField
from .imageio import ImageIOSettings, DEFAULT_IMAGEIO_SETTINGS
class ShelvesSettingsModel(BaseSettingsModel):
_layout = "compact"
- name: str = Field(title="Name")
- value: str = Field(title="Path")
+ name: str = SettingsField(title="Name")
+ value: str = SettingsField(title="Path")
class SubstancePainterSettings(BaseSettingsModel):
- imageio: ImageIOSettings = Field(
+ imageio: ImageIOSettings = SettingsField(
default_factory=ImageIOSettings,
title="Color Management (ImageIO)"
)
- shelves: list[ShelvesSettingsModel] = Field(
+ shelves: list[ShelvesSettingsModel] = SettingsField(
default_factory=list,
title="Shelves"
)
diff --git a/server_addon/timers_manager/server/settings.py b/server_addon/timers_manager/server/settings.py
index a5c5721a575..774940730c5 100644
--- a/server_addon/timers_manager/server/settings.py
+++ b/server_addon/timers_manager/server/settings.py
@@ -1,24 +1,23 @@
-from pydantic import Field
-from ayon_server.settings import BaseSettingsModel
+from ayon_server.settings import BaseSettingsModel, SettingsField
class TimersManagerSettings(BaseSettingsModel):
- auto_stop: bool = Field(
+ auto_stop: bool = SettingsField(
True,
title="Auto stop timer",
scope=["studio"],
)
- full_time: int = Field(
+ full_time: int = SettingsField(
15,
title="Max idle time",
scope=["studio"],
)
- message_time: float = Field(
+ message_time: float = SettingsField(
0.5,
title="When dialog will show",
scope=["studio"],
)
- disregard_publishing: bool = Field(
+ disregard_publishing: bool = SettingsField(
False,
title="Disregard publishing",
scope=["studio"],
diff --git a/server_addon/traypublisher/server/settings/creator_plugins.py b/server_addon/traypublisher/server/settings/creator_plugins.py
index 345cb92e635..bf66d9a088e 100644
--- a/server_addon/traypublisher/server/settings/creator_plugins.py
+++ b/server_addon/traypublisher/server/settings/creator_plugins.py
@@ -1,6 +1,4 @@
-from pydantic import Field
-
-from ayon_server.settings import BaseSettingsModel
+from ayon_server.settings import BaseSettingsModel, SettingsField
class BatchMovieCreatorPlugin(BaseSettingsModel):
@@ -8,24 +6,24 @@ class BatchMovieCreatorPlugin(BaseSettingsModel):
asset is parsed from file names ('asset.mov', 'asset_v001.mov',
'my_asset_to_publish.mov')"""
- default_variants: list[str] = Field(
+ default_variants: list[str] = SettingsField(
title="Default variants",
default_factory=list
)
- default_tasks: list[str] = Field(
+ default_tasks: list[str] = SettingsField(
title="Default tasks",
default_factory=list
)
- extensions: list[str] = Field(
+ extensions: list[str] = SettingsField(
title="Extensions",
default_factory=list
)
class TrayPublisherCreatePluginsModel(BaseSettingsModel):
- BatchMovieCreator: BatchMovieCreatorPlugin = Field(
+ BatchMovieCreator: BatchMovieCreatorPlugin = SettingsField(
title="Batch Movie Creator",
default_factory=BatchMovieCreatorPlugin
)
diff --git a/server_addon/traypublisher/server/settings/editorial_creators.py b/server_addon/traypublisher/server/settings/editorial_creators.py
index ac0ff0afc7a..d9f5e302a4b 100644
--- a/server_addon/traypublisher/server/settings/editorial_creators.py
+++ b/server_addon/traypublisher/server/settings/editorial_creators.py
@@ -1,18 +1,20 @@
-from pydantic import Field
-
-from ayon_server.settings import BaseSettingsModel, task_types_enum
+from ayon_server.settings import (
+ BaseSettingsModel,
+ SettingsField,
+ task_types_enum,
+)
class ClipNameTokenizerItem(BaseSettingsModel):
_layout = "expanded"
- name: str = Field("", title="Tokenizer name")
- regex: str = Field("", title="Tokenizer regex")
+ name: str = SettingsField("", title="Tokenizer name")
+ regex: str = SettingsField("", title="Tokenizer regex")
class ShotAddTasksItem(BaseSettingsModel):
_layout = "expanded"
- name: str = Field('', title="Key")
- task_type: str = Field(
+ name: str = SettingsField('', title="Key")
+ task_type: str = SettingsField(
title="Task type",
enum_resolver=task_types_enum
)
@@ -20,7 +22,7 @@ class ShotAddTasksItem(BaseSettingsModel):
class ShotRenameSubmodel(BaseSettingsModel):
enabled: bool = True
- shot_rename_template: str = Field(
+ shot_rename_template: str = SettingsField(
"",
title="Shot rename template"
)
@@ -36,16 +38,16 @@ class ShotRenameSubmodel(BaseSettingsModel):
class TokenToParentConvertorItem(BaseSettingsModel):
# TODO - was 'type' must be renamed in code to `parent_type`
- parent_type: str = Field(
+ parent_type: str = SettingsField(
"Project",
enum_resolver=lambda: parent_type_enum
)
- name: str = Field(
+ name: str = SettingsField(
"",
title="Parent token name",
description="Unique name used in `Parent path template`"
)
- value: str = Field(
+ value: str = SettingsField(
"",
title="Parent token value",
description="Template where any text, Anatomy keys and Tokens could be used" # noqa
@@ -54,12 +56,12 @@ class TokenToParentConvertorItem(BaseSettingsModel):
class ShotHierarchySubmodel(BaseSettingsModel):
enabled: bool = True
- parents_path: str = Field(
+ parents_path: str = SettingsField(
"",
title="Parents path template",
description="Using keys from \"Token to parent convertor\" or tokens directly" # noqa
)
- parents: list[TokenToParentConvertorItem] = Field(
+ parents: list[TokenToParentConvertorItem] = SettingsField(
default_factory=TokenToParentConvertorItem,
title="Token to parent convertor"
)
@@ -73,22 +75,22 @@ class ShotHierarchySubmodel(BaseSettingsModel):
class ProductTypePresetItem(BaseSettingsModel):
- product_type: str = Field("", title="Product type")
+ product_type: str = SettingsField("", title="Product type")
# TODO add placeholder '< Inherited >'
- variant: str = Field("", title="Variant")
- review: bool = Field(True, title="Review")
- output_file_type: str = Field(
+ variant: str = SettingsField("", title="Variant")
+ review: bool = SettingsField(True, title="Review")
+ output_file_type: str = SettingsField(
".mp4",
enum_resolver=lambda: output_file_type
)
class EditorialSimpleCreatorPlugin(BaseSettingsModel):
- default_variants: list[str] = Field(
+ default_variants: list[str] = SettingsField(
default_factory=list,
title="Default Variants"
)
- clip_name_tokenizer: list[ClipNameTokenizerItem] = Field(
+ clip_name_tokenizer: list[ClipNameTokenizerItem] = SettingsField(
default_factory=ClipNameTokenizerItem,
description=(
"Using Regex expression to create tokens. \nThose can be used"
@@ -96,25 +98,25 @@ class EditorialSimpleCreatorPlugin(BaseSettingsModel):
"\n\nTokens should be decorated with \"_\" on each side"
)
)
- shot_rename: ShotRenameSubmodel = Field(
+ shot_rename: ShotRenameSubmodel = SettingsField(
title="Shot Rename",
default_factory=ShotRenameSubmodel
)
- shot_hierarchy: ShotHierarchySubmodel = Field(
+ shot_hierarchy: ShotHierarchySubmodel = SettingsField(
title="Shot Hierarchy",
default_factory=ShotHierarchySubmodel
)
- shot_add_tasks: list[ShotAddTasksItem] = Field(
+ shot_add_tasks: list[ShotAddTasksItem] = SettingsField(
title="Add tasks to shot",
default_factory=ShotAddTasksItem
)
- product_type_presets: list[ProductTypePresetItem] = Field(
+ product_type_presets: list[ProductTypePresetItem] = SettingsField(
default_factory=list
)
class TraypublisherEditorialCreatorPlugins(BaseSettingsModel):
- editorial_simple: EditorialSimpleCreatorPlugin = Field(
+ editorial_simple: EditorialSimpleCreatorPlugin = SettingsField(
title="Editorial simple creator",
default_factory=EditorialSimpleCreatorPlugin,
)
diff --git a/server_addon/traypublisher/server/settings/imageio.py b/server_addon/traypublisher/server/settings/imageio.py
index 3df0d2f2fb5..06a18a39ca3 100644
--- a/server_addon/traypublisher/server/settings/imageio.py
+++ b/server_addon/traypublisher/server/settings/imageio.py
@@ -1,29 +1,29 @@
-from pydantic import Field, validator
-from ayon_server.settings import BaseSettingsModel
+from pydantic import validator
+from ayon_server.settings import BaseSettingsModel, SettingsField
from ayon_server.settings.validators import ensure_unique_names
class ImageIOConfigModel(BaseSettingsModel):
- override_global_config: bool = Field(
+ override_global_config: bool = SettingsField(
False,
title="Override global OCIO config"
)
- filepath: list[str] = Field(
+ filepath: list[str] = SettingsField(
default_factory=list,
title="Config path"
)
class ImageIOFileRuleModel(BaseSettingsModel):
- name: str = Field("", title="Rule name")
- pattern: str = Field("", title="Regex pattern")
- colorspace: str = Field("", title="Colorspace name")
- ext: str = Field("", title="File extension")
+ name: str = SettingsField("", title="Rule name")
+ pattern: str = SettingsField("", title="Regex pattern")
+ colorspace: str = SettingsField("", title="Colorspace name")
+ ext: str = SettingsField("", title="File extension")
class ImageIOFileRulesModel(BaseSettingsModel):
- activate_host_rules: bool = Field(False)
- rules: list[ImageIOFileRuleModel] = Field(
+ activate_host_rules: bool = SettingsField(False)
+ rules: list[ImageIOFileRuleModel] = SettingsField(
default_factory=list,
title="Rules"
)
@@ -35,14 +35,14 @@ def validate_unique_outputs(cls, value):
class TrayPublisherImageIOModel(BaseSettingsModel):
- activate_host_color_management: bool = Field(
+ activate_host_color_management: bool = SettingsField(
True, title="Enable Color Management"
)
- ocio_config: ImageIOConfigModel = Field(
+ ocio_config: ImageIOConfigModel = SettingsField(
default_factory=ImageIOConfigModel,
title="OCIO config"
)
- file_rules: ImageIOFileRulesModel = Field(
+ file_rules: ImageIOFileRulesModel = SettingsField(
default_factory=ImageIOFileRulesModel,
title="File Rules"
)
diff --git a/server_addon/traypublisher/server/settings/main.py b/server_addon/traypublisher/server/settings/main.py
index fad96bef2f5..760c529f49b 100644
--- a/server_addon/traypublisher/server/settings/main.py
+++ b/server_addon/traypublisher/server/settings/main.py
@@ -1,5 +1,4 @@
-from pydantic import Field
-from ayon_server.settings import BaseSettingsModel
+from ayon_server.settings import BaseSettingsModel, SettingsField
from .imageio import TrayPublisherImageIOModel
from .simple_creators import (
@@ -22,23 +21,23 @@
class TraypublisherSettings(BaseSettingsModel):
"""Traypublisher Project Settings."""
- imageio: TrayPublisherImageIOModel = Field(
+ imageio: TrayPublisherImageIOModel = SettingsField(
default_factory=TrayPublisherImageIOModel,
title="Color Management (ImageIO)"
)
- simple_creators: list[SimpleCreatorPlugin] = Field(
+ simple_creators: list[SimpleCreatorPlugin] = SettingsField(
title="Simple Create Plugins",
default_factory=SimpleCreatorPlugin,
)
- editorial_creators: TraypublisherEditorialCreatorPlugins = Field(
+ editorial_creators: TraypublisherEditorialCreatorPlugins = SettingsField(
title="Editorial Creators",
default_factory=TraypublisherEditorialCreatorPlugins,
)
- create: TrayPublisherCreatePluginsModel = Field(
+ create: TrayPublisherCreatePluginsModel = SettingsField(
title="Create",
default_factory=TrayPublisherCreatePluginsModel
)
- publish: TrayPublisherPublishPlugins = Field(
+ publish: TrayPublisherPublishPlugins = SettingsField(
title="Publish Plugins",
default_factory=TrayPublisherPublishPlugins
)
diff --git a/server_addon/traypublisher/server/settings/publish_plugins.py b/server_addon/traypublisher/server/settings/publish_plugins.py
index 8c844f29f2b..f413c862270 100644
--- a/server_addon/traypublisher/server/settings/publish_plugins.py
+++ b/server_addon/traypublisher/server/settings/publish_plugins.py
@@ -1,13 +1,11 @@
-from pydantic import Field
-
-from ayon_server.settings import BaseSettingsModel
+from ayon_server.settings import BaseSettingsModel, SettingsField
class ValidatePluginModel(BaseSettingsModel):
_isGroup = True
enabled: bool = True
- optional: bool = Field(True, title="Optional")
- active: bool = Field(True, title="Active")
+ optional: bool = SettingsField(True, title="Optional")
+ active: bool = SettingsField(True, title="Active")
class ValidateFrameRangeModel(ValidatePluginModel):
@@ -17,15 +15,15 @@ class ValidateFrameRangeModel(ValidatePluginModel):
class TrayPublisherPublishPlugins(BaseSettingsModel):
- CollectFrameDataFromAssetEntity: ValidatePluginModel = Field(
+ CollectFrameDataFromAssetEntity: ValidatePluginModel = SettingsField(
default_factory=ValidatePluginModel,
title="Collect Frame Data From Folder Entity",
)
- ValidateFrameRange: ValidateFrameRangeModel = Field(
+ ValidateFrameRange: ValidateFrameRangeModel = SettingsField(
title="Validate Frame Range",
default_factory=ValidateFrameRangeModel,
)
- ValidateExistingVersion: ValidatePluginModel = Field(
+ ValidateExistingVersion: ValidatePluginModel = SettingsField(
title="Validate Existing Version",
default_factory=ValidatePluginModel,
)
diff --git a/server_addon/traypublisher/server/settings/simple_creators.py b/server_addon/traypublisher/server/settings/simple_creators.py
index 8335b9d34e9..924eeedd239 100644
--- a/server_addon/traypublisher/server/settings/simple_creators.py
+++ b/server_addon/traypublisher/server/settings/simple_creators.py
@@ -1,42 +1,40 @@
-from pydantic import Field
-
-from ayon_server.settings import BaseSettingsModel
+from ayon_server.settings import BaseSettingsModel, SettingsField
class SimpleCreatorPlugin(BaseSettingsModel):
_layout = "expanded"
- product_type: str = Field("", title="Product type")
+ product_type: str = SettingsField("", title="Product type")
# TODO add placeholder
- identifier: str = Field("", title="Identifier")
- label: str = Field("", title="Label")
- icon: str = Field("", title="Icon")
- default_variants: list[str] = Field(
+ identifier: str = SettingsField("", title="Identifier")
+ label: str = SettingsField("", title="Label")
+ icon: str = SettingsField("", title="Icon")
+ default_variants: list[str] = SettingsField(
default_factory=list,
title="Default Variants"
)
- description: str = Field(
+ description: str = SettingsField(
"",
title="Description",
widget="textarea"
)
- detailed_description: str = Field(
+ detailed_description: str = SettingsField(
"",
title="Detailed Description",
widget="textarea"
)
- allow_sequences: bool = Field(
+ allow_sequences: bool = SettingsField(
False,
title="Allow sequences"
)
- allow_multiple_items: bool = Field(
+ allow_multiple_items: bool = SettingsField(
False,
title="Allow multiple items"
)
- allow_version_control: bool = Field(
+ allow_version_control: bool = SettingsField(
False,
title="Allow version control"
)
- extensions: list[str] = Field(
+ extensions: list[str] = SettingsField(
default_factory=list,
title="Extensions"
)
diff --git a/server_addon/tvpaint/server/settings/create_plugins.py b/server_addon/tvpaint/server/settings/create_plugins.py
index 349bfdd2882..b3351dca28e 100644
--- a/server_addon/tvpaint/server/settings/create_plugins.py
+++ b/server_addon/tvpaint/server/settings/create_plugins.py
@@ -1,44 +1,43 @@
-from pydantic import Field
-from ayon_server.settings import BaseSettingsModel
+from ayon_server.settings import BaseSettingsModel, SettingsField
class CreateWorkfileModel(BaseSettingsModel):
- enabled: bool = Field(True)
- default_variant: str = Field(title="Default variant")
- default_variants: list[str] = Field(
+ enabled: bool = SettingsField(True)
+ default_variant: str = SettingsField(title="Default variant")
+ default_variants: list[str] = SettingsField(
default_factory=list, title="Default variants")
class CreateReviewModel(BaseSettingsModel):
- enabled: bool = Field(True)
- active_on_create: bool = Field(True, title="Active by default")
- default_variant: str = Field(title="Default variant")
- default_variants: list[str] = Field(
+ enabled: bool = SettingsField(True)
+ active_on_create: bool = SettingsField(True, title="Active by default")
+ default_variant: str = SettingsField(title="Default variant")
+ default_variants: list[str] = SettingsField(
default_factory=list, title="Default variants")
class CreateRenderSceneModel(BaseSettingsModel):
- enabled: bool = Field(True)
- active_on_create: bool = Field(True, title="Active by default")
- mark_for_review: bool = Field(True, title="Review by default")
- default_pass_name: str = Field(title="Default beauty pass")
- default_variant: str = Field(title="Default variant")
- default_variants: list[str] = Field(
+ enabled: bool = SettingsField(True)
+ active_on_create: bool = SettingsField(True, title="Active by default")
+ mark_for_review: bool = SettingsField(True, title="Review by default")
+ default_pass_name: str = SettingsField(title="Default beauty pass")
+ default_variant: str = SettingsField(title="Default variant")
+ default_variants: list[str] = SettingsField(
default_factory=list, title="Default variants")
class CreateRenderLayerModel(BaseSettingsModel):
- mark_for_review: bool = Field(True, title="Review by default")
- default_pass_name: str = Field(title="Default beauty pass")
- default_variant: str = Field(title="Default variant")
- default_variants: list[str] = Field(
+ mark_for_review: bool = SettingsField(True, title="Review by default")
+ default_pass_name: str = SettingsField(title="Default beauty pass")
+ default_variant: str = SettingsField(title="Default variant")
+ default_variants: list[str] = SettingsField(
default_factory=list, title="Default variants")
class CreateRenderPassModel(BaseSettingsModel):
- mark_for_review: bool = Field(True, title="Review by default")
- default_variant: str = Field(title="Default variant")
- default_variants: list[str] = Field(
+ mark_for_review: bool = SettingsField(True, title="Review by default")
+ default_variant: str = SettingsField(title="Default variant")
+ default_variants: list[str] = SettingsField(
default_factory=list, title="Default variants")
@@ -58,35 +57,39 @@ class AutoDetectCreateRenderModel(BaseSettingsModel):
Would create group names "L010", "L020", ...
"""
- enabled: bool = Field(True)
- allow_group_rename: bool = Field(title="Allow group rename")
- group_name_template: str = Field(title="Group name template")
- group_idx_offset: int = Field(1, title="Group index Offset", ge=1)
- group_idx_padding: int = Field(4, title="Group index Padding", ge=1)
+ enabled: bool = SettingsField(True)
+ allow_group_rename: bool = SettingsField(title="Allow group rename")
+ group_name_template: str = SettingsField(title="Group name template")
+ group_idx_offset: int = SettingsField(
+ 1, title="Group index Offset", ge=1
+ )
+ group_idx_padding: int = SettingsField(
+ 4, title="Group index Padding", ge=1
+ )
class CreatePluginsModel(BaseSettingsModel):
- create_workfile: CreateWorkfileModel = Field(
+ create_workfile: CreateWorkfileModel = SettingsField(
default_factory=CreateWorkfileModel,
title="Create Workfile"
)
- create_review: CreateReviewModel = Field(
+ create_review: CreateReviewModel = SettingsField(
default_factory=CreateReviewModel,
title="Create Review"
)
- create_render_scene: CreateRenderSceneModel = Field(
+ create_render_scene: CreateRenderSceneModel = SettingsField(
default_factory=CreateReviewModel,
title="Create Render Scene"
)
- create_render_layer: CreateRenderLayerModel= Field(
+ create_render_layer: CreateRenderLayerModel = SettingsField(
default_factory=CreateRenderLayerModel,
title="Create Render Layer"
)
- create_render_pass: CreateRenderPassModel = Field(
+ create_render_pass: CreateRenderPassModel = SettingsField(
default_factory=CreateRenderPassModel,
title="Create Render Pass"
)
- auto_detect_render: AutoDetectCreateRenderModel = Field(
+ auto_detect_render: AutoDetectCreateRenderModel = SettingsField(
default_factory=AutoDetectCreateRenderModel,
title="Auto-Detect Create Render",
)
diff --git a/server_addon/tvpaint/server/settings/filters.py b/server_addon/tvpaint/server/settings/filters.py
index 009febae069..9720e82281a 100644
--- a/server_addon/tvpaint/server/settings/filters.py
+++ b/server_addon/tvpaint/server/settings/filters.py
@@ -1,12 +1,10 @@
-from pydantic import Field
-
-from ayon_server.settings import BaseSettingsModel
+from ayon_server.settings import BaseSettingsModel, SettingsField
class FiltersSubmodel(BaseSettingsModel):
_layout = "compact"
- name: str = Field(title="Name")
- value: str = Field(
+ name: str = SettingsField(title="Name")
+ value: str = SettingsField(
"",
title="Textarea",
widget="textarea",
@@ -14,6 +12,6 @@ class FiltersSubmodel(BaseSettingsModel):
class PublishFiltersModel(BaseSettingsModel):
- env_search_replace_values: list[FiltersSubmodel] = Field(
+ env_search_replace_values: list[FiltersSubmodel] = SettingsField(
default_factory=list
)
diff --git a/server_addon/tvpaint/server/settings/imageio.py b/server_addon/tvpaint/server/settings/imageio.py
index 50f8b7eef4d..aaf3fbf34ed 100644
--- a/server_addon/tvpaint/server/settings/imageio.py
+++ b/server_addon/tvpaint/server/settings/imageio.py
@@ -1,29 +1,29 @@
-from pydantic import Field, validator
-from ayon_server.settings import BaseSettingsModel
+from pydantic import validator
+from ayon_server.settings import BaseSettingsModel, SettingsField
from ayon_server.settings.validators import ensure_unique_names
class ImageIOConfigModel(BaseSettingsModel):
- override_global_config: bool = Field(
+ override_global_config: bool = SettingsField(
False,
title="Override global OCIO config"
)
- filepath: list[str] = Field(
+ filepath: list[str] = SettingsField(
default_factory=list,
title="Config path"
)
class ImageIOFileRuleModel(BaseSettingsModel):
- name: str = Field("", title="Rule name")
- pattern: str = Field("", title="Regex pattern")
- colorspace: str = Field("", title="Colorspace name")
- ext: str = Field("", title="File extension")
+ name: str = SettingsField("", title="Rule name")
+ pattern: str = SettingsField("", title="Regex pattern")
+ colorspace: str = SettingsField("", title="Colorspace name")
+ ext: str = SettingsField("", title="File extension")
class ImageIOFileRulesModel(BaseSettingsModel):
- activate_host_rules: bool = Field(False)
- rules: list[ImageIOFileRuleModel] = Field(
+ activate_host_rules: bool = SettingsField(False)
+ rules: list[ImageIOFileRuleModel] = SettingsField(
default_factory=list,
title="Rules"
)
@@ -35,14 +35,14 @@ def validate_unique_outputs(cls, value):
class TVPaintImageIOModel(BaseSettingsModel):
- activate_host_color_management: bool = Field(
+ activate_host_color_management: bool = SettingsField(
True, title="Enable Color Management"
)
- ocio_config: ImageIOConfigModel = Field(
+ ocio_config: ImageIOConfigModel = SettingsField(
default_factory=ImageIOConfigModel,
title="OCIO config"
)
- file_rules: ImageIOFileRulesModel = Field(
+ file_rules: ImageIOFileRulesModel = SettingsField(
default_factory=ImageIOFileRulesModel,
title="File Rules"
)
diff --git a/server_addon/tvpaint/server/settings/main.py b/server_addon/tvpaint/server/settings/main.py
index 102acfaf3d8..c6b6c9ab128 100644
--- a/server_addon/tvpaint/server/settings/main.py
+++ b/server_addon/tvpaint/server/settings/main.py
@@ -1,6 +1,6 @@
-from pydantic import Field
from ayon_server.settings import (
BaseSettingsModel,
+ SettingsField,
ensure_unique_names,
)
@@ -15,23 +15,23 @@
class TvpaintSettings(BaseSettingsModel):
- imageio: TVPaintImageIOModel = Field(
+ imageio: TVPaintImageIOModel = SettingsField(
default_factory=TVPaintImageIOModel,
title="Color Management (ImageIO)"
)
- stop_timer_on_application_exit: bool = Field(
+ stop_timer_on_application_exit: bool = SettingsField(
title="Stop timer on application exit")
- create: CreatePluginsModel = Field(
+ create: CreatePluginsModel = SettingsField(
default_factory=CreatePluginsModel,
title="Create plugins"
)
- publish: PublishPluginsModel = Field(
+ publish: PublishPluginsModel = SettingsField(
default_factory=PublishPluginsModel,
title="Publish plugins")
- load: LoadPluginsModel = Field(
+ load: LoadPluginsModel = SettingsField(
default_factory=LoadPluginsModel,
title="Load plugins")
- workfile_builder: WorkfileBuilderPlugin = Field(
+ workfile_builder: WorkfileBuilderPlugin = SettingsField(
default_factory=WorkfileBuilderPlugin,
title="Workfile Builder"
)
diff --git a/server_addon/tvpaint/server/settings/publish_plugins.py b/server_addon/tvpaint/server/settings/publish_plugins.py
index 76c7eaac01e..0623524c924 100644
--- a/server_addon/tvpaint/server/settings/publish_plugins.py
+++ b/server_addon/tvpaint/server/settings/publish_plugins.py
@@ -1,11 +1,9 @@
-from pydantic import Field
-
-from ayon_server.settings import BaseSettingsModel
+from ayon_server.settings import BaseSettingsModel, SettingsField
from ayon_server.types import ColorRGBA_uint8
class CollectRenderInstancesModel(BaseSettingsModel):
- ignore_render_pass_transparency: bool = Field(
+ ignore_render_pass_transparency: bool = SettingsField(
title="Ignore Render Pass opacity"
)
@@ -13,15 +11,15 @@ class CollectRenderInstancesModel(BaseSettingsModel):
class ExtractSequenceModel(BaseSettingsModel):
"""Review BG color is used for whole scene review and for thumbnails."""
# TODO Use alpha color
- review_bg: ColorRGBA_uint8 = Field(
+ review_bg: ColorRGBA_uint8 = SettingsField(
(255, 255, 255, 1.0),
title="Review BG color")
class ValidatePluginModel(BaseSettingsModel):
enabled: bool = True
- optional: bool = Field(True, title="Optional")
- active: bool = Field(True, title="Active")
+ optional: bool = SettingsField(True, title="Optional")
+ active: bool = SettingsField(True, title="Active")
def compression_enum():
@@ -44,7 +42,7 @@ class ExtractConvertToEXRModel(BaseSettingsModel):
enabled: bool = False
replace_pngs: bool = True
- exr_compression: str = Field(
+ exr_compression: str = SettingsField(
"ZIP",
enum_resolver=compression_enum,
title="EXR Compression"
@@ -53,46 +51,46 @@ class ExtractConvertToEXRModel(BaseSettingsModel):
class LoadImageDefaultModel(BaseSettingsModel):
_layout = "expanded"
- stretch: bool = Field(title="Stretch")
- timestretch: bool = Field(title="TimeStretch")
- preload: bool = Field(title="Preload")
+ stretch: bool = SettingsField(title="Stretch")
+ timestretch: bool = SettingsField(title="TimeStretch")
+ preload: bool = SettingsField(title="Preload")
class LoadImageModel(BaseSettingsModel):
- defaults: LoadImageDefaultModel = Field(
+ defaults: LoadImageDefaultModel = SettingsField(
default_factory=LoadImageDefaultModel
)
class PublishPluginsModel(BaseSettingsModel):
- CollectRenderInstances: CollectRenderInstancesModel = Field(
+ CollectRenderInstances: CollectRenderInstancesModel = SettingsField(
default_factory=CollectRenderInstancesModel,
title="Collect Render Instances")
- ExtractSequence: ExtractSequenceModel = Field(
+ ExtractSequence: ExtractSequenceModel = SettingsField(
default_factory=ExtractSequenceModel,
title="Extract Sequence")
- ValidateProjectSettings: ValidatePluginModel = Field(
+ ValidateProjectSettings: ValidatePluginModel = SettingsField(
default_factory=ValidatePluginModel,
title="Validate Project Settings")
- ValidateMarks: ValidatePluginModel = Field(
+ ValidateMarks: ValidatePluginModel = SettingsField(
default_factory=ValidatePluginModel,
title="Validate MarkIn/Out")
- ValidateStartFrame: ValidatePluginModel = Field(
+ ValidateStartFrame: ValidatePluginModel = SettingsField(
default_factory=ValidatePluginModel,
title="Validate Scene Start Frame")
- ValidateAssetName: ValidatePluginModel = Field(
+ ValidateAssetName: ValidatePluginModel = SettingsField(
default_factory=ValidatePluginModel,
title="Validate Folder Name")
- ExtractConvertToEXR: ExtractConvertToEXRModel = Field(
+ ExtractConvertToEXR: ExtractConvertToEXRModel = SettingsField(
default_factory=ExtractConvertToEXRModel,
title="Extract Convert To EXR")
class LoadPluginsModel(BaseSettingsModel):
- LoadImage: LoadImageModel = Field(
+ LoadImage: LoadImageModel = SettingsField(
default_factory=LoadImageModel,
title="Load Image")
- ImportImage: LoadImageModel = Field(
+ ImportImage: LoadImageModel = SettingsField(
default_factory=LoadImageModel,
title="Import Image")
diff --git a/server_addon/tvpaint/server/settings/workfile_builder.py b/server_addon/tvpaint/server/settings/workfile_builder.py
index e0aba5da7e1..0799497bf9b 100644
--- a/server_addon/tvpaint/server/settings/workfile_builder.py
+++ b/server_addon/tvpaint/server/settings/workfile_builder.py
@@ -1,30 +1,29 @@
-from pydantic import Field
-
from ayon_server.settings import (
BaseSettingsModel,
+ SettingsField,
MultiplatformPathModel,
task_types_enum,
)
class CustomBuilderTemplate(BaseSettingsModel):
- task_types: list[str] = Field(
+ task_types: list[str] = SettingsField(
default_factory=list,
title="Task types",
enum_resolver=task_types_enum
)
- template_path: MultiplatformPathModel = Field(
+ template_path: MultiplatformPathModel = SettingsField(
default_factory=MultiplatformPathModel
)
class WorkfileBuilderPlugin(BaseSettingsModel):
_title = "Workfile Builder"
- create_first_version: bool = Field(
+ create_first_version: bool = SettingsField(
False,
title="Create first workfile"
)
- custom_templates: list[CustomBuilderTemplate] = Field(
+ custom_templates: list[CustomBuilderTemplate] = SettingsField(
default_factory=CustomBuilderTemplate
)
diff --git a/server_addon/unreal/server/imageio.py b/server_addon/unreal/server/imageio.py
index dde042ba47e..853d4765873 100644
--- a/server_addon/unreal/server/imageio.py
+++ b/server_addon/unreal/server/imageio.py
@@ -1,29 +1,29 @@
-from pydantic import Field, validator
-from ayon_server.settings import BaseSettingsModel
+from pydantic import validator
+from ayon_server.settings import BaseSettingsModel, SettingsField
from ayon_server.settings.validators import ensure_unique_names
class ImageIOConfigModel(BaseSettingsModel):
- override_global_config: bool = Field(
+ override_global_config: bool = SettingsField(
False,
title="Override global OCIO config"
)
- filepath: list[str] = Field(
+ filepath: list[str] = SettingsField(
default_factory=list,
title="Config path"
)
class ImageIOFileRuleModel(BaseSettingsModel):
- name: str = Field("", title="Rule name")
- pattern: str = Field("", title="Regex pattern")
- colorspace: str = Field("", title="Colorspace name")
- ext: str = Field("", title="File extension")
+ name: str = SettingsField("", title="Rule name")
+ pattern: str = SettingsField("", title="Regex pattern")
+ colorspace: str = SettingsField("", title="Colorspace name")
+ ext: str = SettingsField("", title="File extension")
class ImageIOFileRulesModel(BaseSettingsModel):
- activate_host_rules: bool = Field(False)
- rules: list[ImageIOFileRuleModel] = Field(
+ activate_host_rules: bool = SettingsField(False)
+ rules: list[ImageIOFileRuleModel] = SettingsField(
default_factory=list,
title="Rules"
)
@@ -35,14 +35,14 @@ def validate_unique_outputs(cls, value):
class UnrealImageIOModel(BaseSettingsModel):
- activate_host_color_management: bool = Field(
+ activate_host_color_management: bool = SettingsField(
True, title="Enable Color Management"
)
- ocio_config: ImageIOConfigModel = Field(
+ ocio_config: ImageIOConfigModel = SettingsField(
default_factory=ImageIOConfigModel,
title="OCIO config"
)
- file_rules: ImageIOFileRulesModel = Field(
+ file_rules: ImageIOFileRulesModel = SettingsField(
default_factory=ImageIOFileRulesModel,
title="File Rules"
)
diff --git a/server_addon/unreal/server/settings.py b/server_addon/unreal/server/settings.py
index 110ccc563a5..5f54fb6c75b 100644
--- a/server_addon/unreal/server/settings.py
+++ b/server_addon/unreal/server/settings.py
@@ -1,11 +1,10 @@
-from pydantic import Field
-from ayon_server.settings import BaseSettingsModel
+from ayon_server.settings import BaseSettingsModel, SettingsField
from .imageio import UnrealImageIOModel
class ProjectSetup(BaseSettingsModel):
- dev_mode: bool = Field(
+ dev_mode: bool = SettingsField(
False,
title="Dev mode"
)
@@ -21,32 +20,32 @@ def _render_format_enum():
class UnrealSettings(BaseSettingsModel):
- imageio: UnrealImageIOModel = Field(
+ imageio: UnrealImageIOModel = SettingsField(
default_factory=UnrealImageIOModel,
title="Color Management (ImageIO)"
)
- level_sequences_for_layouts: bool = Field(
+ level_sequences_for_layouts: bool = SettingsField(
False,
title="Generate level sequences when loading layouts"
)
- delete_unmatched_assets: bool = Field(
+ delete_unmatched_assets: bool = SettingsField(
False,
title="Delete assets that are not matched"
)
- render_config_path: str = Field(
+ render_config_path: str = SettingsField(
"",
title="Render Config Path"
)
- preroll_frames: int = Field(
+ preroll_frames: int = SettingsField(
0,
title="Pre-roll frames"
)
- render_format: str = Field(
+ render_format: str = SettingsField(
"png",
title="Render format",
enum_resolver=_render_format_enum
)
- project_setup: ProjectSetup = Field(
+ project_setup: ProjectSetup = SettingsField(
default_factory=ProjectSetup,
title="Project Setup",
)