Exemplo n.º 1
0
def convert_pr(pr: PullRequest) -> GprrPR:
    """
        Converts PyGithub pull request representation to GPRR pull request representation

        :param pr: PyGithub pull request
        :return: GPRR pull request
    """
    gprr_pr = GprrPR()
    gprr_pr.id = pr.id
    gprr_pr.number = pr.number
    gprr_pr.url = pr.html_url
    gprr_pr.repository = convert_repo(pr.head.repo)
    gprr_pr.title = pr.title
    gprr_pr.creator = convert_user(pr.user)
    gprr_pr.created = pr.created_at
    gprr_pr.updated = pr.updated_at
    gprr_pr.since_updated = (datetime.today() - gprr_pr.updated).days
    gprr_pr.flags.append(GprrPrFlag("Draft", str(pr.draft)))
    gprr_pr.flags.append(GprrPrFlag("Mergeable", str(pr.mergeable)))
    gprr_pr.flags.append(GprrPrFlag("Mergeable State",
                                    str(pr.mergeable_state)))
    gprr_pr.initial_branch = pr.head.ref

    for assignee in pr.assignees:
        gprr_pr.assignees.append(convert_user(assignee))

    for label in pr.get_labels(
    ):  # this makes additional call to Github REST API
        gprr_pr.labels.append(convert_label(label))

    active_reviewers = []
    for review in pr.get_reviews(
    ):  # this makes additional call to Github REST API
        reviewer = convert_user(review.user)
        if not known_review(active_reviewers, reviewer):
            active_reviewers.append(reviewer)
            gprr_review = GprrReview(
                user=reviewer,
                state=review.state,
                submitted_at=review.submitted_at,
                url=review.html_url,
            )
            gprr_pr.reviews.append(gprr_review)

    pr_review_requests = pr.get_review_requests()
    for revusr in pr_review_requests[
            0]:  # this makes additional call to Github REST API
        usr = convert_user(revusr)
        review = GprrReview(user=usr, state="PENDING")
        gprr_pr.reviews_pending.append(review)

    # for revteam in pr_review_requests[1]:
    #     team_as_user = convert_team_to_user(revteam)
    #     review = GprrReview(user=team_as_user, state="PENDING")
    #     gprr_pr.reviews_pending.append(review)

    return gprr_pr
Exemplo n.º 2
0
    def extract_pull_request_review_requests(
            pull_request: GithubPullRequest) -> List[str]:
        """Extract features from requested reviews of the PR.

        GitHub understands review requests rather as requested reviewers than actual
        requests.

        Arguments:
            pull_request {PullRequest} -- PR of which we can extract review requests.

        Returns:
            List[str] -- list of logins of the requested reviewers

        """
        requested_users = pull_request.get_review_requests()[0]

        extracted = []
        for user in requested_users:
            extracted.append(user.login)
        return extracted