From 6e69d3a87f3c8ec6168c59bbf7e7d7fdadd58b61 Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Fri, 23 Jun 2023 17:48:09 +0200 Subject: [PATCH] Publisher: Fix disappearing actions (#5184) * store action ids by plugin ids * fix underscore in variables * fix access to action --- openpype/tools/publisher/control.py | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/openpype/tools/publisher/control.py b/openpype/tools/publisher/control.py index 502e871edd..d4e0ae0453 100644 --- a/openpype/tools/publisher/control.py +++ b/openpype/tools/publisher/control.py @@ -443,29 +443,29 @@ class PublishPluginsProxy: def __init__(self, plugins): plugins_by_id = {} - actions_by_id = {} + actions_by_plugin_id = {} action_ids_by_plugin_id = {} for plugin in plugins: plugin_id = plugin.id plugins_by_id[plugin_id] = plugin action_ids = [] + actions_by_id = {} action_ids_by_plugin_id[plugin_id] = action_ids + actions_by_plugin_id[plugin_id] = actions_by_id actions = getattr(plugin, "actions", None) or [] for action in actions: action_id = action.id - if action_id in actions_by_id: - continue action_ids.append(action_id) actions_by_id[action_id] = action self._plugins_by_id = plugins_by_id - self._actions_by_id = actions_by_id + self._actions_by_plugin_id = actions_by_plugin_id self._action_ids_by_plugin_id = action_ids_by_plugin_id - def get_action(self, action_id): - return self._actions_by_id[action_id] + def get_action(self, plugin_id, action_id): + return self._actions_by_plugin_id[plugin_id][action_id] def get_plugin(self, plugin_id): return self._plugins_by_id[plugin_id] @@ -497,7 +497,9 @@ class PublishPluginsProxy: """ return [ - self._create_action_item(self._actions_by_id[action_id], plugin_id) + self._create_action_item( + self.get_action(plugin_id, action_id), plugin_id + ) for action_id in self._action_ids_by_plugin_id[plugin_id] ] @@ -2308,7 +2310,7 @@ class PublisherController(BasePublisherController): def run_action(self, plugin_id, action_id): # TODO handle result in UI plugin = self._publish_plugins_proxy.get_plugin(plugin_id) - action = self._publish_plugins_proxy.get_action(action_id) + action = self._publish_plugins_proxy.get_action(plugin_id, action_id) result = pyblish.plugin.process( plugin, self._publish_context, None, action.id