From 735ca86cfcea45035499bcd4cb7b3382983c45d0 Mon Sep 17 00:00:00 2001 From: Lukas Holecek Date: Wed, 26 Oct 2022 07:26:44 +0200 Subject: [PATCH] Use project or group avatar for GitLab repos --- reviewrot/gitlabstack.py | 29 +++++++++++++++-------------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/reviewrot/gitlabstack.py b/reviewrot/gitlabstack.py index d711177..df6fc82 100644 --- a/reviewrot/gitlabstack.py +++ b/reviewrot/gitlabstack.py @@ -10,6 +10,8 @@ log = logging.getLogger(__name__) +DEFAULT_IMAGE = "https://docs.gitlab.com/assets/images/gitlab-logo.svg" + class GitlabService(BaseService): """ @@ -74,12 +76,16 @@ def request_reviews( raise Exception( "Project %s not found for user %s" % (repo_name, user_name) ) + + group = gl.groups.get(project.namespace["id"]) + # get merge requests for specified username and project name res = self.get_reviews( uname=user_name, project=project, age=age, show_last_comment=show_last_comment, + image=project.avatar_url or group.avatar_url or DEFAULT_IMAGE, ) # extend in case of a non empty result if res: @@ -102,14 +108,19 @@ def request_reviews( for group_project in group_projects: project = gl.projects.get(group_project.id) - res = self.get_reviews(uname=user_name, project=project, age=age) + res = self.get_reviews( + uname=user_name, + project=project, + age=age, + image=project.avatar_url or group.avatar_url or DEFAULT_IMAGE, + ) # extend in case of a non empty result if res: response.extend(res) return response - def get_reviews(self, uname, project, age=None, show_last_comment=None): + def get_reviews(self, uname, project, age=None, show_last_comment=None, image=None): """ Fetches merge requests for specified username(groupname) and repo(project) name. @@ -186,16 +197,14 @@ def get_reviews(self, uname, project, age=None, show_last_comment=None): ) continue - res = GitlabReview( + res = BaseReview( user=mr.author["username"], title=mr.title, url=mr.web_url, time=mr_date, updated_time=mr_updated_date, comments=mr.user_notes_count, - # XXX - I don't know how to find gitlab avatars - # for now. Can we figure this out later? - image=GitlabReview.logo, + image=image, last_comment=last_comment, project_name=project.name, project_url=project.web_url, @@ -225,11 +234,3 @@ def get_last_comment(self, mr): note.created_at, "%Y-%m-%dT%H:%M:%S.%fZ" ), ) - - -class GitlabReview(BaseReview): - """TODO: docstring goes here.""" - - # XXX - Here just until we figure out how to do gitlab avatars. - logo = "https://docs.gitlab.com/assets/images/gitlab-logo.svg" - pass