From 5e050b6d5d3777076277638c805a35049d3a3246 Mon Sep 17 00:00:00 2001 From: Petr Kalis Date: Wed, 2 Feb 2022 18:52:02 +0100 Subject: [PATCH 1/7] OP-2505 - fix skip already created subset --- .../publish/collect_remote_instances.py | 31 +++++++++++++------ 1 file changed, 21 insertions(+), 10 deletions(-) diff --git a/openpype/hosts/photoshop/plugins/publish/collect_remote_instances.py b/openpype/hosts/photoshop/plugins/publish/collect_remote_instances.py index 2a07c684da..97634678df 100644 --- a/openpype/hosts/photoshop/plugins/publish/collect_remote_instances.py +++ b/openpype/hosts/photoshop/plugins/publish/collect_remote_instances.py @@ -9,7 +9,7 @@ from openpype.hosts.photoshop import api as photoshop class CollectRemoteInstances(pyblish.api.ContextPlugin): - """Gather instances configured color code of a layer. + """Creates instances for configured color code of a layer. Used in remote publishing when artists marks publishable layers by color- coding. @@ -46,6 +46,11 @@ class CollectRemoteInstances(pyblish.api.ContextPlugin): stub = photoshop.stub() layers = stub.get_layers() + existing_subset_names = [] + for instance in context: + if instance.data.get('publish'): + existing_subset_names.append(instance.data.get('subset')) + asset, task_name, task_type = get_batch_asset_task_info( task_data["context"]) @@ -70,21 +75,27 @@ class CollectRemoteInstances(pyblish.api.ContextPlugin): self.log.debug("!!! Not a top layer, skip") continue + fill_pairs = { + "variant": variant, + "family": resolved_family, + "task": task_name, + "layer": layer.name + } + + subset = resolved_subset_template.format( + **prepare_template_data(fill_pairs)) + + if subset in existing_subset_names: + self.log.info( + "Subset {} already created, skipping.".format(subset)) + continue + instance = context.create_instance(layer.name) instance.append(layer) instance.data["family"] = resolved_family instance.data["publish"] = layer.visible instance.data["asset"] = asset instance.data["task"] = task_name - - fill_pairs = { - "variant": variant, - "family": instance.data["family"], - "task": instance.data["task"], - "layer": layer.name - } - subset = resolved_subset_template.format( - **prepare_template_data(fill_pairs)) instance.data["subset"] = subset instance_names.append(layer.name) From b39b5e58c173d52a4d3a7473a1e53f01582fc3e2 Mon Sep 17 00:00:00 2001 From: Petr Kalis Date: Thu, 3 Feb 2022 11:44:09 +0100 Subject: [PATCH 2/7] OP-2505 - better validation message --- .../plugins/publish/validate_unique_subsets.py | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/openpype/hosts/photoshop/plugins/publish/validate_unique_subsets.py b/openpype/hosts/photoshop/plugins/publish/validate_unique_subsets.py index 15ae5fbcea..e000352601 100644 --- a/openpype/hosts/photoshop/plugins/publish/validate_unique_subsets.py +++ b/openpype/hosts/photoshop/plugins/publish/validate_unique_subsets.py @@ -1,3 +1,4 @@ +import collections import pyblish.api import openpype.api @@ -16,11 +17,16 @@ class ValidateSubsetUniqueness(pyblish.api.ContextPlugin): subset_names = [] for instance in context: + self.log.info("instance:: {}".format(instance.data)) if instance.data.get('publish'): subset_names.append(instance.data.get('subset')) + non_unique = \ + [item + for item, count in collections.Counter(subset_names).items() + if count > 1] msg = ( - "Instance subset names are not unique. " + - "Remove duplicates via SubsetManager." + "Instance subset names {} are not unique. " + + "Remove duplicates via SubsetManager.".format(non_unique) ) - assert len(subset_names) == len(set(subset_names)), msg + assert not non_unique, msg From 3089438234b64347c3a7b1a33bf42167eb7b761a Mon Sep 17 00:00:00 2001 From: Petr Kalis Date: Thu, 3 Feb 2022 11:45:34 +0100 Subject: [PATCH 3/7] OP-2505 - better order --- .../photoshop/plugins/publish/collect_remote_instances.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/openpype/hosts/photoshop/plugins/publish/collect_remote_instances.py b/openpype/hosts/photoshop/plugins/publish/collect_remote_instances.py index 97634678df..48c6f583a4 100644 --- a/openpype/hosts/photoshop/plugins/publish/collect_remote_instances.py +++ b/openpype/hosts/photoshop/plugins/publish/collect_remote_instances.py @@ -60,6 +60,10 @@ class CollectRemoteInstances(pyblish.api.ContextPlugin): instance_names = [] for layer in layers: self.log.debug("Layer:: {}".format(layer)) + if layer.parents: + self.log.debug("!!! Not a top layer, skip") + continue + resolved_family, resolved_subset_template = self._resolve_mapping( layer ) @@ -71,10 +75,6 @@ class CollectRemoteInstances(pyblish.api.ContextPlugin): self.log.debug("!!! Not found family or template, skip") continue - if layer.parents: - self.log.debug("!!! Not a top layer, skip") - continue - fill_pairs = { "variant": variant, "family": resolved_family, From 1c700faacfc6ee23e6bcd0b7fc33841f100c6368 Mon Sep 17 00:00:00 2001 From: Petr Kalis Date: Thu, 3 Feb 2022 11:46:27 +0100 Subject: [PATCH 4/7] OP-2505 - safer initialization --- openpype/pype_commands.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/openpype/pype_commands.py b/openpype/pype_commands.py index de0336be2b..2b19075341 100644 --- a/openpype/pype_commands.py +++ b/openpype/pype_commands.py @@ -251,7 +251,10 @@ class PypeCommands: data = { "last_workfile_path": workfile_path, - "start_last_workfile": True + "start_last_workfile": True, + "project_name": project, + "asset_name": asset, + "task_name": task_name } launched_app = application_manager.launch(app_name, **data) From 78b3e9dad86b58bd3eda378c18037f4726f2c934 Mon Sep 17 00:00:00 2001 From: Petr Kalis Date: Thu, 3 Feb 2022 12:14:13 +0100 Subject: [PATCH 5/7] OP-2505 - fixed message --- .../photoshop/plugins/publish/validate_unique_subsets.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/openpype/hosts/photoshop/plugins/publish/validate_unique_subsets.py b/openpype/hosts/photoshop/plugins/publish/validate_unique_subsets.py index e000352601..40abfb1bbd 100644 --- a/openpype/hosts/photoshop/plugins/publish/validate_unique_subsets.py +++ b/openpype/hosts/photoshop/plugins/publish/validate_unique_subsets.py @@ -25,8 +25,6 @@ class ValidateSubsetUniqueness(pyblish.api.ContextPlugin): [item for item, count in collections.Counter(subset_names).items() if count > 1] - msg = ( - "Instance subset names {} are not unique. " + - "Remove duplicates via SubsetManager.".format(non_unique) - ) + msg = ("Instance subset names {} are not unique. ".format(non_unique) + + "Remove duplicates via SubsetManager.") assert not non_unique, msg From 4103654c4ca2fc4775f226454797cb09c47daa2a Mon Sep 17 00:00:00 2001 From: Petr Kalis Date: Thu, 3 Feb 2022 14:20:52 +0100 Subject: [PATCH 6/7] OP-2505 - removed explicit exit, breaks closing of console --- openpype/lib/remote_publish.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/openpype/lib/remote_publish.py b/openpype/lib/remote_publish.py index 9632e63ea0..ced03ea613 100644 --- a/openpype/lib/remote_publish.py +++ b/openpype/lib/remote_publish.py @@ -88,7 +88,6 @@ def publish(log, close_plugin_name=None): if close_plugin: # close host app explicitly after error context = pyblish.api.Context() close_plugin().process(context) - sys.exit(1) def publish_and_log(dbcon, _id, log, close_plugin_name=None, batch_id=None): @@ -137,7 +136,6 @@ def publish_and_log(dbcon, _id, log, close_plugin_name=None, batch_id=None): if close_plugin: # close host app explicitly after error context = pyblish.api.Context() close_plugin().process(context) - sys.exit(1) elif processed % log_every == 0: # pyblish returns progress in 0.0 - 2.0 progress = min(round(result["progress"] / 2 * 100), 99) From 13519cfcda8cf71ee772328f8aaa689d9168523b Mon Sep 17 00:00:00 2001 From: Petr Kalis Date: Thu, 3 Feb 2022 14:54:19 +0100 Subject: [PATCH 7/7] OP-2505 - added return --- openpype/lib/remote_publish.py | 1 + 1 file changed, 1 insertion(+) diff --git a/openpype/lib/remote_publish.py b/openpype/lib/remote_publish.py index ced03ea613..871eb82f11 100644 --- a/openpype/lib/remote_publish.py +++ b/openpype/lib/remote_publish.py @@ -136,6 +136,7 @@ def publish_and_log(dbcon, _id, log, close_plugin_name=None, batch_id=None): if close_plugin: # close host app explicitly after error context = pyblish.api.Context() close_plugin().process(context) + return elif processed % log_every == 0: # pyblish returns progress in 0.0 - 2.0 progress = min(round(result["progress"] / 2 * 100), 99)