mirror of
https://github.com/ynput/ayon-core.git
synced 2025-12-25 13:24:54 +01:00
added argument ignore_missing_defaults to set_override_state method
This commit is contained in:
parent
0e0e527741
commit
d58c8f1a11
8 changed files with 59 additions and 23 deletions
|
|
@ -280,7 +280,7 @@ class BaseItemEntity(BaseEntity):
|
|||
)
|
||||
|
||||
@abstractmethod
|
||||
def set_override_state(self, state):
|
||||
def set_override_state(self, state, ignore_missing_defaults):
|
||||
"""Set override state and trigger it on children.
|
||||
|
||||
Method discard all changes in hierarchy and use values, metadata
|
||||
|
|
@ -290,8 +290,15 @@ class BaseItemEntity(BaseEntity):
|
|||
Should start on root entity and when triggered then must be called on
|
||||
all entities in hierarchy.
|
||||
|
||||
Argument `ignore_missing_defaults` should be used when entity has
|
||||
children that are not saved or used all the time but override statu
|
||||
must be changed and children must have any default value.
|
||||
|
||||
Args:
|
||||
state (OverrideState): State to which should be data changed.
|
||||
ignore_missing_defaults (bool): Ignore missing default values.
|
||||
Entity won't raise `DefaultsNotDefined` and
|
||||
`StudioDefaultsNotDefined`.
|
||||
"""
|
||||
pass
|
||||
|
||||
|
|
|
|||
|
|
@ -377,7 +377,7 @@ class DictConditionalEntity(ItemEntity):
|
|||
self._metadata_are_modified = current_metadata != metadata
|
||||
self._current_metadata = current_metadata
|
||||
|
||||
def set_override_state(self, state):
|
||||
def set_override_state(self, state, ignore_missing_defaults):
|
||||
# Trigger override state change of root if is not same
|
||||
if self.root_item.override_state is not state:
|
||||
self.root_item.set_override_state(state)
|
||||
|
|
|
|||
|
|
@ -258,7 +258,7 @@ class DictImmutableKeysEntity(ItemEntity):
|
|||
self._metadata_are_modified = current_metadata != metadata
|
||||
self._current_metadata = current_metadata
|
||||
|
||||
def set_override_state(self, state):
|
||||
def set_override_state(self, state, ignore_missing_defaults):
|
||||
# Trigger override state change of root if is not same
|
||||
if self.root_item.override_state is not state:
|
||||
self.root_item.set_override_state(state)
|
||||
|
|
@ -268,7 +268,7 @@ class DictImmutableKeysEntity(ItemEntity):
|
|||
self._override_state = state
|
||||
|
||||
for child_obj in self.non_gui_children.values():
|
||||
child_obj.set_override_state(state)
|
||||
child_obj.set_override_state(state, ignore_missing_defaults)
|
||||
|
||||
self._update_current_metadata()
|
||||
|
||||
|
|
|
|||
|
|
@ -320,7 +320,7 @@ class DictMutableKeysEntity(EndpointEntity):
|
|||
def _metadata_for_current_state(self):
|
||||
return self._get_metadata_for_state(self._override_state)
|
||||
|
||||
def set_override_state(self, state):
|
||||
def set_override_state(self, state, ignore_missing_defaults):
|
||||
# Trigger override state change of root if is not same
|
||||
if self.root_item.override_state is not state:
|
||||
self.root_item.set_override_state(state)
|
||||
|
|
@ -331,11 +331,17 @@ class DictMutableKeysEntity(EndpointEntity):
|
|||
# Ignore if is dynamic item and use default in that case
|
||||
if not self.is_dynamic_item and not self.is_in_dynamic_item:
|
||||
if state > OverrideState.DEFAULTS:
|
||||
if not self.has_default_value:
|
||||
if (
|
||||
not self.has_default_value
|
||||
and not ignore_missing_defaults
|
||||
):
|
||||
raise DefaultsNotDefined(self)
|
||||
|
||||
elif state > OverrideState.STUDIO:
|
||||
if not self.had_studio_override:
|
||||
if (
|
||||
not self.had_studio_override
|
||||
and not ignore_missing_defaults
|
||||
):
|
||||
raise StudioDefaultsNotDefined(self)
|
||||
|
||||
if state is OverrideState.STUDIO:
|
||||
|
|
@ -426,7 +432,7 @@ class DictMutableKeysEntity(EndpointEntity):
|
|||
|
||||
if label:
|
||||
children_label_by_id[child_entity.id] = label
|
||||
child_entity.set_override_state(state)
|
||||
child_entity.set_override_state(state, ignore_missing_defaults)
|
||||
|
||||
self.children_label_by_id = children_label_by_id
|
||||
|
||||
|
|
|
|||
|
|
@ -217,7 +217,7 @@ class InputEntity(EndpointEntity):
|
|||
return True
|
||||
return False
|
||||
|
||||
def set_override_state(self, state):
|
||||
def set_override_state(self, state, ignore_missing_defaults):
|
||||
# Trigger override state change of root if is not same
|
||||
if self.root_item.override_state is not state:
|
||||
self.root_item.set_override_state(state)
|
||||
|
|
@ -227,11 +227,17 @@ class InputEntity(EndpointEntity):
|
|||
# Ignore if is dynamic item and use default in that case
|
||||
if not self.is_dynamic_item and not self.is_in_dynamic_item:
|
||||
if state > OverrideState.DEFAULTS:
|
||||
if not self.has_default_value:
|
||||
if (
|
||||
not self.has_default_value
|
||||
and not ignore_missing_defaults
|
||||
):
|
||||
raise DefaultsNotDefined(self)
|
||||
|
||||
elif state > OverrideState.STUDIO:
|
||||
if not self.had_studio_override:
|
||||
if (
|
||||
not self.had_studio_override
|
||||
and not ignore_missing_defaults
|
||||
):
|
||||
raise StudioDefaultsNotDefined(self)
|
||||
|
||||
if state is OverrideState.STUDIO:
|
||||
|
|
|
|||
|
|
@ -150,14 +150,14 @@ class PathEntity(ItemEntity):
|
|||
def value(self):
|
||||
return self.child_obj.value
|
||||
|
||||
def set_override_state(self, state):
|
||||
def set_override_state(self, state, ignore_missing_defaults):
|
||||
# Trigger override state change of root if is not same
|
||||
if self.root_item.override_state is not state:
|
||||
self.root_item.set_override_state(state)
|
||||
return
|
||||
|
||||
self._override_state = state
|
||||
self.child_obj.set_override_state(state)
|
||||
self.child_obj.set_override_state(state, ignore_missing_defaults)
|
||||
|
||||
def update_default_value(self, value):
|
||||
self.child_obj.update_default_value(value)
|
||||
|
|
@ -344,7 +344,7 @@ class ListStrictEntity(ItemEntity):
|
|||
return True
|
||||
return False
|
||||
|
||||
def set_override_state(self, state):
|
||||
def set_override_state(self, state, ignore_missing_defaults):
|
||||
# Trigger override state change of root if is not same
|
||||
if self.root_item.override_state is not state:
|
||||
self.root_item.set_override_state(state)
|
||||
|
|
@ -354,15 +354,21 @@ class ListStrictEntity(ItemEntity):
|
|||
# Ignore if is dynamic item and use default in that case
|
||||
if not self.is_dynamic_item and not self.is_in_dynamic_item:
|
||||
if state > OverrideState.DEFAULTS:
|
||||
if not self.has_default_value:
|
||||
if (
|
||||
not self.has_default_value
|
||||
and not ignore_missing_defaults
|
||||
):
|
||||
raise DefaultsNotDefined(self)
|
||||
|
||||
elif state > OverrideState.STUDIO:
|
||||
if not self.had_studio_override:
|
||||
if (
|
||||
not self.had_studio_override
|
||||
and not ignore_missing_defaults
|
||||
):
|
||||
raise StudioDefaultsNotDefined(self)
|
||||
|
||||
for child_entity in self.children:
|
||||
child_entity.set_override_state(state)
|
||||
child_entity.set_override_state(state, ignore_missing_defaults)
|
||||
|
||||
self.initial_value = self.settings_value()
|
||||
|
||||
|
|
|
|||
|
|
@ -205,7 +205,7 @@ class ListEntity(EndpointEntity):
|
|||
self._has_project_override = True
|
||||
self.on_change()
|
||||
|
||||
def set_override_state(self, state):
|
||||
def set_override_state(self, state, ignore_missing_defaults):
|
||||
# Trigger override state change of root if is not same
|
||||
if self.root_item.override_state is not state:
|
||||
self.root_item.set_override_state(state)
|
||||
|
|
@ -219,11 +219,17 @@ class ListEntity(EndpointEntity):
|
|||
# Ignore if is dynamic item and use default in that case
|
||||
if not self.is_dynamic_item and not self.is_in_dynamic_item:
|
||||
if state > OverrideState.DEFAULTS:
|
||||
if not self.has_default_value:
|
||||
if (
|
||||
not self.has_default_value
|
||||
and not ignore_missing_defaults
|
||||
):
|
||||
raise DefaultsNotDefined(self)
|
||||
|
||||
elif state > OverrideState.STUDIO:
|
||||
if not self.had_studio_override:
|
||||
if (
|
||||
not self.had_studio_override
|
||||
and not ignore_missing_defaults
|
||||
):
|
||||
raise StudioDefaultsNotDefined(self)
|
||||
|
||||
value = NOT_SET
|
||||
|
|
@ -257,7 +263,9 @@ class ListEntity(EndpointEntity):
|
|||
child_obj.update_studio_value(item)
|
||||
|
||||
for child_obj in self.children:
|
||||
child_obj.set_override_state(self._override_state)
|
||||
child_obj.set_override_state(
|
||||
self._override_state, ignore_missing_defaults
|
||||
)
|
||||
|
||||
self.initial_value = self.settings_value()
|
||||
|
||||
|
|
|
|||
|
|
@ -218,7 +218,7 @@ class RootEntity(BaseItemEntity):
|
|||
schema_data, *args, **kwargs
|
||||
)
|
||||
|
||||
def set_override_state(self, state):
|
||||
def set_override_state(self, state, ignore_missing_defaults=None):
|
||||
"""Set override state and trigger it on children.
|
||||
|
||||
Method will discard all changes in hierarchy and use values, metadata
|
||||
|
|
@ -227,9 +227,12 @@ class RootEntity(BaseItemEntity):
|
|||
Args:
|
||||
state (OverrideState): State to which should be data changed.
|
||||
"""
|
||||
if not ignore_missing_defaults:
|
||||
ignore_missing_defaults = False
|
||||
|
||||
self._override_state = state
|
||||
for child_obj in self.non_gui_children.values():
|
||||
child_obj.set_override_state(state)
|
||||
child_obj.set_override_state(state, ignore_missing_defaults)
|
||||
|
||||
def on_change(self):
|
||||
"""Trigger callbacks on change."""
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue