Publisher: Fix disappearing actions (#5184)

* store action ids by plugin ids

* fix underscore in variables

* fix access to action
This commit is contained in:
Jakub Trllo 2023-06-23 17:48:09 +02:00 committed by GitHub
parent 7973c5fbe0
commit 6e69d3a87f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -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