mirror of
https://github.com/ynput/ayon-core.git
synced 2026-01-02 17:04:54 +01:00
defaults must be set to be able to change any overrides
This commit is contained in:
parent
8abc15e341
commit
73f441abc4
4 changed files with 79 additions and 4 deletions
|
|
@ -418,7 +418,7 @@ class RootEntity(BaseEntity):
|
|||
value = studio_overrides.get(key, NOT_SET)
|
||||
child_obj.update_studio_values(value)
|
||||
|
||||
self.set_override_state(self.override_state)
|
||||
self.set_override_state(OverrideState.STUDIO)
|
||||
|
||||
def __getitem__(self, key):
|
||||
return self.non_gui_children[key]
|
||||
|
|
|
|||
|
|
@ -1,6 +1,9 @@
|
|||
import copy
|
||||
from .item_entities import ItemEntity
|
||||
from .lib import NOT_SET
|
||||
from .lib import (
|
||||
NOT_SET,
|
||||
DefaultsNotDefined
|
||||
)
|
||||
from .constants import (
|
||||
OverrideState,
|
||||
METADATA_KEYS,
|
||||
|
|
@ -169,6 +172,11 @@ class InputEntity(ItemEntity):
|
|||
|
||||
def set_override_state(self, state):
|
||||
self.override_state = state
|
||||
if (
|
||||
not self.has_default_value
|
||||
and state in (OverrideState.STUDIO, OverrideState.PROJECT)
|
||||
):
|
||||
raise DefaultsNotDefined(self)
|
||||
|
||||
if state is OverrideState.STUDIO:
|
||||
self.has_studio_override = (
|
||||
|
|
@ -357,6 +365,11 @@ class RawJsonEntity(InputEntity):
|
|||
|
||||
def set_override_state(self, state):
|
||||
self.override_state = state
|
||||
if (
|
||||
not self.has_default_value
|
||||
and state in (OverrideState.STUDIO, OverrideState.PROJECT)
|
||||
):
|
||||
raise DefaultsNotDefined(self)
|
||||
|
||||
if state is OverrideState.STUDIO:
|
||||
self.has_studio_override = (
|
||||
|
|
@ -404,6 +417,7 @@ class RawJsonEntity(InputEntity):
|
|||
return value, metadata
|
||||
|
||||
def update_default_value(self, value):
|
||||
self.has_default_value = value is not NOT_SET
|
||||
value, metadata = self._prepare_value(value)
|
||||
self.default_value = value
|
||||
self.default_metadata = metadata
|
||||
|
|
|
|||
|
|
@ -1,7 +1,10 @@
|
|||
import copy
|
||||
from abc import abstractmethod
|
||||
|
||||
from .lib import NOT_SET
|
||||
from .lib import (
|
||||
NOT_SET,
|
||||
DefaultsNotDefined
|
||||
)
|
||||
from .constants import (
|
||||
OverrideState,
|
||||
WRAPPER_TYPES,
|
||||
|
|
@ -319,7 +322,13 @@ class DictImmutableKeysEntity(ItemEntity):
|
|||
def set_override_state(self, state):
|
||||
# Change has/had override states
|
||||
self.override_state = state
|
||||
if state is OverrideState.STUDIO:
|
||||
if state is OverrideState.NOT_DEFINED:
|
||||
pass
|
||||
|
||||
elif state is OverrideState.DEFAULTS:
|
||||
self.has_default_value = self.default_value is not NOT_SET
|
||||
|
||||
elif state is OverrideState.STUDIO:
|
||||
if self.studio_override_metadata is NOT_SET:
|
||||
self.had_studio_override = False
|
||||
self.has_studio_override = self.had_studio_override
|
||||
|
|
@ -671,6 +680,12 @@ class DictMutableKeysEntity(ItemEntity):
|
|||
def set_override_state(self, state):
|
||||
# TODO change metadata
|
||||
self.override_state = state
|
||||
if (
|
||||
not self.has_default_value
|
||||
and state in (OverrideState.STUDIO, OverrideState.PROJECT)
|
||||
):
|
||||
raise DefaultsNotDefined(self)
|
||||
|
||||
using_overrides = True
|
||||
if (
|
||||
state is OverrideState.PROJECT
|
||||
|
|
@ -870,6 +885,38 @@ class ListEntity(ItemEntity):
|
|||
raise NotImplementedError(self.__class__.__name__)
|
||||
|
||||
def set_override_state(self, state):
|
||||
self.override_state = state
|
||||
if (
|
||||
not self.has_default_value
|
||||
and state in (OverrideState.STUDIO, OverrideState.PROJECT)
|
||||
):
|
||||
raise DefaultsNotDefined(self)
|
||||
|
||||
while self.children:
|
||||
self.children.pop(0)
|
||||
|
||||
if self.override_state is OverrideState.NOT_DEFINED:
|
||||
return
|
||||
|
||||
if self.override_state is OverrideState.PROJECT:
|
||||
value = self.project_override_value
|
||||
if value is NOT_SET:
|
||||
value = self.studio_override_value
|
||||
if value is NOT_SET:
|
||||
value = self.default_value
|
||||
|
||||
elif self.override_state is OverrideState.STUDIO:
|
||||
value = self.studio_override_value
|
||||
if value is NOT_SET:
|
||||
value = self.default_value
|
||||
|
||||
elif self.override_state is OverrideState.DEFAULTS:
|
||||
value = self.default_value
|
||||
|
||||
if value is NOT_SET:
|
||||
self.has_default_value = False
|
||||
value = self.value_on_not_set
|
||||
|
||||
for child_obj in self.children:
|
||||
child_obj.set_override_state(state)
|
||||
|
||||
|
|
@ -1140,6 +1187,8 @@ class ListStrictEntity(ItemEntity):
|
|||
|
||||
# GUI attribute
|
||||
self.is_horizontal = self.schema_data.get("horizontal", True)
|
||||
if not self.group_item and not self.is_group:
|
||||
self.is_group = True
|
||||
|
||||
def get_child_path(self, child_obj):
|
||||
result_idx = None
|
||||
|
|
@ -1160,6 +1209,12 @@ class ListStrictEntity(ItemEntity):
|
|||
def set_override_state(self, state):
|
||||
# TODO use right value as current_value is held here
|
||||
self.override_state = state
|
||||
if (
|
||||
not self.has_default_value
|
||||
and state in (OverrideState.STUDIO, OverrideState.PROJECT)
|
||||
):
|
||||
raise DefaultsNotDefined(self)
|
||||
|
||||
for child_obj in self.children:
|
||||
child_obj.set_override_state(state)
|
||||
|
||||
|
|
|
|||
|
|
@ -10,6 +10,12 @@ from .constants import (
|
|||
from queue import Queue
|
||||
|
||||
|
||||
class DefaultsNotDefined(Exception):
|
||||
def __init__(self, obj):
|
||||
msg = "Default values for object are not set. {}".format(obj.path)
|
||||
super(DefaultsNotDefined, self).__init__(msg)
|
||||
|
||||
|
||||
# Singleton database of available inputs
|
||||
class TypeToKlass:
|
||||
types = {}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue