From 5ee7c1706728a22521eced4a45c7397ba9537914 Mon Sep 17 00:00:00 2001 From: Petr Kalis Date: Mon, 16 Jan 2023 11:32:41 +0100 Subject: [PATCH 1/4] Slack - get users only if necessary Only trigger when message contains @ sign. --- .../modules/slack/plugins/publish/integrate_slack_api.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/openpype/modules/slack/plugins/publish/integrate_slack_api.py b/openpype/modules/slack/plugins/publish/integrate_slack_api.py index 21069e0b13..bf54abbdd4 100644 --- a/openpype/modules/slack/plugins/publish/integrate_slack_api.py +++ b/openpype/modules/slack/plugins/publish/integrate_slack_api.py @@ -39,6 +39,7 @@ class IntegrateSlackAPI(pyblish.api.InstancePlugin): token = instance.data["slack_token"] if additional_message: message = "{} \n".format(additional_message) + users = groups = None for message_profile in instance.data["slack_channel_message_profiles"]: message += self._get_filled_message(message_profile["message"], instance, @@ -60,8 +61,10 @@ class IntegrateSlackAPI(pyblish.api.InstancePlugin): else: client = SlackPython3Operations(token, self.log) - users, groups = client.get_users_and_groups() - message = self._translate_users(message, users, groups) + if "@" in message: + if users is None: + users, groups = client.get_users_and_groups() + message = self._translate_users(message, users, groups) msg_id, file_ids = client.send_message(channel, message, From b167b971a2fb4d8af4d4d37858e56e0c0aa83b3d Mon Sep 17 00:00:00 2001 From: Petr Kalis Date: Mon, 16 Jan 2023 13:31:31 +0100 Subject: [PATCH 2/4] Slack - better regex Handles cases like @test\n@john.doe --- openpype/modules/slack/plugins/publish/integrate_slack_api.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openpype/modules/slack/plugins/publish/integrate_slack_api.py b/openpype/modules/slack/plugins/publish/integrate_slack_api.py index bf54abbdd4..5440817e30 100644 --- a/openpype/modules/slack/plugins/publish/integrate_slack_api.py +++ b/openpype/modules/slack/plugins/publish/integrate_slack_api.py @@ -215,7 +215,7 @@ class IntegrateSlackAPI(pyblish.api.InstancePlugin): def _translate_users(self, message, users, groups): """Replace all occurences of @mentions with proper <@name> format.""" - matches = re.findall(r"(? Date: Mon, 16 Jan 2023 15:34:25 +0100 Subject: [PATCH 3/4] Slack - introduced caching User and group query is expensive operation, this will speed up publishing of multiple instances --- .../slack/plugins/publish/integrate_slack_api.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/openpype/modules/slack/plugins/publish/integrate_slack_api.py b/openpype/modules/slack/plugins/publish/integrate_slack_api.py index 5440817e30..1e06799f92 100644 --- a/openpype/modules/slack/plugins/publish/integrate_slack_api.py +++ b/openpype/modules/slack/plugins/publish/integrate_slack_api.py @@ -62,8 +62,16 @@ class IntegrateSlackAPI(pyblish.api.InstancePlugin): client = SlackPython3Operations(token, self.log) if "@" in message: - if users is None: + cache_key = "__cache_ids" + slack_ids = instance.context.data.get(cache_key, None) + if slack_ids is None: users, groups = client.get_users_and_groups() + instance.context.data[cache_key] = {} + instance.context.data[cache_key]["users"] = users + instance.context.data[cache_key]["groups"] = groups + else: + users = slack_ids["users"] + groups = slack_ids["groups"] message = self._translate_users(message, users, groups) msg_id, file_ids = client.send_message(channel, From 49054a53f84abfa08aa46fc31732131e191436ca Mon Sep 17 00:00:00 2001 From: Petr Kalis Date: Mon, 16 Jan 2023 17:42:12 +0100 Subject: [PATCH 4/4] Slack - renamed cache key --- openpype/modules/slack/plugins/publish/integrate_slack_api.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openpype/modules/slack/plugins/publish/integrate_slack_api.py b/openpype/modules/slack/plugins/publish/integrate_slack_api.py index 1e06799f92..612031efac 100644 --- a/openpype/modules/slack/plugins/publish/integrate_slack_api.py +++ b/openpype/modules/slack/plugins/publish/integrate_slack_api.py @@ -62,7 +62,7 @@ class IntegrateSlackAPI(pyblish.api.InstancePlugin): client = SlackPython3Operations(token, self.log) if "@" in message: - cache_key = "__cache_ids" + cache_key = "__cache_slack_ids" slack_ids = instance.context.data.get(cache_key, None) if slack_ids is None: users, groups = client.get_users_and_groups()