diff options
author | Jimmy Praet <jimmy.praet@telenet.be> | 2020-12-27 20:58:03 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-12-27 21:58:03 +0200 |
commit | 40274b4a935fff50e223751ce3653c2549352b10 (patch) | |
tree | a526f098018a04bbb12bccbebc6122ca209fa732 /routers/user | |
parent | 25f8970b2cc5d2c9fd357ef2c60a54886154f6c9 (diff) | |
download | gitea-40274b4a935fff50e223751ce3653c2549352b10.tar.gz gitea-40274b4a935fff50e223751ce3653c2549352b10.zip |
Team dashboards (#14159)
Diffstat (limited to 'routers/user')
-rw-r--r-- | routers/user/home.go | 68 |
1 files changed, 37 insertions, 31 deletions
diff --git a/routers/user/home.go b/routers/user/home.go index 92a9138475..27b7f3c29b 100644 --- a/routers/user/home.go +++ b/routers/user/home.go @@ -42,17 +42,8 @@ func getDashboardContextUser(ctx *context.Context) *models.User { ctxUser := ctx.User orgName := ctx.Params(":org") if len(orgName) > 0 { - // Organization. - org, err := models.GetUserByName(orgName) - if err != nil { - if models.IsErrUserNotExist(err) { - ctx.NotFound("GetUserByName", err) - } else { - ctx.ServerError("GetUserByName", err) - } - return nil - } - ctxUser = org + ctxUser = ctx.Org.Organization + ctx.Data["Teams"] = ctx.Org.Organization.Teams } ctx.Data["ContextUser"] = ctxUser @@ -112,12 +103,13 @@ func Dashboard(ctx *context.Context) { ctx.Data["PageIsDashboard"] = true ctx.Data["PageIsNews"] = true ctx.Data["SearchLimit"] = setting.UI.User.RepoPagingNum + // no heatmap access for admins; GetUserHeatmapDataByUser ignores the calling user // so everyone would get the same empty heatmap if setting.Service.EnableUserHeatmap && !ctxUser.KeepActivityPrivate { - data, err := models.GetUserHeatmapDataByUser(ctxUser, ctx.User) + data, err := models.GetUserHeatmapDataByUserTeam(ctxUser, ctx.Org.Team, ctx.User) if err != nil { - ctx.ServerError("GetUserHeatmapDataByUser", err) + ctx.ServerError("GetUserHeatmapDataByUserTeam", err) return } ctx.Data["HeatmapData"] = data @@ -126,12 +118,16 @@ func Dashboard(ctx *context.Context) { var err error var mirrors []*models.Repository if ctxUser.IsOrganization() { - env, err := ctxUser.AccessibleReposEnv(ctx.User.ID) - if err != nil { - ctx.ServerError("AccessibleReposEnv", err) - return + var env models.AccessibleReposEnvironment + if ctx.Org.Team != nil { + env = ctxUser.AccessibleTeamReposEnv(ctx.Org.Team) + } else { + env, err = ctxUser.AccessibleReposEnv(ctx.User.ID) + if err != nil { + ctx.ServerError("AccessibleReposEnv", err) + return + } } - mirrors, err = env.MirrorRepos() if err != nil { ctx.ServerError("env.MirrorRepos", err) @@ -155,6 +151,7 @@ func Dashboard(ctx *context.Context) { retrieveFeeds(ctx, models.GetFeedsOptions{ RequestedUser: ctxUser, + RequestedTeam: ctx.Org.Team, Actor: ctx.User, IncludePrivate: true, OnlyPerformedBy: false, @@ -183,16 +180,20 @@ func Milestones(ctx *context.Context) { return } - var ( - repoOpts = models.SearchRepoOptions{ - Actor: ctxUser, - OwnerID: ctxUser.ID, - Private: true, - AllPublic: false, // Include also all public repositories of users and public organisations - AllLimited: false, // Include also all public repositories of limited organisations - HasMilestones: util.OptionalBoolTrue, // Just needs display repos has milestones - } + repoOpts := models.SearchRepoOptions{ + Actor: ctxUser, + OwnerID: ctxUser.ID, + Private: true, + AllPublic: false, // Include also all public repositories of users and public organisations + AllLimited: false, // Include also all public repositories of limited organisations + HasMilestones: util.OptionalBoolTrue, // Just needs display repos has milestones + } + + if ctxUser.IsOrganization() && ctx.Org.Team != nil { + repoOpts.TeamID = ctx.Org.Team.ID + } + var ( userRepoCond = models.SearchRepositoryCondition(&repoOpts) // all repo condition user could visit repoCond = userRepoCond repoIDs []int64 @@ -412,10 +413,15 @@ func Issues(ctx *context.Context) { var err error var userRepoIDs []int64 if ctxUser.IsOrganization() { - env, err := ctxUser.AccessibleReposEnv(ctx.User.ID) - if err != nil { - ctx.ServerError("AccessibleReposEnv", err) - return + var env models.AccessibleReposEnvironment + if ctx.Org.Team != nil { + env = ctxUser.AccessibleTeamReposEnv(ctx.Org.Team) + } else { + env, err = ctxUser.AccessibleReposEnv(ctx.User.ID) + if err != nil { + ctx.ServerError("AccessibleReposEnv", err) + return + } } userRepoIDs, err = env.RepoIDs(1, ctxUser.NumRepos) if err != nil { |