From 80e2739b41bbe5a9d8e3990448cd80acf35b1e74 Mon Sep 17 00:00:00 2001 From: Joseph Schorr <josephschorr@users.noreply.github.com> Date: Mon, 27 Jul 2015 16:01:52 -0400 Subject: [PATCH] Manually load GHE org repos if none returned by default Fixes #276 --- endpoints/trigger.py | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/endpoints/trigger.py b/endpoints/trigger.py index 2e7af945a..f3c43c784 100644 --- a/endpoints/trigger.py +++ b/endpoints/trigger.py @@ -729,12 +729,14 @@ class GithubBuildTrigger(BuildTriggerHandler): raise RepositoryReadException('Unable to list user repositories') namespaces = {} + has_non_personal = False for repository in repos: namespace = repository.owner.login if not namespace in namespaces: + is_personal_repo = namespace == usr.login namespaces[namespace] = { - 'personal': namespace == usr.login, + 'personal': is_personal_repo, 'repos': [], 'info': { 'name': namespace, @@ -742,8 +744,27 @@ class GithubBuildTrigger(BuildTriggerHandler): } } + if not is_personal_repo: + has_non_personal = True + namespaces[namespace]['repos'].append(repository.full_name) + # In older versions of GitHub Enterprise, the get_repos call above does not + # return any non-personal repositories. In that case, we need to lookup the + # repositories manually. + # TODO: Remove this once we no longer support GHE versions <= 2.1 + if not has_non_personal: + for org in usr.get_orgs(): + repo_list = [repo.full_name for repo in org.get_repos(type='member')] + namespaces[org.name] = { + 'personal': False, + 'repos': repo_list, + 'info': { + 'name': org.name or org.login, + 'avatar_url': org.avatar_url + } + } + entries = list(namespaces.values()) entries.sort(key=lambda e: e['info']['name']) return entries