def get(self, *args, **kwargs): """ Augmented `get()` method: - Adds support for `fork_name` to allow to query the github org & repo using a single argument """ fork_name = kwargs.pop('fork_name', None) if fork_name is not None: kwargs['github_organization_name'], kwargs['github_repository_name'] = fork_name2tuple(fork_name) return super().get(*args, **kwargs)
def set_fork_name(self, fork_name): """ Set the organization and repository based on the GitHub fork name """ assert not self.github_organization_name assert not self.github_repository_name self.logger.info('Setting fork name: %s', fork_name) fork_org, fork_repo = github.fork_name2tuple(fork_name) self.github_organization_name = fork_org self.github_repository_name = fork_repo
def get_or_create_from_pr(self, pr, watched_fork=None): """ Get or create an instance for the given pull request """ github_organization_name, github_repository_name = fork_name2tuple(pr.fork_name) watched_pr, created = super().get_or_create( github_pr_url=pr.github_pr_url, github_organization_name=github_organization_name, github_repository_name=github_repository_name, branch_name=pr.branch_name, watched_fork=watched_fork, ) if created: watched_pr.update_instance_from_pr(pr) return watched_pr.instance, created
def test_fork_name2tuple(self): """ Conversion of `fork_name` to `fork_tuple` """ self.assertEqual(github.fork_name2tuple('open-craft/edx-platform'), ['open-craft', 'edx-platform'])