client/#75 - small fixes for Settings

This commit is contained in:
Petr Kalis 2021-06-09 16:18:21 +02:00
parent 5c34f996ce
commit d7097aa338
5 changed files with 42 additions and 40 deletions

View file

@ -1,28 +1,19 @@
import os
try:
from slackclient import SlackClient
python2 = True
except ImportError:
python2 = False
from slack_sdk import WebClient
from slack_sdk.errors import SlackApiError
import six
import pyblish.api
import copy
from openpype.lib.plugin_tools import prepare_template_data
class IntegrateSlackAPI(pyblish.api.InstancePlugin):
""" Send message notification to a channel.
Triggers on instances with "slack" family, filled by
'collect_slack_family'.
Expects configured profile in
Project settings > Slack > Publish plugins > Notification to Slack.
If instance contains 'thumbnail' it uploads it. Bot must be present
in the target channel.
Message template can contain {} placeholders from anatomyData.
"""
order = pyblish.api.IntegratorOrder + 0.499
@ -34,32 +25,34 @@ class IntegrateSlackAPI(pyblish.api.InstancePlugin):
def process(self, instance):
message_templ = instance.data["slack_message"]
fill_data = copy.deepcopy(instance.context.data["anatomyData"])
self.log.debug("fill_data {}".format(fill_data))
fill_pairs = (
("project_name", instance.data["anatomyData"]["project"]["name"]),
("project_code", instance.data["anatomyData"]["project"]["code"]),
("asset", instance.data["anatomyData"]["asset"]),
("subset", instance.data["anatomyData"]["subset"]),
("task", instance.data["anatomyData"]["task"]),
("username", instance.data["anatomyData"]["username"]),
("app", instance.data["anatomyData"]["app"]),
("family", instance.data["anatomyData"]["family"]),
("version", str(instance.data["anatomyData"]["version"])),
("asset", fill_data["asset"]),
("subset", fill_data.get("subset", instance.data["subset"])),
("task", fill_data.get("task")),
("username", fill_data.get("username")),
("app", fill_data.get("app")),
("family", fill_data.get("family", instance.data["family"])),
("version", str(fill_data.get("version"))),
)
message = None
self.log.debug("fill_pairs {}".format(fill_pairs))
multiple_case_variants = prepare_template_data(fill_pairs)
fill_data.update(multiple_case_variants)
self.log.debug("fill_data upd {}".format(fill_data))
try:
message = message_templ.format(
**prepare_template_data(fill_pairs))
message = message_templ.format(**fill_data)
except Exception:
self.log.warning(
"Some keys are missing in {}".format(message_templ),
exc_info=True)
self.log.debug("message:: {}".format(message))
return
published_path = self._get_thumbnail_path(instance)
for channel in instance.data["slack_channel"]:
if python2:
if six.PY2:
self._python2_call(instance.data["slack_token"],
channel,
message,
@ -74,8 +67,8 @@ class IntegrateSlackAPI(pyblish.api.InstancePlugin):
"""Returns abs url for thumbnail if present in instance repres"""
published_path = None
for repre in instance.data['representations']:
self.log.debug("repre ::{}".format(repre))
if repre.get('thumbnail') or "thumbnail" in repre.get('tags', []):
repre_files = repre["files"]
if isinstance(repre_files, (tuple, list, set)):
filename = repre_files[0]
@ -89,6 +82,7 @@ class IntegrateSlackAPI(pyblish.api.InstancePlugin):
return published_path
def _python2_call(self, token, channel, message, published_path):
from slackclient import SlackClient
try:
client = SlackClient(token)
if not published_path:
@ -114,6 +108,8 @@ class IntegrateSlackAPI(pyblish.api.InstancePlugin):
self.log.warning("Error happened: {}".format(error_str))
def _python3_call(self, token, channel, message, published_path):
from slack_sdk import WebClient
from slack_sdk.errors import SlackApiError
try:
client = WebClient(token=token)
if not published_path:
@ -139,5 +135,4 @@ class IntegrateSlackAPI(pyblish.api.InstancePlugin):
# the channel
msg = " - application must added to channel '{}'.".format(channel)
error_str += msg + " Ask Slack admin."
return error_str