Skip to content
This repository has been archived by the owner on Sep 20, 2024. It is now read-only.

NewPublisher: Keep plugins with mismatch target in report #3498

Merged
merged 2 commits into from
Jul 14, 2022
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions openpype/pipeline/create/context.py
Original file line number Diff line number Diff line change
Expand Up @@ -709,6 +709,7 @@ def __init__(
self.manual_creators = {}

self.publish_discover_result = None
self.publish_plugins_mismatch_targets = []
self.publish_plugins = []
self.plugins_with_defs = []
self._attr_plugins_by_family = {}
Expand Down Expand Up @@ -831,6 +832,7 @@ def reset_plugins(self, discover_publish_plugins=True):
discover_result = DiscoverResult()
plugins_with_defs = []
plugins_by_targets = []
plugins_mismatch_targets = []
if discover_publish_plugins:
discover_result = publish_plugins_discover()
publish_plugins = discover_result.plugins
Expand All @@ -840,11 +842,19 @@ def reset_plugins(self, discover_publish_plugins=True):
plugins_by_targets = pyblish.logic.plugins_by_targets(
publish_plugins, list(targets)
)

# Collect plugins that can have attribute definitions
for plugin in publish_plugins:
if OpenPypePyblishPluginMixin in inspect.getmro(plugin):
plugins_with_defs.append(plugin)

plugins_mismatch_targets = [
plugin
for plugin in publish_plugins
if plugin not in plugins_by_targets
]

self.publish_plugins_mismatch_targets = plugins_mismatch_targets
self.publish_discover_result = discover_result
self.publish_plugins = plugins_by_targets
self.plugins_with_defs = plugins_with_defs
Expand Down
15 changes: 9 additions & 6 deletions openpype/tools/publisher/control.py
Original file line number Diff line number Diff line change
Expand Up @@ -154,15 +154,20 @@ def __init__(self, controller):
self._all_instances_by_id = {}
self._current_context = None

def reset(self, context, publish_discover_result=None):
def reset(self, context, create_context):
"""Reset report and clear all data."""
self._publish_discover_result = publish_discover_result

self._publish_discover_result = create_context.publish_discover_result
self._plugin_data = []
self._plugin_data_with_plugin = []
self._current_plugin_data = {}
self._all_instances_by_id = {}
self._current_context = context

for plugin in create_context.publish_plugins_mismatch_targets:
plugin_data = self._add_plugin_data_item(plugin)
plugin_data["skipped"] = True

def add_plugin_iter(self, plugin, context):
"""Add report about single iteration of plugin."""
for instance in context:
Expand Down Expand Up @@ -205,6 +210,7 @@ def _create_plugin_data_item(self, plugin):
"name": plugin.__name__,
"label": label,
"order": plugin.order,
"targets": list(plugin.targets),
"instances_data": [],
"actions_data": [],
"skipped": False,
Expand Down Expand Up @@ -777,10 +783,7 @@ def _reset_publish(self):
# - pop the key after first collector using it would be safest option?
self._publish_context.data["create_context"] = self.create_context

self._publish_report.reset(
self._publish_context,
self.create_context.publish_discover_result
)
self._publish_report.reset(self._publish_context, self.create_context)
self._publish_validation_errors = []
self._publish_current_plugin_validation_errors = None
self._publish_error = None
Expand Down