Beispiel #1
0
    def determine_review_request(self, api_client, api_root, repository_info,
                                 repository_name, revisions):
        """Determine the correct review request for a commit.

        A tuple (review request ID, review request absolute URL) is returned.
        If no review request ID is found by any of the strategies,
        (None, None) is returned.
        """
        # First, try to match the changeset to a review request directly.
        if repository_info.supports_changesets:
            review_request = find_review_request_by_change_id(
                api_client, api_root, repository_info, repository_name,
                revisions)

            if review_request and review_request.id:
                return review_request.id, review_request.absolute_url

        # Fall back on guessing based on the description. This may return None
        # if no suitable review request is found.
        logging.debug('Attempting to guess review request based on '
                      'summary and description')
        review_request = guess_existing_review_request(
            repository_info, repository_name, api_root, api_client, self.tool,
            revisions, guess_summary=False, guess_description=False,
            is_fuzzy_match_func=self._ask_review_request_match,
            no_commit_error=self.no_commit_error)

        if review_request:
            logging.debug('Found review request ID %d' % review_request.id)
            return review_request.id, review_request.absolute_url
        else:
            logging.debug('Could not find a matching review request')
            return None, None
Beispiel #2
0
    def determine_review_request(self, api_client, api_root, repository_info,
                                 repository_name, revisions):
        """Determine the correct review request for a commit.

        A tuple (review request ID, review request absolute URL) is returned.
        If no review request ID is found by any of the strategies,
        (None, None) is returned.
        """
        # First, try to match the changeset to a review request directly.
        if repository_info.supports_changesets:
            review_request = find_review_request_by_change_id(
                api_client, api_root, repository_info, repository_name,
                revisions)

            if review_request and review_request.id:
                return review_request.id, review_request.absolute_url

        # Fall back on guessing based on the description. This may return None
        # if no suitable review request is found.
        logging.debug('Attempting to guess review request based on '
                      'summary and description')
        review_request = guess_existing_review_request(
            repository_info, repository_name, api_root, api_client, self.tool,
            revisions, guess_summary=False, guess_description=False,
            is_fuzzy_match_func=self._ask_review_request_match,
            no_commit_error=self.no_commit_error)

        if review_request:
            logging.debug('Found review request ID %d' % review_request.id)
            return review_request.id, review_request.absolute_url
        else:
            logging.debug('Could not find a matching review request')
            return None, None
Beispiel #3
0
    def determine_review_request(self, revisions):
        """Determine the correct review request for a commit.

        Args:
            revisions (dict):
                The parsed revisions from the command line.

        Returns:
            tuple:
            A 2-tuple of the matched review request ID, and the review request
            URL. If no matching review request is found, both values will be
            ``None``.

        Raises:
            rbtools.commands.CommandError:
                An error occurred while attempting to find a matching review
                request.
        """
        # First, try to match the changeset to a review request directly.
        if self.tool.supports_changesets:
            review_request = find_review_request_by_change_id(
                api_client=self.api_client,
                api_root=self.api_root,
                revisions=revisions,
                repository_id=self.repository.id)

            if review_request and review_request.id:
                return review_request.id, review_request.absolute_url

        # Fall back on guessing based on the description. This may return None
        # if no suitable review request is found.
        logging.debug('Attempting to guess review request based on '
                      'summary and description')

        try:
            review_request = guess_existing_review_request(
                api_root=self.api_root,
                api_client=self.api_client,
                tool=self.tool,
                revisions=revisions,
                guess_summary=False,
                guess_description=False,
                is_fuzzy_match_func=self._ask_review_request_match,
                no_commit_error=self.no_commit_error,
                repository_id=self.repository.id)
        except ValueError as e:
            raise CommandError(six.text_type(e))

        if review_request:
            logging.debug('Found review request ID %d', review_request.id)
            return review_request.id, review_request.absolute_url
        else:
            logging.debug('Could not find a matching review request')
            return None, None