# HG changeset patch # User Mads Kiilerich # Date 1442264769 -7200 # Node ID f24851239566e99f7f3f2c7b47690e32e87d0a6e # Parent e81498114bc86ba7aaddbd0597664e26bb722402 pull requests: blame the right user when an admin adds reviewers to other peoples PRs Don't send notifications from the PR owner. diff -r e81498114bc8 -r f24851239566 kallithea/controllers/pullrequests.py --- a/kallithea/controllers/pullrequests.py Mon Sep 14 23:06:00 2015 +0200 +++ b/kallithea/controllers/pullrequests.py Mon Sep 14 23:06:09 2015 +0200 @@ -502,9 +502,10 @@ pull_request.title = _form['pullrequest_title'] pull_request.description = _form['pullrequest_desc'].strip() or _('No description') pull_request.owner = User.get_by_username(_form['owner']) + user = User.get(c.authuser.user_id) try: - PullRequestModel().mention_from_description(pull_request, old_description) - PullRequestModel().update_reviewers(pull_request_id, reviewers_ids) + PullRequestModel().mention_from_description(user, pull_request, old_description) + PullRequestModel().update_reviewers(user, pull_request_id, reviewers_ids) except UserInvalidException as u: h.flash(_('Invalid reviewer "%s" specified') % u, category='error') raise HTTPBadRequest() diff -r e81498114bc8 -r f24851239566 kallithea/model/comment.py --- a/kallithea/model/comment.py Mon Sep 14 23:06:00 2015 +0200 +++ b/kallithea/model/comment.py Mon Sep 14 23:06:09 2015 +0200 @@ -100,7 +100,7 @@ recipients += [cs_author] email_kwargs = { 'status_change': status_change, - 'cs_comment_user': h.person(user, 'full_name_and_username'), + 'cs_comment_user': user.full_name_and_username, 'cs_target_repo': h.canonical_url('summary_home', repo_name=repo.repo_name), 'cs_comment_url': comment_url, 'raw_id': revision, @@ -148,7 +148,7 @@ 'status_change': status_change, 'closing_pr': closing_pr, 'pr_comment_url': comment_url, - 'pr_comment_user': h.person(user, 'full_name_and_username'), + 'pr_comment_user': user.full_name_and_username, 'pr_target_repo': h.canonical_url('summary_home', repo_name=pull_request.other_repo.repo_name), 'repo_name': pull_request.other_repo.repo_name, diff -r e81498114bc8 -r f24851239566 kallithea/model/pull_request.py --- a/kallithea/model/pull_request.py Mon Sep 14 23:06:00 2015 +0200 +++ b/kallithea/model/pull_request.py Mon Sep 14 23:06:09 2015 +0200 @@ -111,11 +111,11 @@ mention_recipients = set(User.get_by_username(username, case_insensitive=True) for username in extract_mentioned_users(new.description)) - self.__add_reviewers(new, reviewers, mention_recipients) + self.__add_reviewers(created_by_user, new, reviewers, mention_recipients) return new - def __add_reviewers(self, pr, reviewers, mention_recipients=None): + def __add_reviewers(self, user, pr, reviewers, mention_recipients=None): #members for member in set(reviewers): _usr = self._get_user(member) @@ -135,7 +135,7 @@ subject = safe_unicode( h.link_to( _('%(user)s wants you to review pull request %(pr_nice_id)s: %(pr_title)s') % \ - {'user': pr.owner.username, + {'user': user.username, 'pr_title': pr.title, 'pr_nice_id': pr.nice_id()}, pr_url) @@ -144,19 +144,19 @@ _org_ref_type, org_ref_name, _org_rev = pr.org_ref.split(':') email_kwargs = { 'pr_title': pr.title, - 'pr_user_created': h.person(pr.owner), + 'pr_user_created': user.full_name_and_username, 'pr_repo_url': h.canonical_url('summary_home', repo_name=pr.other_repo.repo_name), 'pr_url': pr_url, 'pr_revisions': revision_data, 'repo_name': pr.other_repo.repo_name, 'pr_nice_id': pr.nice_id(), 'ref': org_ref_name, - 'pr_username': pr.owner.username, + 'pr_username': user.username, 'threading': threading, 'is_mention': False, } if reviewers: - NotificationModel().create(created_by=pr.owner, subject=subject, body=body, + NotificationModel().create(created_by=user, subject=subject, body=body, recipients=reviewers, type_=Notification.TYPE_PULL_REQUEST, email_kwargs=email_kwargs) @@ -167,21 +167,21 @@ if mention_recipients: email_kwargs['is_mention'] = True subject = _('[Mention]') + ' ' + subject - NotificationModel().create(created_by=pr.owner, subject=subject, body=body, + NotificationModel().create(created_by=user, subject=subject, body=body, recipients=mention_recipients, type_=Notification.TYPE_PULL_REQUEST, email_kwargs=email_kwargs) - def mention_from_description(self, pr, old_description=''): + def mention_from_description(self, user, pr, old_description=''): mention_recipients = set(User.get_by_username(username, case_insensitive=True) for username in extract_mentioned_users(pr.description)) mention_recipients.difference_update(User.get_by_username(username, case_insensitive=True) for username in extract_mentioned_users(old_description)) log.debug("Mentioning %s", mention_recipients) - self.__add_reviewers(pr, [], mention_recipients) + self.__add_reviewers(user, pr, [], mention_recipients) - def update_reviewers(self, pull_request, reviewers_ids): + def update_reviewers(self, user, pull_request, reviewers_ids): reviewers_ids = set(reviewers_ids) pull_request = self.__get_pull_request(pull_request) current_reviewers = PullRequestReviewers.query()\ @@ -194,7 +194,7 @@ to_remove = current_reviewers_ids.difference(reviewers_ids) log.debug("Adding %s reviewers", to_add) - self.__add_reviewers(pull_request, to_add) + self.__add_reviewers(user, pull_request, to_add) log.debug("Removing %s reviewers", to_remove) for uid in to_remove: