mirror of
https://github.com/ynput/ayon-core.git
synced 2025-12-24 21:04:40 +01:00
moved back settings lib functions and _SETTINGS_HANDLER is set with wrapper
This commit is contained in:
parent
1a89b125be
commit
c6fbd47979
3 changed files with 89 additions and 34 deletions
|
|
@ -1,5 +1,6 @@
|
|||
import os
|
||||
import json
|
||||
import functools
|
||||
import logging
|
||||
import copy
|
||||
from .constants import (
|
||||
|
|
@ -14,7 +15,8 @@ from .constants import (
|
|||
PROJECT_ANATOMY_KEY
|
||||
)
|
||||
from .handlers import (
|
||||
SettingsFileHandler
|
||||
SettingsFileHandler,
|
||||
MongoSettingsHandler
|
||||
)
|
||||
|
||||
log = logging.getLogger(__name__)
|
||||
|
|
@ -33,7 +35,62 @@ DEFAULTS_DIR = os.path.join(
|
|||
_DEFAULT_SETTINGS = None
|
||||
|
||||
# Handler of studio overrides
|
||||
SETTINGS_HANDLER = SettingsFileHandler()
|
||||
_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 create_settings_handler():
|
||||
# This may be logic which handler is used (in future)
|
||||
return MongoSettingsHandler()
|
||||
|
||||
|
||||
@require_handler
|
||||
def save_studio_settings(data):
|
||||
_SETTINGS_HANDLER.save_studio_settings(data)
|
||||
|
||||
|
||||
@require_handler
|
||||
def save_project_settings(project_name, overrides):
|
||||
_SETTINGS_HANDLER.save_project_settings(project_name, overrides)
|
||||
|
||||
|
||||
@require_handler
|
||||
def save_project_anatomy(project_name, anatomy_data):
|
||||
_SETTINGS_HANDLER.save_project_anatomy(project_name, anatomy_data)
|
||||
|
||||
|
||||
@require_handler
|
||||
def get_studio_system_settings_overrides():
|
||||
_SETTINGS_HANDLER.get_studio_system_settings_overrides()
|
||||
|
||||
|
||||
@require_handler
|
||||
def get_studio_project_settings_overrides():
|
||||
_SETTINGS_HANDLER.get_studio_project_settings_overrides()
|
||||
|
||||
|
||||
@require_handler
|
||||
def get_studio_project_anatomy_overrides():
|
||||
_SETTINGS_HANDLER.get_studio_project_anatomy_overrides()
|
||||
|
||||
|
||||
@require_handler
|
||||
def get_project_settings_overrides(project_name):
|
||||
_SETTINGS_HANDLER.get_project_settings_overrides(project_name)
|
||||
|
||||
|
||||
@require_handler
|
||||
def get_project_anatomy_overrides(project_name):
|
||||
_SETTINGS_HANDLER.get_project_anatomy_overrides(project_name)
|
||||
|
||||
|
||||
class DuplicatedEnvGroups(Exception):
|
||||
|
|
@ -259,7 +316,7 @@ def apply_overrides(source_data, override_data):
|
|||
def get_system_settings(clear_metadata=True):
|
||||
"""System settings with applied studio overrides."""
|
||||
default_values = get_default_settings()[SYSTEM_SETTINGS_KEY]
|
||||
studio_values = SETTINGS_HANDLER.get_studio_system_settings_overrides()
|
||||
studio_values = get_studio_system_settings_overrides()
|
||||
result = apply_overrides(default_values, studio_values)
|
||||
if clear_metadata:
|
||||
clear_metadata_from_settings(result)
|
||||
|
|
@ -269,7 +326,7 @@ def get_system_settings(clear_metadata=True):
|
|||
def get_default_project_settings(clear_metadata=True):
|
||||
"""Project settings with applied studio's default project overrides."""
|
||||
default_values = get_default_settings()[PROJECT_SETTINGS_KEY]
|
||||
studio_values = SETTINGS_HANDLER.get_studio_project_settings_overrides()
|
||||
studio_values = get_studio_project_settings_overrides()
|
||||
result = apply_overrides(default_values, studio_values)
|
||||
if clear_metadata:
|
||||
clear_metadata_from_settings(result)
|
||||
|
|
@ -279,7 +336,7 @@ def get_default_project_settings(clear_metadata=True):
|
|||
def get_default_anatomy_settings(clear_metadata=True):
|
||||
"""Project anatomy data with applied studio's default project overrides."""
|
||||
default_values = get_default_settings()[PROJECT_ANATOMY_KEY]
|
||||
studio_values = SETTINGS_HANDLER.get_studio_project_anatomy_overrides()
|
||||
studio_values = get_studio_project_anatomy_overrides()
|
||||
result = apply_overrides(default_values, studio_values)
|
||||
if clear_metadata:
|
||||
clear_metadata_from_settings(result)
|
||||
|
|
@ -295,7 +352,7 @@ def get_anatomy_settings(project_name, clear_metadata=True):
|
|||
)
|
||||
|
||||
studio_overrides = get_default_anatomy_settings(False)
|
||||
project_overrides = SETTINGS_HANDLER.get_project_anatomy_overrides(
|
||||
project_overrides = get_project_anatomy_overrides(
|
||||
project_name
|
||||
)
|
||||
|
||||
|
|
@ -314,7 +371,7 @@ def get_project_settings(project_name, clear_metadata=True):
|
|||
)
|
||||
|
||||
studio_overrides = get_default_project_settings(False)
|
||||
project_overrides = SETTINGS_HANDLER.get_project_settings_overrides(
|
||||
project_overrides = get_project_settings_overrides(
|
||||
project_name
|
||||
)
|
||||
|
||||
|
|
|
|||
|
|
@ -7,13 +7,24 @@ from pype.settings.constants import (
|
|||
PROJECT_SETTINGS_KEY,
|
||||
PROJECT_ANATOMY_KEY
|
||||
)
|
||||
|
||||
from pype.settings.lib import (
|
||||
DEFAULTS_DIR,
|
||||
SETTINGS_HANDLER,
|
||||
|
||||
reset_default_settings,
|
||||
get_default_settings,
|
||||
|
||||
get_studio_system_settings_overrides,
|
||||
get_studio_project_settings_overrides,
|
||||
get_studio_project_anatomy_overrides,
|
||||
|
||||
get_project_settings_overrides,
|
||||
get_project_anatomy_overrides,
|
||||
|
||||
save_studio_settings,
|
||||
save_project_settings,
|
||||
save_project_anatomy,
|
||||
|
||||
apply_overrides,
|
||||
find_environments,
|
||||
DuplicatedEnvGroups
|
||||
|
|
@ -360,7 +371,7 @@ class SystemWidget(SettingsCategoryWidget):
|
|||
if not self.duplicated_env_group_validation(overrides=values):
|
||||
return
|
||||
|
||||
SETTINGS_HANDLER.save_studio_settings(values)
|
||||
save_studio_settings(values)
|
||||
|
||||
def update_values(self):
|
||||
default_values = lib.convert_data_to_gui_data({
|
||||
|
|
@ -372,11 +383,8 @@ class SystemWidget(SettingsCategoryWidget):
|
|||
if self._hide_studio_overrides:
|
||||
system_values = lib.NOT_SET
|
||||
else:
|
||||
studio_system_overrides = (
|
||||
SETTINGS_HANDLER.get_studio_system_settings_overrides()
|
||||
)
|
||||
system_values = lib.convert_overrides_to_gui_data(
|
||||
{self.main_schema_key: studio_system_overrides}
|
||||
{self.main_schema_key: get_studio_system_settings_overrides()}
|
||||
)
|
||||
|
||||
for input_field in self.input_fields:
|
||||
|
|
@ -540,12 +548,8 @@ class ProjectWidget(SettingsCategoryWidget):
|
|||
_project_anatomy = lib.NOT_SET
|
||||
self.is_overidable = False
|
||||
else:
|
||||
_project_overrides = (
|
||||
SETTINGS_HANDLER.get_project_settings_overrides(project_name)
|
||||
)
|
||||
_project_anatomy = (
|
||||
SETTINGS_HANDLER.get_project_anatomy_overrides(project_name)
|
||||
)
|
||||
_project_overrides = get_project_settings_overrides(project_name)
|
||||
_project_anatomy = get_project_anatomy_overrides(project_name)
|
||||
self.is_overidable = True
|
||||
|
||||
overrides = {self.main_schema_key: {
|
||||
|
|
@ -579,15 +583,11 @@ class ProjectWidget(SettingsCategoryWidget):
|
|||
|
||||
# Saving overrides data
|
||||
project_overrides_data = output_data.get(PROJECT_SETTINGS_KEY, {})
|
||||
SETTINGS_HANDLER.save_project_settings(
|
||||
self.project_name, project_overrides_data
|
||||
)
|
||||
save_project_settings(self.project_name, project_overrides_data)
|
||||
|
||||
# Saving anatomy data
|
||||
project_anatomy_data = output_data.get(PROJECT_ANATOMY_KEY, {})
|
||||
SETTINGS_HANDLER.save_project_anatomy(
|
||||
self.project_name, project_anatomy_data
|
||||
)
|
||||
save_project_anatomy(self.project_name, project_anatomy_data)
|
||||
|
||||
def update_values(self):
|
||||
if self.project_name is not None:
|
||||
|
|
@ -603,16 +603,14 @@ class ProjectWidget(SettingsCategoryWidget):
|
|||
if self._hide_studio_overrides:
|
||||
studio_values = lib.NOT_SET
|
||||
else:
|
||||
project_settings_value = (
|
||||
SETTINGS_HANDLER.get_studio_project_settings_overrides()
|
||||
)
|
||||
project_anatomy_value = (
|
||||
SETTINGS_HANDLER.get_studio_project_anatomy_overrides()
|
||||
)
|
||||
studio_values = lib.convert_overrides_to_gui_data({
|
||||
self.main_schema_key: {
|
||||
PROJECT_SETTINGS_KEY: project_settings_value,
|
||||
PROJECT_ANATOMY_KEY: project_anatomy_value
|
||||
PROJECT_SETTINGS_KEY: (
|
||||
get_studio_project_settings_overrides()
|
||||
),
|
||||
PROJECT_ANATOMY_KEY: (
|
||||
get_studio_project_anatomy_overrides()
|
||||
)
|
||||
}
|
||||
})
|
||||
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@ import os
|
|||
import re
|
||||
import json
|
||||
import copy
|
||||
from pype.settings.lib import (
|
||||
from pype.settings.constants import (
|
||||
M_OVERRIDEN_KEY,
|
||||
M_ENVIRONMENT_KEY,
|
||||
M_DYNAMIC_KEY_LABEL
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue