Exemple #1
0
 def nominateReviewer(self,
                      reviewer,
                      registrant,
                      review_type=None,
                      _date_created=DEFAULT,
                      _notify_listeners=True):
     """See `IBranchMergeProposal`."""
     # Return the existing vote reference or create a new one.
     # Lower case the review type.
     review_type = self._normalizeReviewType(review_type)
     vote_reference = self.getUsersVoteReference(reviewer, review_type)
     # If there is no existing review for the reviewer, then create a new
     # one.  If the reviewer is a team, then we don't care if there is
     # already an existing pending review, as some projects expect multiple
     # reviews from a team.
     if vote_reference is None or reviewer.is_team:
         vote_reference = CodeReviewVoteReference(
             branch_merge_proposal=self,
             registrant=registrant,
             reviewer=reviewer,
             date_created=_date_created)
         self._ensureAssociatedBranchesVisibleToReviewer(reviewer)
     vote_reference.review_type = review_type
     if _notify_listeners:
         notify(ReviewerNominatedEvent(vote_reference))
     return vote_reference
Exemple #2
0
    def _getVoteReference(self, user, review_type):
        """Get the vote reference for the user.

        The returned vote reference will either:
          * the existing vote reference for the user
          * a vote reference of the same type that has been requested of a
            team that the user is a member of
          * a new vote reference for the user
        """
        # Firstly look for a vote reference for the user.
        ref = self.getUsersVoteReference(user)
        if ref is not None:
            return ref
        # Get all the unclaimed CodeReviewVoteReferences with the review_type
        # specified.
        team_ref = self._getTeamVoteReference(user, review_type)
        if team_ref is not None:
            return team_ref
        # If the review_type is not None, check to see if there is an
        # outstanding team review requested with no specified type.
        if review_type is not None:
            team_ref = self._getTeamVoteReference(user, None)
            if team_ref is not None:
                return team_ref
        # Create a new reference.
        return CodeReviewVoteReference(branch_merge_proposal=self,
                                       registrant=user,
                                       reviewer=user,
                                       review_type=review_type)
Exemple #3
0
    def getVoteReference(self, id):
        """See `IBranchMergeProposal`.

        This function can raise WrongBranchMergeProposal."""
        vote = CodeReviewVoteReference.get(id)
        if vote.branch_merge_proposal != self:
            raise WrongBranchMergeProposal
        return vote
    def getVoteReference(self, id):
        """See `IBranchMergeProposal`.

        This function can raise WrongBranchMergeProposal."""
        vote = CodeReviewVoteReference.get(id)
        if vote.branch_merge_proposal != self:
            raise WrongBranchMergeProposal
        return vote
 def test_to_addrs_excludes_team_reviewers(self):
     """Addresses for the to header exclude requested team reviewers."""
     bmp, subscriber = self.makeProposalWithSubscriber()
     team = self.factory.makeTeam(email='*****@*****.**')
     CodeReviewVoteReference(
         branch_merge_proposal=bmp, reviewer=team, registrant=subscriber)
     mailer = BMPMailer.forCreation(bmp, bmp.registrant)
     ctrl = mailer.generateEmail(subscriber.preferredemail.email,
                                 subscriber)
     reviewer = bmp.target_branch.owner
     reviewer_id = mailer._format_user_address(reviewer)
     self.assertEqual(set([reviewer_id, bmp.address]), set(ctrl.to_addrs))
 def nominateReviewer(self, reviewer, registrant, review_type=None,
                      _date_created=DEFAULT, _notify_listeners=True):
     """See `IBranchMergeProposal`."""
     # Return the existing vote reference or create a new one.
     # Lower case the review type.
     review_type = self._normalizeReviewType(review_type)
     vote_reference = self.getUsersVoteReference(reviewer, review_type)
     # If there is no existing review for the reviewer, then create a new
     # one.  If the reviewer is a team, then we don't care if there is
     # already an existing pending review, as some projects expect multiple
     # reviews from a team.
     if vote_reference is None or reviewer.is_team:
         vote_reference = CodeReviewVoteReference(
             branch_merge_proposal=self,
             registrant=registrant,
             reviewer=reviewer,
             date_created=_date_created)
         self._ensureAssociatedBranchesVisibleToReviewer(reviewer)
     vote_reference.review_type = review_type
     if _notify_listeners:
         notify(ReviewerNominatedEvent(vote_reference))
     return vote_reference