mirror of
https://github.com/ynput/ayon-core.git
synced 2026-01-01 16:34:53 +01:00
Merge branch 'develop' into feature/OP-3419_Move-editorial-logic-to-pipeline
This commit is contained in:
commit
83ff0a8fcc
69 changed files with 1083 additions and 743 deletions
|
|
@ -16,9 +16,7 @@ from openpype.modules import load_modules, ModulesManager
|
|||
from openpype.settings import get_project_settings
|
||||
from openpype.lib import (
|
||||
Anatomy,
|
||||
register_event_callback,
|
||||
filter_pyblish_plugins,
|
||||
change_timer_to_current_context,
|
||||
)
|
||||
|
||||
from . import (
|
||||
|
|
@ -33,6 +31,9 @@ from . import (
|
|||
_is_installed = False
|
||||
_registered_root = {"_": ""}
|
||||
_registered_host = {"_": None}
|
||||
# Keep modules manager (and it's modules) in memory
|
||||
# - that gives option to register modules' callbacks
|
||||
_modules_manager = None
|
||||
|
||||
log = logging.getLogger(__name__)
|
||||
|
||||
|
|
@ -44,6 +45,23 @@ PUBLISH_PATH = os.path.join(PLUGINS_DIR, "publish")
|
|||
LOAD_PATH = os.path.join(PLUGINS_DIR, "load")
|
||||
|
||||
|
||||
def _get_modules_manager():
|
||||
"""Get or create modules manager for host installation.
|
||||
|
||||
This is not meant for public usage. Reason is to keep modules
|
||||
in memory of process to be able trigger their event callbacks if they
|
||||
need any.
|
||||
|
||||
Returns:
|
||||
ModulesManager: Manager wrapping discovered modules.
|
||||
"""
|
||||
|
||||
global _modules_manager
|
||||
if _modules_manager is None:
|
||||
_modules_manager = ModulesManager()
|
||||
return _modules_manager
|
||||
|
||||
|
||||
def register_root(path):
|
||||
"""Register currently active root"""
|
||||
log.info("Registering root: %s" % path)
|
||||
|
|
@ -74,6 +92,7 @@ def install_host(host):
|
|||
_is_installed = True
|
||||
|
||||
legacy_io.install()
|
||||
modules_manager = _get_modules_manager()
|
||||
|
||||
missing = list()
|
||||
for key in ("AVALON_PROJECT", "AVALON_ASSET"):
|
||||
|
|
@ -95,8 +114,6 @@ def install_host(host):
|
|||
|
||||
register_host(host)
|
||||
|
||||
register_event_callback("taskChanged", _on_task_change)
|
||||
|
||||
def modified_emit(obj, record):
|
||||
"""Method replacing `emit` in Pyblish's MessageHandler."""
|
||||
record.msg = record.getMessage()
|
||||
|
|
@ -112,7 +129,14 @@ def install_host(host):
|
|||
else:
|
||||
pyblish.api.register_target("local")
|
||||
|
||||
install_openpype_plugins()
|
||||
project_name = os.environ.get("AVALON_PROJECT")
|
||||
host_name = os.environ.get("AVALON_APP")
|
||||
|
||||
# Give option to handle host installation
|
||||
for module in modules_manager.get_enabled_modules():
|
||||
module.on_host_install(host, host_name, project_name)
|
||||
|
||||
install_openpype_plugins(project_name, host_name)
|
||||
|
||||
|
||||
def install_openpype_plugins(project_name=None, host_name=None):
|
||||
|
|
@ -124,7 +148,7 @@ def install_openpype_plugins(project_name=None, host_name=None):
|
|||
pyblish.api.register_discovery_filter(filter_pyblish_plugins)
|
||||
register_loader_plugin_path(LOAD_PATH)
|
||||
|
||||
modules_manager = ModulesManager()
|
||||
modules_manager = _get_modules_manager()
|
||||
publish_plugin_dirs = modules_manager.collect_plugin_paths()["publish"]
|
||||
for path in publish_plugin_dirs:
|
||||
pyblish.api.register_plugin_path(path)
|
||||
|
|
@ -168,10 +192,6 @@ def install_openpype_plugins(project_name=None, host_name=None):
|
|||
register_inventory_action(path)
|
||||
|
||||
|
||||
def _on_task_change():
|
||||
change_timer_to_current_context()
|
||||
|
||||
|
||||
def uninstall_host():
|
||||
"""Undo all of what `install()` did"""
|
||||
host = registered_host()
|
||||
|
|
|
|||
|
|
@ -829,9 +829,10 @@ class CreateContext:
|
|||
discover_result = publish_plugins_discover()
|
||||
publish_plugins = discover_result.plugins
|
||||
|
||||
targets = pyblish.logic.registered_targets() or ["default"]
|
||||
targets = set(pyblish.logic.registered_targets())
|
||||
targets.add("default")
|
||||
plugins_by_targets = pyblish.logic.plugins_by_targets(
|
||||
publish_plugins, targets
|
||||
publish_plugins, list(targets)
|
||||
)
|
||||
# Collect plugins that can have attribute definitions
|
||||
for plugin in publish_plugins:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue