mirror of
https://github.com/ynput/ayon-core.git
synced 2026-01-02 00:44:52 +01:00
use multiple sources to load entities
This commit is contained in:
parent
2d2698d8bb
commit
0881dfb202
1 changed files with 27 additions and 21 deletions
|
|
@ -465,32 +465,38 @@ class RootEntity(BaseEntity):
|
|||
|
||||
def create_schema_object(self, schema_data, *args, **kwargs):
|
||||
if self._loaded_types is None:
|
||||
import item_entities
|
||||
from . import item_entities
|
||||
from . import input_entities
|
||||
|
||||
sources = [item_entities, input_entities]
|
||||
known_abstract_classes = (
|
||||
BaseEntity,
|
||||
item_entities.ItemEntity,
|
||||
input_entities.InputEntity
|
||||
)
|
||||
|
||||
self._loaded_types = {}
|
||||
self._gui_types = []
|
||||
for attr in dir(item_entities):
|
||||
item = getattr(item_entities, attr)
|
||||
if not inspect.isclass(item):
|
||||
continue
|
||||
|
||||
if not issubclass(item, BaseEntity):
|
||||
continue
|
||||
|
||||
if inspect.isabstract(item):
|
||||
if item in (
|
||||
BaseEntity,
|
||||
item_entities.ItemEntity,
|
||||
item_entities.InputEntity
|
||||
):
|
||||
for source in sources:
|
||||
for attr in dir(source):
|
||||
item = getattr(source, attr)
|
||||
if not inspect.isclass(item):
|
||||
continue
|
||||
item()
|
||||
|
||||
for schema_type in item.schema_types:
|
||||
self._loaded_types[schema_type] = item
|
||||
if not issubclass(item, BaseEntity):
|
||||
continue
|
||||
|
||||
gui_type = getattr(item, "gui_type", False)
|
||||
if gui_type:
|
||||
self._gui_types.append(item)
|
||||
if inspect.isabstract(item):
|
||||
if item in known_abstract_classes:
|
||||
continue
|
||||
item()
|
||||
|
||||
for schema_type in item.schema_types:
|
||||
self._loaded_types[schema_type] = item
|
||||
|
||||
gui_type = getattr(item, "gui_type", False)
|
||||
if gui_type:
|
||||
self._gui_types.append(item)
|
||||
|
||||
klass = self._loaded_types.get(schema_data["type"])
|
||||
if not klass:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue