mirror of
https://github.com/ynput/ayon-core.git
synced 2025-12-27 14:22:37 +01:00
added logic to discover convertors and find legacy items
This commit is contained in:
parent
971e4a23bd
commit
cff9990c6f
2 changed files with 63 additions and 0 deletions
|
|
@ -22,6 +22,7 @@ from .creator_plugins import (
|
|||
Creator,
|
||||
AutoCreator,
|
||||
discover_creator_plugins,
|
||||
discover_legacy_convertor_plugins,
|
||||
)
|
||||
|
||||
UpdateData = collections.namedtuple("UpdateData", ["instance", "changes"])
|
||||
|
|
@ -940,6 +941,9 @@ class CreateContext:
|
|||
# Manual creators
|
||||
self.manual_creators = {}
|
||||
|
||||
self.legacy_convertors = {}
|
||||
self.legacy_items_by_id = {}
|
||||
|
||||
self.publish_discover_result = None
|
||||
self.publish_plugins_mismatch_targets = []
|
||||
self.publish_plugins = []
|
||||
|
|
@ -1020,6 +1024,7 @@ class CreateContext:
|
|||
|
||||
with self.bulk_instances_collection():
|
||||
self.reset_instances()
|
||||
self.find_legacy_items()
|
||||
self.execute_autocreators()
|
||||
|
||||
self.reset_finalization()
|
||||
|
|
@ -1077,6 +1082,7 @@ class CreateContext:
|
|||
|
||||
self._reset_publish_plugins(discover_publish_plugins)
|
||||
self._reset_creator_plugins()
|
||||
self._reset_legacy_convertor_plugins()
|
||||
|
||||
def _reset_publish_plugins(self, discover_publish_plugins):
|
||||
import pyblish.logic
|
||||
|
|
@ -1172,6 +1178,29 @@ class CreateContext:
|
|||
|
||||
self.creators = creators
|
||||
|
||||
def _reset_legacy_convertor_plugins(self):
|
||||
legacy_convertors = {}
|
||||
for convertor_class in discover_legacy_convertor_plugins():
|
||||
if inspect.isabstract(convertor_class):
|
||||
self.log.info(
|
||||
"Skipping abstract Creator {}".format(str(convertor_class))
|
||||
)
|
||||
continue
|
||||
|
||||
convertor_identifier = convertor_class.identifier
|
||||
if convertor_identifier in legacy_convertors:
|
||||
self.log.warning((
|
||||
"Duplicated Converter identifier. "
|
||||
"Using first and skipping following"
|
||||
))
|
||||
continue
|
||||
|
||||
legacy_convertors[convertor_identifier] = (
|
||||
convertor_identifier(self)
|
||||
)
|
||||
|
||||
self.legacy_convertors = legacy_convertors
|
||||
|
||||
def reset_context_data(self):
|
||||
"""Reload context data using host implementation.
|
||||
|
||||
|
|
@ -1243,6 +1272,14 @@ class CreateContext:
|
|||
def creator_removed_instance(self, instance):
|
||||
self._instances_by_id.pop(instance.id, None)
|
||||
|
||||
def add_legacy_item(self, convertor_identifier, label):
|
||||
self.legacy_items_by_id[convertor_identifier] = (
|
||||
LegacyInstancesItem(convertor_identifier, label)
|
||||
)
|
||||
|
||||
def remove_legacy_item(self, convertor_identifier):
|
||||
self.legacy_items_by_id.pop(convertor_identifier, None)
|
||||
|
||||
@contextmanager
|
||||
def bulk_instances_collection(self):
|
||||
"""Validate context of instances in bulk.
|
||||
|
|
@ -1278,6 +1315,20 @@ class CreateContext:
|
|||
for creator in self.creators.values():
|
||||
creator.collect_instances()
|
||||
|
||||
def find_legacy_items(self):
|
||||
self.legacy_items_by_id = {}
|
||||
|
||||
for convertor in self.legacy_convertors.values():
|
||||
try:
|
||||
convertor.find_instances()
|
||||
except:
|
||||
self.log.warning(
|
||||
"Failed to find instances of convertor \"{}\"".format(
|
||||
convertor.identifier
|
||||
),
|
||||
exc_info=True
|
||||
)
|
||||
|
||||
def execute_autocreators(self):
|
||||
"""Execute discovered AutoCreator plugins.
|
||||
|
||||
|
|
|
|||
|
|
@ -559,6 +559,10 @@ def discover_creator_plugins():
|
|||
return discover(BaseCreator)
|
||||
|
||||
|
||||
def discover_legacy_convertor_plugins():
|
||||
return discover(LegacyInstanceConvertor)
|
||||
|
||||
|
||||
def discover_legacy_creator_plugins():
|
||||
from openpype.lib import Logger
|
||||
|
||||
|
|
@ -616,6 +620,9 @@ def register_creator_plugin(plugin):
|
|||
elif issubclass(plugin, LegacyCreator):
|
||||
register_plugin(LegacyCreator, plugin)
|
||||
|
||||
elif issubclass(plugin, LegacyInstanceConvertor):
|
||||
register_plugin(LegacyInstanceConvertor, plugin)
|
||||
|
||||
|
||||
def deregister_creator_plugin(plugin):
|
||||
if issubclass(plugin, BaseCreator):
|
||||
|
|
@ -624,12 +631,17 @@ def deregister_creator_plugin(plugin):
|
|||
elif issubclass(plugin, LegacyCreator):
|
||||
deregister_plugin(LegacyCreator, plugin)
|
||||
|
||||
elif issubclass(plugin, LegacyInstanceConvertor):
|
||||
deregister_plugin(LegacyInstanceConvertor, plugin)
|
||||
|
||||
|
||||
def register_creator_plugin_path(path):
|
||||
register_plugin_path(BaseCreator, path)
|
||||
register_plugin_path(LegacyCreator, path)
|
||||
register_plugin_path(LegacyInstanceConvertor, path)
|
||||
|
||||
|
||||
def deregister_creator_plugin_path(path):
|
||||
deregister_plugin_path(BaseCreator, path)
|
||||
deregister_plugin_path(LegacyCreator, path)
|
||||
deregister_plugin_path(LegacyInstanceConvertor, path)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue