mirror of
https://github.com/ynput/ayon-core.git
synced 2025-12-24 21:04:40 +01:00
client/#75 - small fixes for Settings
This commit is contained in:
parent
5c34f996ce
commit
d7097aa338
5 changed files with 42 additions and 40 deletions
|
|
@ -46,4 +46,5 @@ Example of message content:
|
|||
```{SUBSET} for {Asset} was published.```
|
||||
|
||||
Integration can upload 'thumbnail' file (if present in instance), for that bot must be
|
||||
manually added to target channel by Slack admin!
|
||||
manually added to target channel by Slack admin!
|
||||
(In target channel write: ```/invite @OpenPypeNotifier``)
|
||||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -1,16 +1,20 @@
|
|||
{
|
||||
"token": "",
|
||||
"token": "xoxb-2134660737317-2122995982087-cALVXgj3mpBhdf2nO36cdWok",
|
||||
"publish": {
|
||||
"CollectSlackFamilies": {
|
||||
"enabled": true,
|
||||
"optional": true,
|
||||
"profiles": [
|
||||
{
|
||||
"families": [],
|
||||
"hosts": [],
|
||||
"families": [
|
||||
"workfile"
|
||||
],
|
||||
"tasks": [],
|
||||
"channel": [],
|
||||
"message": ""
|
||||
"hosts": [],
|
||||
"channel": [
|
||||
"things"
|
||||
],
|
||||
"message": "{Asset} was publishet {subset} with {thumbnail}"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
|
|||
|
|
@ -169,6 +169,6 @@
|
|||
"enabled": true
|
||||
},
|
||||
"slack": {
|
||||
"enabled": true
|
||||
"enabled": false
|
||||
}
|
||||
}
|
||||
|
|
@ -16,16 +16,17 @@
|
|||
"key": "publish",
|
||||
"label": "Publish plugins",
|
||||
"children": [
|
||||
{
|
||||
"type": "label",
|
||||
"label": "Fill combination of families, task names and hosts when to send notification"
|
||||
},
|
||||
{
|
||||
"type": "dict",
|
||||
"key": "CollectSlackFamilies",
|
||||
"label": "Notification to Slack",
|
||||
"use_label_wrap": true,
|
||||
"checkbox_key": "enabled",
|
||||
"children": [
|
||||
{
|
||||
"type": "label",
|
||||
"label": ""
|
||||
},
|
||||
{
|
||||
"type": "boolean",
|
||||
"key": "enabled",
|
||||
|
|
@ -41,6 +42,7 @@
|
|||
"collapsible": true,
|
||||
"key": "profiles",
|
||||
"label": "Profiles",
|
||||
"use_label_wrap": true,
|
||||
"object_type": {
|
||||
"type": "dict",
|
||||
"children": [
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue