[Automated] Merged develop into main

This commit is contained in:
ynbot 2023-01-04 04:27:23 +01:00 committed by GitHub
commit 56cd91ae7d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -1,4 +1,5 @@
import os import os
import re
import six import six
import pyblish.api import pyblish.api
import copy import copy
@ -132,14 +133,14 @@ class IntegrateSlackAPI(pyblish.api.InstancePlugin):
fill_key = "task[{}]".format(key) fill_key = "task[{}]".format(key)
fill_pairs.append((fill_key, value)) fill_pairs.append((fill_key, value))
self.log.debug("fill_pairs ::{}".format(fill_pairs))
multiple_case_variants = prepare_template_data(fill_pairs) multiple_case_variants = prepare_template_data(fill_pairs)
fill_data.update(multiple_case_variants) fill_data.update(multiple_case_variants)
message = ''
message = None
try: try:
message = message_templ.format(**fill_data) message = self._escape_missing_keys(message_templ, fill_data).\
format(**fill_data)
except Exception: except Exception:
# shouldn't happen
self.log.warning( self.log.warning(
"Some keys are missing in {}".format(message_templ), "Some keys are missing in {}".format(message_templ),
exc_info=True) exc_info=True)
@ -162,17 +163,21 @@ class IntegrateSlackAPI(pyblish.api.InstancePlugin):
def _get_review_path(self, instance): def _get_review_path(self, instance):
"""Returns abs url for review if present in instance repres""" """Returns abs url for review if present in instance repres"""
published_path = None review_path = None
for repre in instance.data.get("representations", []): for repre in instance.data.get("representations", []):
tags = repre.get('tags', []) tags = repre.get('tags', [])
if (repre.get("review") if (repre.get("review")
or "review" in tags or "review" in tags
or "burnin" in tags): or "burnin" in tags):
if os.path.exists(repre["published_path"]): repre_review_path = (
published_path = repre["published_path"] repre.get("published_path") or
os.path.join(repre["stagingDir"], repre["files"])
)
if os.path.exists(repre_review_path):
review_path = repre_review_path
if "burnin" in tags: # burnin has precedence if exists if "burnin" in tags: # burnin has precedence if exists
break break
return published_path return review_path
def _python2_call(self, token, channel, message, publish_files): def _python2_call(self, token, channel, message, publish_files):
from slackclient import SlackClient from slackclient import SlackClient
@ -263,3 +268,22 @@ class IntegrateSlackAPI(pyblish.api.InstancePlugin):
msg = " - application must added to channel '{}'.".format(channel) msg = " - application must added to channel '{}'.".format(channel)
error_str += msg + " Ask Slack admin." error_str += msg + " Ask Slack admin."
return error_str return error_str
def _escape_missing_keys(self, message, fill_data):
"""Double escapes placeholder which are missing in 'fill_data'"""
placeholder_keys = re.findall("\{([^}]+)\}", message)
fill_keys = []
for key, value in fill_data.items():
fill_keys.append(key)
if isinstance(value, dict):
for child_key in value.keys():
fill_keys.append("{}[{}]".format(key, child_key))
not_matched = set(placeholder_keys) - set(fill_keys)
for not_matched_item in not_matched:
message = message.replace("{}".format(not_matched_item),
"{{{}}}".format(not_matched_item))
return message