mirror of
https://github.com/ynput/ayon-core.git
synced 2026-01-02 00:44:52 +01:00
added method which collects dynamic schema entities
This commit is contained in:
parent
eaa1499510
commit
f65dee0a0e
7 changed files with 64 additions and 2 deletions
|
|
@ -476,7 +476,15 @@ class BaseItemEntity(BaseEntity):
|
|||
|
||||
@abstractmethod
|
||||
def settings_value(self):
|
||||
"""Value of an item without key."""
|
||||
"""Value of an item without key without dynamic items."""
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
def collect_dynamic_schema_entities(self):
|
||||
"""Collect entities that are on top of dynamically added schemas.
|
||||
|
||||
This method make sence only when defaults are saved.
|
||||
"""
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
|
|
@ -905,6 +913,18 @@ class ItemEntity(BaseItemEntity):
|
|||
def root_key(self):
|
||||
return self.root_item.root_key
|
||||
|
||||
@abstractmethod
|
||||
def collect_dynamic_schema_entities(self, collector):
|
||||
"""Collect entities that are on top of dynamically added schemas.
|
||||
|
||||
This method make sence only when defaults are saved.
|
||||
|
||||
Args:
|
||||
collector(DynamicSchemaValueCollector): Object where dynamic
|
||||
entities are stored.
|
||||
"""
|
||||
pass
|
||||
|
||||
def schema_validations(self):
|
||||
if not self.label and self.use_label_wrap:
|
||||
reason = (
|
||||
|
|
|
|||
|
|
@ -455,6 +455,10 @@ class DictConditionalEntity(ItemEntity):
|
|||
return True
|
||||
return False
|
||||
|
||||
def collect_dynamic_schema_entities(self, collector):
|
||||
if self.is_dynamic_schema_node:
|
||||
collector.add_entity(self)
|
||||
|
||||
def settings_value(self):
|
||||
if self._override_state is OverrideState.NOT_DEFINED:
|
||||
return NOT_SET
|
||||
|
|
|
|||
|
|
@ -318,6 +318,13 @@ class DictImmutableKeysEntity(ItemEntity):
|
|||
return True
|
||||
return False
|
||||
|
||||
def collect_dynamic_schema_entities(self, collector):
|
||||
for child_obj in self.non_gui_children.values():
|
||||
child_obj.collect_dynamic_schema_entities(collector)
|
||||
|
||||
if self.is_dynamic_schema_node:
|
||||
collector.add_entity(self)
|
||||
|
||||
def settings_value(self):
|
||||
if self._override_state is OverrideState.NOT_DEFINED:
|
||||
return NOT_SET
|
||||
|
|
|
|||
|
|
@ -49,6 +49,10 @@ class EndpointEntity(ItemEntity):
|
|||
|
||||
super(EndpointEntity, self).schema_validations()
|
||||
|
||||
def collect_dynamic_schema_entities(self, collector):
|
||||
if self.is_dynamic_schema_node:
|
||||
collector.add_entity(self)
|
||||
|
||||
@abstractmethod
|
||||
def _settings_value(self):
|
||||
pass
|
||||
|
|
|
|||
|
|
@ -112,6 +112,9 @@ class PathEntity(ItemEntity):
|
|||
def set(self, value):
|
||||
self.child_obj.set(value)
|
||||
|
||||
def collect_dynamic_schema_entities(self, *args, **kwargs):
|
||||
self.child_obj.collect_dynamic_schema_entities(*args, **kwargs)
|
||||
|
||||
def settings_value(self):
|
||||
if self._override_state is OverrideState.NOT_DEFINED:
|
||||
return NOT_SET
|
||||
|
|
@ -251,6 +254,10 @@ class ListStrictEntity(ItemEntity):
|
|||
for idx, item in enumerate(new_value):
|
||||
self.children[idx].set(item)
|
||||
|
||||
def collect_dynamic_schema_entities(self, collector):
|
||||
if self.is_dynamic_schema_node:
|
||||
collector.add_entity(self)
|
||||
|
||||
def settings_value(self):
|
||||
if self._override_state is OverrideState.NOT_DEFINED:
|
||||
return NOT_SET
|
||||
|
|
|
|||
|
|
@ -663,3 +663,12 @@ class SchemasHub:
|
|||
if found_idx is not None:
|
||||
metadata_item = template_def.pop(found_idx)
|
||||
return metadata_item
|
||||
|
||||
|
||||
class DynamicSchemaValueCollector:
|
||||
def __init__(self, schema_hub):
|
||||
self._schema_hub = schema_hub
|
||||
self._dynamic_entities = []
|
||||
|
||||
def add_entity(self, entity):
|
||||
self._dynamic_entities.append(entity)
|
||||
|
|
|
|||
|
|
@ -12,7 +12,8 @@ from .lib import (
|
|||
SCHEMA_KEY_SYSTEM_SETTINGS,
|
||||
SCHEMA_KEY_PROJECT_SETTINGS,
|
||||
OverrideState,
|
||||
SchemasHub
|
||||
SchemasHub,
|
||||
DynamicSchemaValueCollector
|
||||
)
|
||||
from .exceptions import (
|
||||
SchemaError,
|
||||
|
|
@ -259,6 +260,16 @@ class RootEntity(BaseItemEntity):
|
|||
output[key] = child_obj.value
|
||||
return output
|
||||
|
||||
def collect_dynamic_schema_entities(self):
|
||||
output = DynamicSchemaValueCollector(self.schema_hub)
|
||||
if self._override_state is not OverrideState.DEFAULTS:
|
||||
return output
|
||||
|
||||
for child_obj in self.non_gui_children.values():
|
||||
child_obj.collect_dynamic_schema_entities(output)
|
||||
|
||||
return output
|
||||
|
||||
def settings_value(self):
|
||||
"""Value for current override state with metadata.
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue