Merge pull request #5291 from ynput/release/next-minor

This commit is contained in:
Jakub Ježek 2023-07-13 15:43:02 +03:00 committed by GitHub
commit a49b4265c6
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
896 changed files with 28458 additions and 20726 deletions

File diff suppressed because it is too large Load diff

View file

@ -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,

View file

@ -60,11 +60,6 @@
255,
255,
255
],
"families_to_review": [
"review",
"renderlayer",
"renderscene"
]
},
"ValidateProjectSettings": {

View file

@ -15,6 +15,11 @@
"darwin": [],
"linux": []
},
"local_openpype_path": {
"windows": "",
"darwin": "",
"linux": ""
},
"production_version": "",
"staging_version": "",
"version_check_interval": 5

View file

@ -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"}
]
}
]
},

View file

@ -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,

View file

@ -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",

View file

@ -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"
},

View file

@ -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",

View file

@ -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)