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
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