mirror of
https://github.com/ynput/ayon-core.git
synced 2026-01-01 08:24:53 +01:00
Merge pull request #5291 from ynput/release/next-minor
This commit is contained in:
commit
a49b4265c6
896 changed files with 28458 additions and 20726 deletions
1386
openpype/settings/ayon_settings.py
Normal file
1386
openpype/settings/ayon_settings.py
Normal file
File diff suppressed because it is too large
Load diff
|
|
@ -3,8 +3,8 @@
|
|||
"activate_global_color_management": false,
|
||||
"ocio_config": {
|
||||
"filepath": [
|
||||
"{OPENPYPE_ROOT}/vendor/bin/ocioconfig/OpenColorIOConfigs/aces_1.2/config.ocio",
|
||||
"{OPENPYPE_ROOT}/vendor/bin/ocioconfig/OpenColorIOConfigs/nuke-default/config.ocio"
|
||||
"{BUILTIN_OCIO_ROOT}/aces_1.2/config.ocio",
|
||||
"{BUILTIN_OCIO_ROOT}/nuke-default/config.ocio"
|
||||
]
|
||||
},
|
||||
"file_rules": {
|
||||
|
|
@ -53,7 +53,8 @@
|
|||
},
|
||||
"ValidateEditorialAssetName": {
|
||||
"enabled": true,
|
||||
"optional": false
|
||||
"optional": false,
|
||||
"active": true
|
||||
},
|
||||
"ValidateVersion": {
|
||||
"enabled": true,
|
||||
|
|
@ -300,74 +301,6 @@
|
|||
}
|
||||
]
|
||||
},
|
||||
"IntegrateAssetNew": {
|
||||
"subset_grouping_profiles": [
|
||||
{
|
||||
"families": [],
|
||||
"hosts": [],
|
||||
"task_types": [],
|
||||
"tasks": [],
|
||||
"template": ""
|
||||
}
|
||||
],
|
||||
"template_name_profiles": [
|
||||
{
|
||||
"families": [],
|
||||
"hosts": [],
|
||||
"task_types": [],
|
||||
"tasks": [],
|
||||
"template_name": "publish"
|
||||
},
|
||||
{
|
||||
"families": [
|
||||
"review",
|
||||
"render",
|
||||
"prerender"
|
||||
],
|
||||
"hosts": [],
|
||||
"task_types": [],
|
||||
"tasks": [],
|
||||
"template_name": "render"
|
||||
},
|
||||
{
|
||||
"families": [
|
||||
"simpleUnrealTexture"
|
||||
],
|
||||
"hosts": [
|
||||
"standalonepublisher"
|
||||
],
|
||||
"task_types": [],
|
||||
"tasks": [],
|
||||
"template_name": "simpleUnrealTexture"
|
||||
},
|
||||
{
|
||||
"families": [
|
||||
"staticMesh",
|
||||
"skeletalMesh"
|
||||
],
|
||||
"hosts": [
|
||||
"maya"
|
||||
],
|
||||
"task_types": [],
|
||||
"tasks": [],
|
||||
"template_name": "maya2unreal"
|
||||
},
|
||||
{
|
||||
"families": [
|
||||
"online"
|
||||
],
|
||||
"hosts": [
|
||||
"traypublisher"
|
||||
],
|
||||
"task_types": [],
|
||||
"tasks": [],
|
||||
"template_name": "online"
|
||||
}
|
||||
]
|
||||
},
|
||||
"IntegrateAsset": {
|
||||
"skip_host_families": []
|
||||
},
|
||||
"IntegrateHeroVersion": {
|
||||
"enabled": true,
|
||||
"optional": true,
|
||||
|
|
|
|||
|
|
@ -60,11 +60,6 @@
|
|||
255,
|
||||
255,
|
||||
255
|
||||
],
|
||||
"families_to_review": [
|
||||
"review",
|
||||
"renderlayer",
|
||||
"renderscene"
|
||||
]
|
||||
},
|
||||
"ValidateProjectSettings": {
|
||||
|
|
|
|||
|
|
@ -15,6 +15,11 @@
|
|||
"darwin": [],
|
||||
"linux": []
|
||||
},
|
||||
"local_openpype_path": {
|
||||
"windows": "",
|
||||
"darwin": "",
|
||||
"linux": ""
|
||||
},
|
||||
"production_version": "",
|
||||
"staging_version": "",
|
||||
"version_check_interval": 5
|
||||
|
|
|
|||
|
|
@ -273,18 +273,6 @@
|
|||
"key": "review_bg",
|
||||
"label": "Review BG color",
|
||||
"use_alpha": false
|
||||
},
|
||||
{
|
||||
"type": "enum",
|
||||
"key": "families_to_review",
|
||||
"label": "Families to review",
|
||||
"multiselection": true,
|
||||
"enum_items": [
|
||||
{"review": "review"},
|
||||
{"renderpass": "renderPass"},
|
||||
{"renderlayer": "renderLayer"},
|
||||
{"renderscene": "renderScene"}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
|
|
|
|||
|
|
@ -118,6 +118,11 @@
|
|||
"type": "boolean",
|
||||
"key": "optional",
|
||||
"label": "Optional"
|
||||
},
|
||||
{
|
||||
"type": "boolean",
|
||||
"key": "active",
|
||||
"label": "Active"
|
||||
}
|
||||
]
|
||||
},
|
||||
|
|
@ -888,142 +893,6 @@
|
|||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "dict",
|
||||
"collapsible": true,
|
||||
"key": "IntegrateAssetNew",
|
||||
"label": "IntegrateAsset (Legacy)",
|
||||
"is_group": true,
|
||||
"children": [
|
||||
{
|
||||
"type": "label",
|
||||
"label": "<b>NOTE:</b> Subset grouping profiles settings were moved to <a href=\"settings://project_settings/global/publish/IntegrateSubsetGroup/subset_grouping_profiles\"><b>Integrate Subset Group</b></a>. Please move values there."
|
||||
},
|
||||
{
|
||||
"type": "list",
|
||||
"key": "subset_grouping_profiles",
|
||||
"label": "Subset grouping profiles (DEPRECATED)",
|
||||
"use_label_wrap": true,
|
||||
"object_type": {
|
||||
"type": "dict",
|
||||
"children": [
|
||||
{
|
||||
"key": "families",
|
||||
"label": "Families",
|
||||
"type": "list",
|
||||
"object_type": "text"
|
||||
},
|
||||
{
|
||||
"type": "hosts-enum",
|
||||
"key": "hosts",
|
||||
"label": "Hosts",
|
||||
"multiselection": true
|
||||
},
|
||||
{
|
||||
"key": "task_types",
|
||||
"label": "Task types",
|
||||
"type": "task-types-enum"
|
||||
},
|
||||
{
|
||||
"key": "tasks",
|
||||
"label": "Task names",
|
||||
"type": "list",
|
||||
"object_type": "text"
|
||||
},
|
||||
{
|
||||
"type": "separator"
|
||||
},
|
||||
{
|
||||
"type": "text",
|
||||
"key": "template",
|
||||
"label": "Template"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "label",
|
||||
"label": "<b>NOTE:</b> Publish template profiles settings were moved to <a href=\"settings://project_settings/global/tools/publish/template_name_profiles\"><b>Tools/Publish/Template name profiles</b></a>. Please move values there."
|
||||
},
|
||||
{
|
||||
"type": "list",
|
||||
"key": "template_name_profiles",
|
||||
"label": "Template name profiles (DEPRECATED)",
|
||||
"use_label_wrap": true,
|
||||
"object_type": {
|
||||
"type": "dict",
|
||||
"children": [
|
||||
{
|
||||
"type": "label",
|
||||
"label": ""
|
||||
},
|
||||
{
|
||||
"key": "families",
|
||||
"label": "Families",
|
||||
"type": "list",
|
||||
"object_type": "text"
|
||||
},
|
||||
{
|
||||
"type": "hosts-enum",
|
||||
"key": "hosts",
|
||||
"label": "Hosts",
|
||||
"multiselection": true
|
||||
},
|
||||
{
|
||||
"key": "task_types",
|
||||
"label": "Task types",
|
||||
"type": "task-types-enum"
|
||||
},
|
||||
{
|
||||
"key": "tasks",
|
||||
"label": "Task names",
|
||||
"type": "list",
|
||||
"object_type": "text"
|
||||
},
|
||||
{
|
||||
"type": "separator"
|
||||
},
|
||||
{
|
||||
"type": "text",
|
||||
"key": "template_name",
|
||||
"label": "Template name"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "dict",
|
||||
"collapsible": true,
|
||||
"key": "IntegrateAsset",
|
||||
"label": "Integrate Asset",
|
||||
"is_group": true,
|
||||
"children": [
|
||||
{
|
||||
"type": "list",
|
||||
"key": "skip_host_families",
|
||||
"label": "Skip hosts and families",
|
||||
"use_label_wrap": true,
|
||||
"object_type": {
|
||||
"type": "dict",
|
||||
"children": [
|
||||
{
|
||||
"type": "hosts-enum",
|
||||
"key": "host",
|
||||
"label": "Host"
|
||||
},
|
||||
{
|
||||
"type": "list",
|
||||
"key": "families",
|
||||
"label": "Families",
|
||||
"object_type": "text"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "dict",
|
||||
"collapsible": true,
|
||||
|
|
|
|||
|
|
@ -320,10 +320,6 @@
|
|||
"key": "publish",
|
||||
"label": "Publish",
|
||||
"children": [
|
||||
{
|
||||
"type": "label",
|
||||
"label": "<b>NOTE:</b> For backwards compatibility can be value empty and in that case are used values from <a href=\"settings://project_settings/global/publish/IntegrateAssetNew\"><b>IntegrateAssetNew</b></a>. This will change in future so please move all values here as soon as possible."
|
||||
},
|
||||
{
|
||||
"type": "list",
|
||||
"key": "template_name_profiles",
|
||||
|
|
|
|||
|
|
@ -128,8 +128,12 @@
|
|||
{
|
||||
"type": "collapsible-wrap",
|
||||
"label": "OpenPype deployment control",
|
||||
"collapsible": false,
|
||||
"collapsible": true,
|
||||
"children": [
|
||||
{
|
||||
"type": "label",
|
||||
"label": "Define location accessible by artist machine to check for zip updates with Openpype code."
|
||||
},
|
||||
{
|
||||
"type": "path",
|
||||
"key": "openpype_path",
|
||||
|
|
@ -138,6 +142,18 @@
|
|||
"multipath": true,
|
||||
"require_restart": true
|
||||
},
|
||||
{
|
||||
"type": "label",
|
||||
"label": "Define custom location for artist machine where to unzip versions of Openpype code. By default it is in user app data folder."
|
||||
},
|
||||
{
|
||||
"type": "path",
|
||||
"key": "local_openpype_path",
|
||||
"label": "Custom Local Versions Folder",
|
||||
"multiplatform": true,
|
||||
"multipath": false,
|
||||
"require_restart": true
|
||||
},
|
||||
{
|
||||
"type": "splitter"
|
||||
},
|
||||
|
|
|
|||
|
|
@ -7,10 +7,14 @@ from abc import ABCMeta, abstractmethod
|
|||
import six
|
||||
|
||||
import openpype.version
|
||||
from openpype.client.mongo import OpenPypeMongoConnection
|
||||
from openpype.client.entities import get_project_connection, get_project
|
||||
from openpype.client.mongo import (
|
||||
OpenPypeMongoConnection,
|
||||
get_project_connection,
|
||||
)
|
||||
from openpype.client.entities import get_project
|
||||
from openpype.lib.pype_info import get_workstation_info
|
||||
|
||||
|
||||
from .constants import (
|
||||
GLOBAL_SETTINGS_KEY,
|
||||
SYSTEM_SETTINGS_KEY,
|
||||
|
|
@ -185,6 +189,7 @@ class SettingsStateInfo:
|
|||
class SettingsHandler(object):
|
||||
global_keys = {
|
||||
"openpype_path",
|
||||
"local_openpype_path",
|
||||
"admin_password",
|
||||
"log_to_server",
|
||||
"disk_mapping",
|
||||
|
|
|
|||
|
|
@ -4,6 +4,9 @@ import functools
|
|||
import logging
|
||||
import platform
|
||||
import copy
|
||||
|
||||
from openpype import AYON_SERVER_ENABLED
|
||||
|
||||
from .exceptions import (
|
||||
SaveWarningExc
|
||||
)
|
||||
|
|
@ -18,6 +21,11 @@ from .constants import (
|
|||
DEFAULT_PROJECT_KEY
|
||||
)
|
||||
|
||||
from .ayon_settings import (
|
||||
get_ayon_project_settings,
|
||||
get_ayon_system_settings
|
||||
)
|
||||
|
||||
log = logging.getLogger(__name__)
|
||||
|
||||
# Py2 + Py3 json decode exception
|
||||
|
|
@ -40,36 +48,17 @@ _SETTINGS_HANDLER = None
|
|||
_LOCAL_SETTINGS_HANDLER = None
|
||||
|
||||
|
||||
def require_handler(func):
|
||||
@functools.wraps(func)
|
||||
def wrapper(*args, **kwargs):
|
||||
global _SETTINGS_HANDLER
|
||||
if _SETTINGS_HANDLER is None:
|
||||
_SETTINGS_HANDLER = create_settings_handler()
|
||||
return func(*args, **kwargs)
|
||||
return wrapper
|
||||
|
||||
|
||||
def require_local_handler(func):
|
||||
@functools.wraps(func)
|
||||
def wrapper(*args, **kwargs):
|
||||
global _LOCAL_SETTINGS_HANDLER
|
||||
if _LOCAL_SETTINGS_HANDLER is None:
|
||||
_LOCAL_SETTINGS_HANDLER = create_local_settings_handler()
|
||||
return func(*args, **kwargs)
|
||||
return wrapper
|
||||
|
||||
|
||||
def create_settings_handler():
|
||||
from .handlers import MongoSettingsHandler
|
||||
# Handler can't be created in global space on initialization but only when
|
||||
# needed. Plus here may be logic: Which handler is used (in future).
|
||||
return MongoSettingsHandler()
|
||||
|
||||
|
||||
def create_local_settings_handler():
|
||||
from .handlers import MongoLocalSettingsHandler
|
||||
return MongoLocalSettingsHandler()
|
||||
def clear_metadata_from_settings(values):
|
||||
"""Remove all metadata keys from loaded settings."""
|
||||
if isinstance(values, dict):
|
||||
for key in tuple(values.keys()):
|
||||
if key in METADATA_KEYS:
|
||||
values.pop(key)
|
||||
else:
|
||||
clear_metadata_from_settings(values[key])
|
||||
elif isinstance(values, list):
|
||||
for item in values:
|
||||
clear_metadata_from_settings(item)
|
||||
|
||||
|
||||
def calculate_changes(old_value, new_value):
|
||||
|
|
@ -91,6 +80,42 @@ def calculate_changes(old_value, new_value):
|
|||
return changes
|
||||
|
||||
|
||||
def create_settings_handler():
|
||||
if AYON_SERVER_ENABLED:
|
||||
raise RuntimeError("Mongo settings handler was triggered in AYON mode")
|
||||
from .handlers import MongoSettingsHandler
|
||||
# Handler can't be created in global space on initialization but only when
|
||||
# needed. Plus here may be logic: Which handler is used (in future).
|
||||
return MongoSettingsHandler()
|
||||
|
||||
|
||||
def create_local_settings_handler():
|
||||
if AYON_SERVER_ENABLED:
|
||||
raise RuntimeError("Mongo settings handler was triggered in AYON mode")
|
||||
from .handlers import MongoLocalSettingsHandler
|
||||
return MongoLocalSettingsHandler()
|
||||
|
||||
|
||||
def require_handler(func):
|
||||
@functools.wraps(func)
|
||||
def wrapper(*args, **kwargs):
|
||||
global _SETTINGS_HANDLER
|
||||
if _SETTINGS_HANDLER is None:
|
||||
_SETTINGS_HANDLER = create_settings_handler()
|
||||
return func(*args, **kwargs)
|
||||
return wrapper
|
||||
|
||||
|
||||
def require_local_handler(func):
|
||||
@functools.wraps(func)
|
||||
def wrapper(*args, **kwargs):
|
||||
global _LOCAL_SETTINGS_HANDLER
|
||||
if _LOCAL_SETTINGS_HANDLER is None:
|
||||
_LOCAL_SETTINGS_HANDLER = create_local_settings_handler()
|
||||
return func(*args, **kwargs)
|
||||
return wrapper
|
||||
|
||||
|
||||
@require_handler
|
||||
def get_system_last_saved_info():
|
||||
return _SETTINGS_HANDLER.get_system_last_saved_info()
|
||||
|
|
@ -494,10 +519,17 @@ def save_local_settings(data):
|
|||
|
||||
|
||||
@require_local_handler
|
||||
def get_local_settings():
|
||||
def _get_local_settings():
|
||||
return _LOCAL_SETTINGS_HANDLER.get_local_settings()
|
||||
|
||||
|
||||
def get_local_settings():
|
||||
if not AYON_SERVER_ENABLED:
|
||||
return _get_local_settings()
|
||||
# TODO implement ayon implementation
|
||||
return {}
|
||||
|
||||
|
||||
def load_openpype_default_settings():
|
||||
"""Load openpype default settings."""
|
||||
return load_jsons_from_dir(DEFAULTS_DIR)
|
||||
|
|
@ -890,7 +922,7 @@ def apply_local_settings_on_project_settings(
|
|||
sync_server_config["remote_site"] = remote_site
|
||||
|
||||
|
||||
def get_system_settings(clear_metadata=True, exclude_locals=None):
|
||||
def _get_system_settings(clear_metadata=True, exclude_locals=None):
|
||||
"""System settings with applied studio overrides."""
|
||||
default_values = get_default_settings()[SYSTEM_SETTINGS_KEY]
|
||||
studio_values = get_studio_system_settings_overrides()
|
||||
|
|
@ -992,7 +1024,7 @@ def get_anatomy_settings(
|
|||
return result
|
||||
|
||||
|
||||
def get_project_settings(
|
||||
def _get_project_settings(
|
||||
project_name, clear_metadata=True, exclude_locals=None
|
||||
):
|
||||
"""Project settings with applied studio and project overrides."""
|
||||
|
|
@ -1043,7 +1075,7 @@ def get_current_project_settings():
|
|||
|
||||
|
||||
@require_handler
|
||||
def get_global_settings():
|
||||
def _get_global_settings():
|
||||
default_settings = load_openpype_default_settings()
|
||||
default_values = default_settings["system_settings"]["general"]
|
||||
studio_values = _SETTINGS_HANDLER.get_global_settings()
|
||||
|
|
@ -1053,7 +1085,14 @@ def get_global_settings():
|
|||
}
|
||||
|
||||
|
||||
def get_general_environments():
|
||||
def get_global_settings():
|
||||
if not AYON_SERVER_ENABLED:
|
||||
return _get_global_settings()
|
||||
default_settings = load_openpype_default_settings()
|
||||
return default_settings["system_settings"]["general"]
|
||||
|
||||
|
||||
def _get_general_environments():
|
||||
"""Get general environments.
|
||||
|
||||
Function is implemented to be able load general environments without using
|
||||
|
|
@ -1082,14 +1121,24 @@ def get_general_environments():
|
|||
return environments
|
||||
|
||||
|
||||
def clear_metadata_from_settings(values):
|
||||
"""Remove all metadata keys from loaded settings."""
|
||||
if isinstance(values, dict):
|
||||
for key in tuple(values.keys()):
|
||||
if key in METADATA_KEYS:
|
||||
values.pop(key)
|
||||
else:
|
||||
clear_metadata_from_settings(values[key])
|
||||
elif isinstance(values, list):
|
||||
for item in values:
|
||||
clear_metadata_from_settings(item)
|
||||
def get_general_environments():
|
||||
if not AYON_SERVER_ENABLED:
|
||||
return _get_general_environments()
|
||||
value = get_system_settings()
|
||||
return value["general"]["environment"]
|
||||
|
||||
|
||||
def get_system_settings(*args, **kwargs):
|
||||
if not AYON_SERVER_ENABLED:
|
||||
return _get_system_settings(*args, **kwargs)
|
||||
|
||||
default_settings = get_default_settings()[SYSTEM_SETTINGS_KEY]
|
||||
return get_ayon_system_settings(default_settings)
|
||||
|
||||
|
||||
def get_project_settings(project_name, *args, **kwargs):
|
||||
if not AYON_SERVER_ENABLED:
|
||||
return _get_project_settings(project_name, *args, **kwargs)
|
||||
|
||||
default_settings = get_default_settings()[PROJECT_SETTINGS_KEY]
|
||||
return get_ayon_project_settings(default_settings, project_name)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue