From 7e77d52230266caa061f43b17a4871cea2729da3 Mon Sep 17 00:00:00 2001 From: Iryna Shcherbina Date: Dec 07 2017 14:23:38 +0000 Subject: Check if the PR is already there, in that case just rebase --- diff --git a/fix_requires.py b/fix_requires.py index 9d00f1f..766973e 100644 --- a/fix_requires.py +++ b/fix_requires.py @@ -198,6 +198,14 @@ def main(packages, dirname, no_mock_build, no_koji_build, pagure, local_repo.git_commit(COMMIT) local_repo.git_push(remote_name, GIT_BRANCH) + # If the PR is already there, then the script is being run + # the second time, and just pushing to a fork is enough. + pr = pagure_fork.has_upstream_pr_with( + title=COMMIT, branch_from=GIT_BRANCH) + if pr: + logger.info(f"The PR was already opened: {pr}") + continue + pagure_fork.create_pull_request( from_branch=GIT_BRANCH, to_branch='master', diff --git a/fixrequires/pagure_fork.py b/fixrequires/pagure_fork.py index ef82791..e55c1ff 100644 --- a/fixrequires/pagure_fork.py +++ b/fixrequires/pagure_fork.py @@ -78,3 +78,12 @@ class PagureFork(object): request_url = f"{self.pagure.instance}/api/0/rpms/{self.pagure.repo}/git/branches" return_value = self.pagure._call_api(request_url) return 'el6' in return_value["branches"] or 'epel7' in return_value["branches"] + + def has_upstream_pr_with(self, **kwargs): + request_url = ( + f'{self.pagure.instance}/api/0/rpms/{self.package_name}' + '/pull-requests?status=All') + return_value = self.pagure._call_api(request_url) + for request in return_value['requests']: + if any(value in request[key] for key, value in kwargs.items()): + return f'{self.pagure.instance}/rpms/{self.package_name}/pull-request/{request["id"]}' diff --git a/fixrequires/pagure_pr.py b/fixrequires/pagure_pr.py index e3d2018..709c6e0 100644 --- a/fixrequires/pagure_pr.py +++ b/fixrequires/pagure_pr.py @@ -11,9 +11,6 @@ def create_pull_request(url, title, description, Only if not created yet. Pagure API does not allow this yet, so selenium it is. """ - - # TODO: check if the PR is not yet there, in case the script - # is being run the second time for this project. driver = webdriver.Firefox() driver.get(url)