From a51604bf6f98f39119a9bb9b40f73cea2162896d Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Thu, 30 Jan 2020 19:19:52 +0100 Subject: [PATCH 1/7] store asset version objects to instance data after ftrack integration --- pype/plugins/ftrack/publish/integrate_ftrack_api.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/pype/plugins/ftrack/publish/integrate_ftrack_api.py b/pype/plugins/ftrack/publish/integrate_ftrack_api.py index adb22aabba..9dd803aafd 100644 --- a/pype/plugins/ftrack/publish/integrate_ftrack_api.py +++ b/pype/plugins/ftrack/publish/integrate_ftrack_api.py @@ -77,6 +77,7 @@ class IntegrateFtrackApi(pyblish.api.InstancePlugin): info_msg = "Created new {entity_type} with data: {data}" info_msg += ", metadata: {metadata}." + used_asset_versions = [] # Iterate over components and publish for data in instance.data.get("ftrackComponentsList", []): @@ -386,3 +387,14 @@ class IntegrateFtrackApi(pyblish.api.InstancePlugin): tp, value, tb = sys.exc_info() session.rollback() six.reraise(tp, value, tb) + + if assetversion_entity not in used_asset_versions: + used_asset_versions.append(assettype_entity) + + asset_versions_key = "ftrackIntegratedAssetVersions" + if asset_versions_key not in instance.context.data: + instance.context.data[asset_versions_key] = [] + + for asset_version in used_asset_versions: + if asset_version not in instance.context.data[asset_versions_key]: + instance.context.data[asset_versions_key].append(asset_version) From a3922a3b8193b4e9654e9f2fed074bc89738c9b4 Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Thu, 30 Jan 2020 19:27:51 +0100 Subject: [PATCH 2/7] added integrate ftrack note plugin --- .../ftrack/publish/integrate_ftrack_note.py | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 pype/plugins/ftrack/publish/integrate_ftrack_note.py diff --git a/pype/plugins/ftrack/publish/integrate_ftrack_note.py b/pype/plugins/ftrack/publish/integrate_ftrack_note.py new file mode 100644 index 0000000000..e24c839be2 --- /dev/null +++ b/pype/plugins/ftrack/publish/integrate_ftrack_note.py @@ -0,0 +1,35 @@ +import sys +import pyblish.api +import six + + +class IntegrateFtrackNote(pyblish.api.InstancePlugin): + """Create comments in Ftrack.""" + + order = pyblish.api.IntegratorOrder + label = "Integrate Comments to Ftrack." + families = ["ftrack"] + optional = True + + def process(self, instance): + comment = (instance.context.data.get("comment") or "").strip() + if not comment: + return + + asset_versions_key = "ftrackIntegratedAssetVersions" + asset_versions = instance.data.get(asset_versions_key) + if not asset_versions: + return + + session = context.data["ftrackSession"] + + note = session.create("Note", {"content": comment}) + for asset_version in asset_versions: + asset_version["notes"].extend(note) + + try: + session.commit() + except Exception: + tp, value, tb = sys.exc_info() + session.rollback() + six.reraise(tp, value, tb) From 45c76919c0df080af5905b2a5c7288298a6135cc Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Fri, 31 Jan 2020 12:09:08 +0100 Subject: [PATCH 3/7] store asset versions to instance.data instead of context.data --- pype/plugins/ftrack/publish/integrate_ftrack_api.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pype/plugins/ftrack/publish/integrate_ftrack_api.py b/pype/plugins/ftrack/publish/integrate_ftrack_api.py index 9dd803aafd..922c8e119f 100644 --- a/pype/plugins/ftrack/publish/integrate_ftrack_api.py +++ b/pype/plugins/ftrack/publish/integrate_ftrack_api.py @@ -392,9 +392,9 @@ class IntegrateFtrackApi(pyblish.api.InstancePlugin): used_asset_versions.append(assettype_entity) asset_versions_key = "ftrackIntegratedAssetVersions" - if asset_versions_key not in instance.context.data: - instance.context.data[asset_versions_key] = [] + if asset_versions_key not in instance.data: + instance.data[asset_versions_key] = [] for asset_version in used_asset_versions: - if asset_version not in instance.context.data[asset_versions_key]: - instance.context.data[asset_versions_key].append(asset_version) + if asset_version not in instance.data[asset_versions_key]: + instance.data[asset_versions_key].append(asset_version) From eb50cd369d6dd31f914bd16820f4a3c7078d6f28 Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Fri, 31 Jan 2020 12:09:17 +0100 Subject: [PATCH 4/7] store assetversion instead of assettype --- pype/plugins/ftrack/publish/integrate_ftrack_api.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pype/plugins/ftrack/publish/integrate_ftrack_api.py b/pype/plugins/ftrack/publish/integrate_ftrack_api.py index 922c8e119f..cd94b2a150 100644 --- a/pype/plugins/ftrack/publish/integrate_ftrack_api.py +++ b/pype/plugins/ftrack/publish/integrate_ftrack_api.py @@ -389,7 +389,7 @@ class IntegrateFtrackApi(pyblish.api.InstancePlugin): six.reraise(tp, value, tb) if assetversion_entity not in used_asset_versions: - used_asset_versions.append(assettype_entity) + used_asset_versions.append(assetversion_entity) asset_versions_key = "ftrackIntegratedAssetVersions" if asset_versions_key not in instance.data: From e4ba53ac15358dbc648bfa6f8e4a507dfe513072 Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Fri, 31 Jan 2020 12:13:20 +0100 Subject: [PATCH 5/7] integrate ftrack note add notes to each integrated asset version --- .../ftrack/publish/integrate_ftrack_note.py | 26 +++++++++++++++---- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/pype/plugins/ftrack/publish/integrate_ftrack_note.py b/pype/plugins/ftrack/publish/integrate_ftrack_note.py index e24c839be2..f7fb5addbb 100644 --- a/pype/plugins/ftrack/publish/integrate_ftrack_note.py +++ b/pype/plugins/ftrack/publish/integrate_ftrack_note.py @@ -6,29 +6,45 @@ import six class IntegrateFtrackNote(pyblish.api.InstancePlugin): """Create comments in Ftrack.""" - order = pyblish.api.IntegratorOrder - label = "Integrate Comments to Ftrack." + # Must be after integrate asset new + order = pyblish.api.IntegratorOrder + 0.4999 + label = "Integrate Ftrack note" families = ["ftrack"] optional = True def process(self, instance): comment = (instance.context.data.get("comment") or "").strip() if not comment: + self.log.info("Comment is not set.") return + self.log.debug("Comment is set to {}".format(comment)) + asset_versions_key = "ftrackIntegratedAssetVersions" asset_versions = instance.data.get(asset_versions_key) if not asset_versions: + self.log.info("There are any integrated AssetVersions") return - session = context.data["ftrackSession"] + session = instance.context.data["ftrackSession"] + user = session.query( + "User where username is \"{}\"".format(session.api_user) + ).first() + if not user: + self.log.warning( + "Was not able to query current User {}".format( + session.api_user + ) + ) - note = session.create("Note", {"content": comment}) for asset_version in asset_versions: - asset_version["notes"].extend(note) + asset_version.create_note(comment, author=user) try: session.commit() + self.log.debug("Note added to AssetVersion \"{}\"".format( + str(asset_version) + )) except Exception: tp, value, tb = sys.exc_info() session.rollback() From 1afd2b40cef4446dc0fcfcab98aea0e732f970b4 Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Fri, 31 Jan 2020 12:13:39 +0100 Subject: [PATCH 6/7] comment is not overriden with empty string if is already set --- pype/plugins/global/publish/collect_comment.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pype/plugins/global/publish/collect_comment.py b/pype/plugins/global/publish/collect_comment.py index 22970665a1..062142ace9 100644 --- a/pype/plugins/global/publish/collect_comment.py +++ b/pype/plugins/global/publish/collect_comment.py @@ -15,4 +15,5 @@ class CollectComment(pyblish.api.ContextPlugin): order = pyblish.api.CollectorOrder def process(self, context): - context.data["comment"] = "" + comment = (context.data.get("comment") or "").strip() + context.data["comment"] = comment From 607ede0c0752fd6761401a08dba75c070c3a7875 Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Fri, 31 Jan 2020 12:13:52 +0100 Subject: [PATCH 7/7] collect matchmove family filtering was fixed --- pype/plugins/standalonepublisher/publish/collect_matchmove.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pype/plugins/standalonepublisher/publish/collect_matchmove.py b/pype/plugins/standalonepublisher/publish/collect_matchmove.py index b46efc1cf3..5d9e8ddfb4 100644 --- a/pype/plugins/standalonepublisher/publish/collect_matchmove.py +++ b/pype/plugins/standalonepublisher/publish/collect_matchmove.py @@ -21,7 +21,7 @@ class CollectMatchmovePublish(pyblish.api.InstancePlugin): label = "Collect Matchmove - SA Publish" order = pyblish.api.CollectorOrder - family = ["matchmove"] + families = ["matchmove"] hosts = ["standalonepublisher"] def process(self, instance):