def _set_pr_labels(self, pr_event, resources) -> bool: ''' @ return True if the required label was set ''' required_labels = { resource.source.get('label') for resource in resources if resource.source.get('label') is not None } if not required_labels: return False repo = pr_event.repository() repository_path = repo.repository_path() pr_number = pr_event.number() github_cfg = self.cfg_set.github() owner, name = repository_path.split('/') github_helper = GitHubRepositoryHelper( owner, name, github_cfg=github_cfg, ) sender_login = pr_event.sender()['login'] if pr_event.action() is PullRequestAction.OPENED: if github_helper.is_pr_created_by_org_member(pr_number): logger.info( f"New pull request by member of '{owner}' in '{repository_path}' found. " f"Setting required labels '{required_labels}'.") github_helper.add_labels_to_pull_request( pr_number, *required_labels) return True else: logger.debug( f"New pull request by member in '{repository_path}' found, but creator is not " f"member of '{owner}' - will not set required labels.") github_helper.add_comment_to_pr( pull_request_number=pr_number, comment= (f"Thank you @{sender_login} for your contribution. Before I can start " "building your PR, a member of the organization must set the required " f"label(s) {required_labels}. Once started, you can check the build " "status in the PR checks section below.")) return False elif pr_event.action() is PullRequestAction.SYNCHRONIZE: if github_helper.is_org_member(organization_name=owner, user_login=sender_login): logger.info( f"Update to pull request #{pr_event.number()} by org member '{sender_login}' " f" in '{repository_path}' found. Setting required labels '{required_labels}'." ) github_helper.add_labels_to_pull_request( pr_number, *required_labels) return True else: logger.debug( f"Update to pull request #{pr_event.number()} by '{sender_login}' " f" in '{repository_path}' found. Ignoring, since they are not an org member'." ) return False return False
def _set_pr_labels(self, pr_event, resources): required_labels = { resource.source.get('label') for resource in resources if resource.source.get('label') is not None } repo = pr_event.repository() repository_path = repo.repository_path() pr_number = pr_event.number() github_cfg = self.cfg_set.github() owner, name = repository_path.split('/') github_helper = GitHubRepositoryHelper( owner, name, github_cfg=github_cfg, ) if pr_event.action() is PullRequestAction.OPENED: if github_helper.is_pr_created_by_org_member(pr_number): app.logger.info( f"New pull request by member of '{owner}' in '{repository_path}' found. " f"Setting required labels '{required_labels}'.") github_helper.add_labels_to_pull_request( pr_number, *required_labels) else: app.logger.debug( f"New pull request by member in '{repository_path}' found, but creator is not " f"member of '{owner}' - will not set required labels.") elif pr_event.action() is PullRequestAction.SYNCHRONIZE: sender_login = pr_event.sender()['login'] if github_helper.is_org_member(organization_name=owner, user_login=sender_login): app.logger.info( f"Update to pull request #{pr_event.number()} by org member '{sender_login}' " f" in '{repository_path}' found. Setting required labels '{required_labels}'." ) github_helper.add_labels_to_pull_request( pr_number, *required_labels) else: app.logger.debug( f"Update to pull request #{pr_event.number()} by '{sender_login}' " f" in '{repository_path}' found. Ignoring, since they are not an org member'." )