moved back settings lib functions and _SETTINGS_HANDLER is set with wrapper

This commit is contained in:
iLLiCiTiT 2020-12-11 17:28:32 +01:00
parent 1a89b125be
commit c6fbd47979
3 changed files with 89 additions and 34 deletions

View file

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

View file

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

View file

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