mirror of
https://github.com/ynput/ayon-core.git
synced 2025-12-25 13:24:54 +01:00
added validation of duplicated environemnt groupts to system settings
This commit is contained in:
parent
8494fd55e6
commit
4b1908be10
1 changed files with 40 additions and 1 deletions
|
|
@ -1,4 +1,5 @@
|
|||
import os
|
||||
import copy
|
||||
import json
|
||||
from Qt import QtWidgets, QtCore, QtGui
|
||||
from pype.settings.lib import (
|
||||
|
|
@ -22,7 +23,11 @@ from pype.settings.lib import (
|
|||
project_anatomy_overrides,
|
||||
|
||||
path_to_project_overrides,
|
||||
path_to_project_anatomy
|
||||
path_to_project_anatomy,
|
||||
|
||||
apply_overrides,
|
||||
find_environments,
|
||||
DuplicatedEnvGroups
|
||||
)
|
||||
from .widgets import UnsavedChangesDialog
|
||||
from . import lib
|
||||
|
|
@ -177,6 +182,34 @@ class SystemWidget(QtWidgets.QWidget):
|
|||
first_invalid_item.setFocus(True)
|
||||
return False
|
||||
|
||||
def duplicated_env_group_validation(self, values=None, overrides=None):
|
||||
try:
|
||||
if overrides is not None:
|
||||
default_values = default_settings()[SYSTEM_SETTINGS_KEY]
|
||||
values = apply_overrides(default_values, overrides)
|
||||
else:
|
||||
values = copy.deepcopy(values)
|
||||
|
||||
# Check if values contain duplicated environment groups
|
||||
find_environments(values)
|
||||
|
||||
except DuplicatedEnvGroups as exc:
|
||||
msg = "You have set same environment group key in multiple places."
|
||||
for key, hierarchies in exc.duplicated.items():
|
||||
msg += "\nEnvironment group \"{}\":".format(key)
|
||||
for hierarchy in hierarchies:
|
||||
msg += "\n- {}".format(hierarchy)
|
||||
|
||||
msg_box = QtWidgets.QMessageBox(
|
||||
QtWidgets.QMessageBox.Warning,
|
||||
"Duplicated environment groups",
|
||||
msg
|
||||
)
|
||||
msg_box.setStandardButtons(QtWidgets.QMessageBox.Ok)
|
||||
msg_box.exec_()
|
||||
return False
|
||||
return True
|
||||
|
||||
def _save(self):
|
||||
if not self.items_are_valid():
|
||||
return
|
||||
|
|
@ -189,6 +222,9 @@ class SystemWidget(QtWidgets.QWidget):
|
|||
|
||||
values = lib.convert_gui_data_to_overrides(_data.get("system", {}))
|
||||
|
||||
if not self.duplicated_env_group_validation(overrides=values):
|
||||
return
|
||||
|
||||
dirpath = os.path.dirname(SYSTEM_SETTINGS_PATH)
|
||||
if not os.path.exists(dirpath):
|
||||
os.makedirs(dirpath)
|
||||
|
|
@ -230,6 +266,9 @@ class SystemWidget(QtWidgets.QWidget):
|
|||
# Skip first key
|
||||
all_values = lib.convert_gui_data_with_metadata(all_values["system"])
|
||||
|
||||
if not self.duplicated_env_group_validation(all_values):
|
||||
return
|
||||
|
||||
prject_defaults_dir = os.path.join(
|
||||
DEFAULTS_DIR, SYSTEM_SETTINGS_KEY
|
||||
)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue