mirror of
https://github.com/ynput/ayon-core.git
synced 2026-01-01 08:24:53 +01:00
CollectComment plugin also store comment on each instance
This commit is contained in:
parent
0151540fdd
commit
f7f5019401
1 changed files with 76 additions and 10 deletions
|
|
@ -1,8 +1,26 @@
|
|||
"""
|
||||
Requires:
|
||||
None
|
||||
Provides:
|
||||
context -> comment (str)
|
||||
"""Collect comment and add option to enter comment per instance.
|
||||
|
||||
Combination of plugins. One define optional input for instances in Publisher
|
||||
UI (CollectInstanceCommentDef) and second cares that each instance during
|
||||
collection has available "comment" key in data (CollectComment).
|
||||
|
||||
Plugin 'CollectInstanceCommentDef' define "comment" attribute which won't be
|
||||
filled with any value if instance does not match families filter or when
|
||||
plugin is disabled.
|
||||
|
||||
Plugin 'CollectComment' makes sure that each instance in context has
|
||||
available "comment" key in data which can be set to 'str' or 'None' if is not
|
||||
set.
|
||||
- In case instance already has filled comment the plugin's logic is skipped
|
||||
- The comment is always set and value should be always 'str' even if is empty
|
||||
|
||||
Why are separated:
|
||||
- 'CollectInstanceCommentDef' can have specific settings to show comment
|
||||
attribute only to defined families in publisher UI
|
||||
- 'CollectComment' will run all the time
|
||||
|
||||
Todos:
|
||||
The comment per instance is not sent via farm.
|
||||
"""
|
||||
|
||||
import pyblish.api
|
||||
|
|
@ -31,11 +49,59 @@ class CollectInstanceCommentDef(
|
|||
|
||||
|
||||
class CollectComment(pyblish.api.ContextPlugin):
|
||||
"""This plug-ins displays the comment dialog box per default"""
|
||||
"""Collect comment per each instance.
|
||||
|
||||
label = "Collect Comment"
|
||||
order = pyblish.api.CollectorOrder
|
||||
Plugin makes sure each instance to publish has set "comment" in data so any
|
||||
further plugin can use it directly.
|
||||
"""
|
||||
|
||||
label = "Collect Instance Comment"
|
||||
order = pyblish.api.CollectorOrder + 0.49
|
||||
|
||||
def process(self, context):
|
||||
comment = (context.data.get("comment") or "").strip()
|
||||
context.data["comment"] = comment
|
||||
context_comment = self.cleanup_comment(context.data.get("comment"))
|
||||
# Set it back
|
||||
context.data["comment"] = context_comment
|
||||
for instance in context:
|
||||
instance_label = str(instance)
|
||||
# Check if comment is already set
|
||||
instance_comment = self.cleanup_comment(
|
||||
instance.data.get("comment"))
|
||||
|
||||
# If comment on instance is not set then look for attributes
|
||||
if not instance_comment:
|
||||
attr_values = self.get_attr_values_from_data_for_plugin(
|
||||
CollectInstanceCommentDef, instance.data
|
||||
)
|
||||
instance_comment = self.cleanup_comment(
|
||||
attr_values.get("comment")
|
||||
)
|
||||
|
||||
# Use context comment if instance has all options of comment
|
||||
# empty
|
||||
if not instance_comment:
|
||||
instance_comment = context_comment
|
||||
|
||||
instance.data["comment"] = instance_comment
|
||||
if instance_comment:
|
||||
msg_end = " has comment set to: \"{}\"".format(
|
||||
instance_comment)
|
||||
else:
|
||||
msg_end = " does not have set comment"
|
||||
self.log.debug("Instance {} {}".format(instance_label, msg_end))
|
||||
|
||||
def cleanup_comment(self, comment):
|
||||
"""Cleanup comment value.
|
||||
|
||||
Args:
|
||||
comment (Union[str, None]): Comment value from data.
|
||||
|
||||
Returns:
|
||||
str: Cleaned comment which is stripped or empty string if input
|
||||
was 'None'.
|
||||
"""
|
||||
|
||||
if comment:
|
||||
return comment.strip()
|
||||
return ""
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue