From a7a72f78bd6e245512daf58ee85becc337fc1fb5 Mon Sep 17 00:00:00 2001 From: Wenkai Yin Date: Tue, 20 Mar 2018 19:09:06 +0800 Subject: [PATCH] Return role and repository count info in GET project API --- src/ui/api/project.go | 44 ++++++++++++++++++++++++------------------- 1 file changed, 25 insertions(+), 19 deletions(-) diff --git a/src/ui/api/project.go b/src/ui/api/project.go index 8544ca14c..3c34bb2c2 100644 --- a/src/ui/api/project.go +++ b/src/ui/api/project.go @@ -199,6 +199,8 @@ func (p *ProjectAPI) Get() { } } + p.populateProperties(p.project) + p.Data["json"] = p.project p.ServeJSON() } @@ -372,25 +374,7 @@ func (p *ProjectAPI) List() { } for _, project := range result.Projects { - if p.SecurityCtx.IsAuthenticated() { - roles := p.SecurityCtx.GetProjectRoles(project.ProjectID) - if len(roles) != 0 { - project.Role = roles[0] - } - - if project.Role == common.RoleProjectAdmin || - p.SecurityCtx.IsSysAdmin() { - project.Togglable = true - } - } - - repos, err := dao.GetRepositoryByProjectName(project.Name) - if err != nil { - log.Errorf("failed to get repositories of project %s: %v", project.Name, err) - p.CustomAbort(http.StatusInternalServerError, "") - } - - project.RepoCount = len(repos) + p.populateProperties(project) } p.SetPaginationHeader(result.Total, page, size) @@ -398,6 +382,28 @@ func (p *ProjectAPI) List() { p.ServeJSON() } +func (p *ProjectAPI) populateProperties(project *models.Project) { + if p.SecurityCtx.IsAuthenticated() { + roles := p.SecurityCtx.GetProjectRoles(project.ProjectID) + if len(roles) != 0 { + project.Role = roles[0] + } + + if project.Role == common.RoleProjectAdmin || + p.SecurityCtx.IsSysAdmin() { + project.Togglable = true + } + } + + repos, err := dao.GetRepositoryByProjectName(project.Name) + if err != nil { + log.Errorf("failed to get repositories of project %s: %v", project.Name, err) + p.CustomAbort(http.StatusInternalServerError, "") + } + + project.RepoCount = len(repos) +} + // Put ... func (p *ProjectAPI) Put() { if !p.SecurityCtx.IsAuthenticated() {