Source code for swimlane.core.fields.comment
import pendulum
from swimlane.core.resources.comment import Comment
from .base import CursorField, FieldCursor, ReadOnly
[docs]class CommentCursor(FieldCursor):
"""Returned by CommentField to allow iteration and creation of Comment instances"""
[docs] def comment(self, message, rich_text=False):
"""Add new comment to record comment field"""
message = str(message)
if not isinstance(rich_text, bool):
raise ValueError('rich_text must be a boolean value.')
sw_repr = {
'$type': 'Core.Models.Record.Comments, Core',
'createdByUser': self._record._swimlane.user.as_usergroup_selection(),
'createdDate': pendulum.now().to_rfc3339_string(),
'message': message,
'isRichText': rich_text
}
comment = Comment(self._swimlane, sw_repr)
self._elements.append(comment)
self._record._raw['comments'].setdefault(self._field.id, [])
self._record._raw['comments'][self._field.id].append(comment._raw)
# Tracking comment changes for patch endpoint
self._record._comments_modified = True
return comment
[docs]class CommentsField(ReadOnly, CursorField):
field_type = (
'Core.Models.Fields.CommentsField, Core',
'Core.Models.Fields.Comments.CommentsField, Core'
)
cursor_class = CommentCursor
bulk_modify_support = False
[docs] def get_initial_elements(self):
raw_comments = self.record._raw['comments'].get(self.id, [])
return [Comment(self.record._swimlane, raw) for raw in raw_comments]