changeset 2802:0a623ec24b62 beta

part2 of pull-request notification improvements
author Marcin Kuzminski <marcin@python-works.com>
date Wed, 05 Sep 2012 00:08:38 +0200
parents 69420c48a0e6
children 0b2214604c74
files rhodecode/model/comment.py rhodecode/model/notification.py rhodecode/templates/email_templates/pull_request_comment.html
diffstat 3 files changed, 42 insertions(+), 12 deletions(-) [+]
line wrap: on
line diff
--- a/rhodecode/model/comment.py	Tue Sep 04 22:46:05 2012 +0200
+++ b/rhodecode/model/comment.py	Wed Sep 05 00:08:38 2012 +0200
@@ -125,16 +125,15 @@
             recipients += [User.get_by_email(author_email)]
         #pull request
         elif pull_request:
+            _url = h.url('pullrequest_show',
+                repo_name=pull_request.other_repo.repo_name,
+                pull_request_id=pull_request.pull_request_id,
+                anchor='comment-%s' % comment.comment_id,
+                qualified=True,
+            )
             subj = safe_unicode(
                 h.link_to('Re pull request: %(desc)s %(line)s' % \
-                          {'desc': desc, 'line': line},
-                          h.url('pullrequest_show',
-                                repo_name=pull_request.other_repo.repo_name,
-                                pull_request_id=pull_request.pull_request_id,
-                                anchor='comment-%s' % comment.comment_id,
-                                qualified=True,
-                          )
-                )
+                          {'desc': desc, 'line': line}, _url)
             )
 
             notification_type = Notification.TYPE_PULL_REQUEST_COMMENT
@@ -144,22 +143,36 @@
             # add pull request author
             recipients += [pull_request.author]
 
+            # add the reviewers to notification
+            recipients += [x.user for x in pull_request.reviewers]
+
+            #set some variables for email notification
+            kwargs = {
+                'pr_id': pull_request.pull_request_id,
+                'status_change': status_change,
+                'pr_comment_url': _url,
+                'pr_comment_user': h.person(user.email),
+                'pr_target_repo': h.url('summary_home',
+                                   repo_name=pull_request.other_repo.repo_name,
+                                   qualified=True)
+            }
         # create notification objects, and emails
         NotificationModel().create(
-          created_by=user, subject=subj, body=body,
-          recipients=recipients, type_=notification_type,
-          email_kwargs={'status_change': status_change}
+            created_by=user, subject=subj, body=body,
+            recipients=recipients, type_=notification_type,
+            email_kwargs=kwargs
         )
 
         mention_recipients = set(self._extract_mentions(body))\
                                 .difference(recipients)
         if mention_recipients:
+            kwargs.update({'pr_mention': True})
             subj = _('[Mention]') + ' ' + subj
             NotificationModel().create(
                 created_by=user, subject=subj, body=body,
                 recipients=mention_recipients,
                 type_=notification_type,
-                email_kwargs={'status_change': status_change}
+                email_kwargs=kwargs
             )
 
         return comment
--- a/rhodecode/model/notification.py	Tue Sep 04 22:46:05 2012 +0200
+++ b/rhodecode/model/notification.py	Wed Sep 05 00:08:38 2012 +0200
@@ -245,6 +245,7 @@
     TYPE_PASSWORD_RESET = 'passoword_link'
     TYPE_REGISTRATION = Notification.TYPE_REGISTRATION
     TYPE_PULL_REQUEST = Notification.TYPE_PULL_REQUEST
+    TYPE_PULL_REQUEST_COMMENT = Notification.TYPE_PULL_REQUEST_COMMENT
     TYPE_DEFAULT = 'default'
 
     def __init__(self):
@@ -257,6 +258,7 @@
          self.TYPE_REGISTRATION: 'email_templates/registration.html',
          self.TYPE_DEFAULT: 'email_templates/default.html',
          self.TYPE_PULL_REQUEST: 'email_templates/pull_request.html',
+         self.TYPE_PULL_REQUEST_COMMENT: 'email_templates/pull_request_comment.html',
         }
 
     def get_email_tmpl(self, type_, **kwargs):
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rhodecode/templates/email_templates/pull_request_comment.html	Wed Sep 05 00:08:38 2012 +0200
@@ -0,0 +1,15 @@
+## -*- coding: utf-8 -*-
+<%inherit file="main.html"/>
+            
+User <b>${pr_comment_user}</b> commented on pull request #${pr_id} for
+repository ${pr_target_repo}
+
+<p>
+${body}
+
+%if status_change:
+    <span>New status -> ${status_change}</span>
+%endif
+</p>
+
+View this comment here: ${pr_comment_url}