use StringTemplate in integrate ftrack note

This commit is contained in:
Jakub Trllo 2022-08-03 18:30:25 +02:00
parent 8f5360d9d5
commit 09e68b5a25

View file

@ -9,9 +9,11 @@ Requires:
"""
import sys
import copy
import six
import pyblish.api
from openpype.lib import StringTemplate
class IntegrateFtrackNote(pyblish.api.InstancePlugin):
@ -53,14 +55,10 @@ class IntegrateFtrackNote(pyblish.api.InstancePlugin):
intent = instance.context.data.get("intent")
intent_label = None
if intent and isinstance(intent, dict):
intent_val = intent.get("value")
intent_label = intent.get("label")
else:
intent_val = intent
if not intent_label:
intent_label = intent_val or ""
if intent:
value = intent["value"]
if value:
intent_label = intent["label"] or value
# if intent label is set then format comment
# - it is possible that intent_label is equal to "" (empty string)
@ -96,6 +94,14 @@ class IntegrateFtrackNote(pyblish.api.InstancePlugin):
labels.append(label)
base_format_data = {
"host_name": host_name,
"app_name": app_name,
"app_label": app_label,
"source": instance.data.get("source", '')
}
if comment:
base_format_data["comment"] = comment
for asset_version_data in asset_versions_data_by_id.values():
asset_version = asset_version_data["asset_version"]
component_items = asset_version_data["component_items"]
@ -109,23 +115,31 @@ class IntegrateFtrackNote(pyblish.api.InstancePlugin):
template = self.note_template
if template is None:
template = self.note_with_intent_template
format_data = {
"intent": intent_label,
"comment": comment,
"host_name": host_name,
"app_name": app_name,
"app_label": app_label,
"published_paths": "<br/>".join(sorted(published_paths)),
"source": instance.data.get("source", '')
}
comment = template.format(**format_data)
if not comment:
format_data = copy.deepcopy(base_format_data)
format_data["published_paths"] = "<br/>".join(
sorted(published_paths)
)
if intent:
if "{intent}" in template:
format_data["intent"] = intent_label
else:
format_data["intent"] = intent
note_text = StringTemplate.format_template(template, format_data)
if not note_text.solved:
self.log.warning((
"Note template require more keys then can be provided."
"\nTemplate: {}\nData: {}"
).format(template, format_data))
continue
if not note_text:
self.log.info((
"Note for AssetVersion {} would be empty. Skipping."
"\nTemplate: {}\nData: {}"
).format(asset_version["id"], template, format_data))
continue
asset_version.create_note(comment, author=user, labels=labels)
asset_version.create_note(note_text, author=user, labels=labels)
try:
session.commit()