From c8950f34b1b6bb21d6cf66585d91835cd048af5a Mon Sep 17 00:00:00 2001 From: Joseph Schorr Date: Tue, 11 Apr 2017 15:00:20 -0400 Subject: [PATCH] Fix avatar URLs for non-owner namespaces in Gitlab --- buildtrigger/gitlabhandler.py | 8 +++++++- buildtrigger/test/gitlabmock.py | 16 +++++++++++----- 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/buildtrigger/gitlabhandler.py b/buildtrigger/gitlabhandler.py index c5966c4f7..0ddbfc3a3 100644 --- a/buildtrigger/gitlabhandler.py +++ b/buildtrigger/gitlabhandler.py @@ -277,11 +277,17 @@ class GitLabBuildTrigger(BuildTriggerHandler): for repo in repositories: namespace = repo['namespace'] namespace_id = namespace['id'] + + avatar_url = '' + if 'avatar' in namespace: + avatar_url = namespace.get('avatar', {}).get('url') + elif 'owner' in repo: + avatar_url = repo.get('owner', {}).get('avatar_url') + if namespace_id in namespaces: namespaces[namespace_id]['score'] = namespaces[namespace_id]['score'] + 1 else: owner = repo['namespace']['name'] - avatar_url = repo.get('owner', {}).get('avatar_url') namespaces[namespace_id] = { 'personal': owner == current_user['username'], 'id': namespace['path'], diff --git a/buildtrigger/test/gitlabmock.py b/buildtrigger/test/gitlabmock.py index 2739a539f..e792c30d1 100644 --- a/buildtrigger/test/gitlabmock.py +++ b/buildtrigger/test/gitlabmock.py @@ -26,8 +26,8 @@ def get_currentuser_mock(): 'username': 'knownuser' } -def project(namespace, name): - return { +def project(namespace, name, is_org=False): + data = { 'id': '%s/%s' % (namespace, name), 'default_branch': 'master', 'namespace': { @@ -52,11 +52,17 @@ def project(namespace, name): } } + if is_org: + del data['owner']['avatar_url'] + data['namespace']['avatar'] = {'url': 'avatarurl'} + + return data + def getprojects_mock(page=1, per_page=100): return [ project('knownuser', 'somerepo'), - project('someorg', 'somerepo'), - project('someorg', 'anotherrepo'), + project('someorg', 'somerepo', is_org=True), + project('someorg', 'anotherrepo', is_org=True), ] def getproject_mock(project_name): @@ -64,7 +70,7 @@ def getproject_mock(project_name): return project('knownuser', 'somerepo') if project_name == 'foo/bar': - return project('foo', 'bar') + return project('foo', 'bar', is_org=True) return False