mirror of
https://github.com/ynput/ayon-core.git
synced 2025-12-24 21:04:40 +01:00
implemented method to apply global settings on system settings
This commit is contained in:
parent
8aadce7af5
commit
f9bd38fa00
1 changed files with 71 additions and 0 deletions
|
|
@ -248,6 +248,77 @@ class MongoSettingsHandler(SettingsHandler):
|
|||
general_data[M_OVERRIDEN_KEY].remove(key)
|
||||
return output
|
||||
|
||||
def _apply_global_settings(
|
||||
self, system_settings_document, globals_document
|
||||
):
|
||||
"""Apply global settings data to system settings.
|
||||
|
||||
Applification is skipped if document with global settings is not
|
||||
available or does not have set data in.
|
||||
|
||||
System settings document is "faked" like it exists if global document
|
||||
has set values.
|
||||
|
||||
Args:
|
||||
system_settings_document (dict): System settings document from
|
||||
MongoDB.
|
||||
globals_document (dict): Global settings document from MongoDB.
|
||||
|
||||
Returns:
|
||||
Merged document which has applied global settings data.
|
||||
"""
|
||||
# Skip if globals document is not available
|
||||
if (
|
||||
not globals_document
|
||||
or "data" not in globals_document
|
||||
or not globals_document["data"]
|
||||
):
|
||||
return system_settings_document
|
||||
|
||||
globals_data = globals_document["data"]
|
||||
# Check if data contain any key from predefined keys
|
||||
any_key_found = False
|
||||
if globals_data:
|
||||
for key in self.global_general_keys:
|
||||
if key in globals_data:
|
||||
any_key_found = True
|
||||
break
|
||||
|
||||
# Skip if any key from predefined key was not found in globals
|
||||
if not any_key_found:
|
||||
return system_settings_document
|
||||
|
||||
# "Fake" system settings document if document does not exist
|
||||
# - global settings document may exist but system settings not yet
|
||||
if not system_settings_document:
|
||||
system_settings_document = {}
|
||||
|
||||
if "data" in system_settings_document:
|
||||
system_settings_data = system_settings_document["data"]
|
||||
else:
|
||||
system_settings_data = {}
|
||||
system_settings_document["data"] = system_settings_data
|
||||
|
||||
if "general" in system_settings_data:
|
||||
system_general = system_settings_data["general"]
|
||||
else:
|
||||
system_general = {}
|
||||
system_settings_data["general"] = system_general
|
||||
|
||||
overriden_keys = system_general.get(M_OVERRIDEN_KEY) or []
|
||||
for key in self.global_general_keys:
|
||||
if key not in globals_data:
|
||||
continue
|
||||
|
||||
system_general[key] = globals_data[key]
|
||||
if key not in overriden_keys:
|
||||
overriden_keys.append(key)
|
||||
|
||||
if overriden_keys:
|
||||
system_general[M_OVERRIDEN_KEY] = overriden_keys
|
||||
|
||||
return system_settings_document
|
||||
|
||||
def save_studio_settings(self, data):
|
||||
"""Save studio overrides of system settings.
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue