src/pyams_content/features/review/__init__.py
changeset 313 2e71fb238b1c
parent 238 2dc445ad2cf5
child 501 3407e6940f6a
--- a/src/pyams_content/features/review/__init__.py	Fri Dec 08 10:46:16 2017 +0100
+++ b/src/pyams_content/features/review/__init__.py	Fri Dec 08 10:46:50 2017 +0100
@@ -39,7 +39,7 @@
 from pyams_security.principal import MissingPrincipal
 from pyams_utils.adapter import adapter_config, ContextAdapter
 from pyams_utils.container import BTreeOrderedContainer
-from pyams_utils.registry import query_utility
+from pyams_utils.registry import query_utility, get_utility
 from pyams_utils.request import check_request, query_request
 from pyams_utils.url import absolute_url
 from pyramid.events import subscriber
@@ -58,14 +58,20 @@
     """Review comment persistent class"""
 
     owner = FieldProperty(IReviewComment['owner'])
+    reviewers = FieldProperty(IReviewComment['reviewers'])
+    comment_type = FieldProperty(IReviewComment['comment_type'])
     comment = FieldProperty(IReviewComment['comment'])
-    comment_type = FieldProperty(IReviewComment['comment_type'])
+    is_reviewer_comment = FieldProperty(IReviewComment['is_reviewer_comment'])
     creation_date = FieldProperty(IReviewComment['creation_date'])
 
-    def __init__(self, owner, comment, comment_type='comment'):
+    def __init__(self, owner, comment, comment_type='comment', reviewers=None):
         self.owner = owner
         self.comment = comment
         self.comment_type = comment_type
+        security = get_utility(ISecurityManager)
+        if reviewers:
+            self.reviewers = ', '.join((principal.title for principal in (
+                                        security.get_principal(reviewer) for reviewer in reviewers)))
         self.creation_date = datetime.utcnow()
 
 
@@ -131,7 +137,7 @@
         request = check_request()
         translate = request.localizer.translate
         # initialize mailer
-        security = query_utility(ISecurityManager)
+        security = get_utility(ISecurityManager)
         settings = INotificationSettings(security)
         sender_name = request.principal.title if request.principal is not None else settings.sender_name
         sender_address = settings.sender_email
@@ -176,8 +182,9 @@
         roles.readers = readers
         # add comment
         review_comment = ReviewComment(owner=request.principal.id,
-                                       comment=comment,
-                                       comment_type='request')
+                                       comment_type='request',
+                                       comment=translate(_("Request comment: {comment}")).format(comment=comment),
+                                       reviewers=reviewers)
         IReviewComments(self.context).add_comment(review_comment)
         # return notifications count
         return notifications
@@ -193,7 +200,6 @@
 except ImportError:
     pass
 else:
-
     @subscriber(ICommentAddedEvent)
     def handle_new_comment(event):
         """Handle new review comment"""