diff --git a/models/org.go b/models/org.go index 706b18897..4565dd88e 100644 --- a/models/org.go +++ b/models/org.go @@ -65,13 +65,11 @@ func (org *User) GetMembers() error { return err } - org.Members = make([]*User, len(ous)) + var ids = make([]int64, len(ous)) for i, ou := range ous { - org.Members[i], err = GetUserByID(ou.Uid) - if err != nil { - return err - } + ids[i] = ou.Uid } + org.Members, _ = GetUsersByIDs(ids) return nil } @@ -190,7 +188,7 @@ func CountOrganizations() int64 { // Organizations returns number of organizations in given page. func Organizations(page, pageSize int) ([]*User, error) { orgs := make([]*User, 0, pageSize) - return orgs, x.Limit(pageSize, (page-1)*pageSize).Where("type=1").Asc("id").Find(&orgs) + return orgs, x.Limit(pageSize, (page-1)*pageSize).Where("type=1").Asc("name").Find(&orgs) } // DeleteOrganization completely and permanently deletes everything of organization. @@ -261,7 +259,7 @@ func getOrgsByUserID(sess *xorm.Session, userID int64, showAll bool) ([]*User, e sess.And("`org_user`.is_public=?", true) } return orgs, sess.And("`org_user`.uid=?", userID). - Join("INNER", "`org_user`", "`org_user`.org_id=`user`.id").Find(&orgs) + Join("INNER", "`org_user`", "`org_user`.org_id=`user`.id").Asc("name").Find(&orgs) } // GetOrgsByUserID returns a list of organizations that the given user ID @@ -279,7 +277,7 @@ func GetOrgsByUserIDDesc(userID int64, desc string, showAll bool) ([]*User, erro func getOwnedOrgsByUserID(sess *xorm.Session, userID int64) ([]*User, error) { orgs := make([]*User, 0, 10) return orgs, sess.Where("`org_user`.uid=?", userID).And("`org_user`.is_owner=?", true). - Join("INNER", "`org_user`", "`org_user`.org_id=`user`.id").Find(&orgs) + Join("INNER", "`org_user`", "`org_user`.org_id=`user`.id").Asc("name").Find(&orgs) } // GetOwnedOrgsByUserID returns a list of organizations are owned by given user ID. @@ -298,12 +296,16 @@ func GetOwnedOrgsByUserIDDesc(userID int64, desc string) ([]*User, error) { // GetOrgUsersByUserID returns all organization-user relations by user ID. func GetOrgUsersByUserID(uid int64, all bool) ([]*OrgUser, error) { ous := make([]*OrgUser, 0, 10) - sess := x.Where("uid=?", uid) + sess := x. + Join("LEFT", "user", `"org_user".org_id="user".id`). + Where("uid=?", uid) if !all { // Only show public organizations sess.And("is_public=?", true) } - err := sess.Find(&ous) + err := sess. + Asc("name"). + Find(&ous) return ous, err } @@ -453,6 +455,8 @@ func (org *User) getUserTeams(e Engine, userID int64, cols ...string) ([]*Team, return teams, e.Where("team_user.org_id = ?", org.ID). And("team_user.uid = ?", userID). Join("INNER", "team_user", "team_user.team_id = team.id"). + Join("INNER", "user", `"user".id=team_user.uid`). + Asc("user.name"). Cols(cols...).Find(&teams) } @@ -495,7 +499,7 @@ func (org *User) GetUserRepositories(userID int64, page, pageSize int) ([]*Repos repos := make([]*Repository, 0, pageSize) // FIXME: use XORM chain operations instead of raw SQL. if err = x.Sql(fmt.Sprintf(`SELECT repository.* FROM repository - INNER JOIN team_repo + INNER JOIN team_repo ON team_repo.repo_id = repository.id WHERE (repository.owner_id = ? AND repository.is_private = ?) OR team_repo.team_id IN (%s) GROUP BY repository.id @@ -507,7 +511,7 @@ func (org *User) GetUserRepositories(userID int64, page, pageSize int) ([]*Repos } results, err := x.Query(fmt.Sprintf(`SELECT repository.id FROM repository - INNER JOIN team_repo + INNER JOIN team_repo ON team_repo.repo_id = repository.id WHERE (repository.owner_id = ? AND repository.is_private = ?) OR team_repo.team_id IN (%s) GROUP BY repository.id @@ -534,7 +538,7 @@ func (org *User) GetUserMirrorRepositories(userID int64) ([]*Repository, error) repos := make([]*Repository, 0, 10) if err = x.Sql(fmt.Sprintf(`SELECT repository.* FROM repository - INNER JOIN team_repo + INNER JOIN team_repo ON team_repo.repo_id = repository.id AND repository.is_mirror = ? WHERE (repository.owner_id = ? AND repository.is_private = ?) OR team_repo.team_id IN (%s) GROUP BY repository.id diff --git a/models/user.go b/models/user.go index 946c6c94d..4223b2a21 100644 --- a/models/user.go +++ b/models/user.go @@ -578,7 +578,7 @@ func CountUsers() int64 { // Users returns number of users in given page. func Users(page, pageSize int) ([]*User, error) { users := make([]*User, 0, pageSize) - return users, x.Limit(pageSize, (page-1)*pageSize).Where("type=0").Asc("id").Find(&users) + return users, x.Limit(pageSize, (page-1)*pageSize).Where("type=0").Asc("name").Find(&users) } // get user by erify code @@ -923,6 +923,13 @@ func GetUserEmailsByNames(names []string) []string { return mails } +// GetUsersByIDs returns all resolved users from a list of Ids. +func GetUsersByIDs(ids []int64) ([]*User, error) { + ous := make([]*User, 0, len(ids)) + err := x.In("id", ids).Asc("name").Find(&ous) + return ous, err +} + // GetUserIDsByNames returns a slice of ids corresponds to names. func GetUserIDsByNames(names []string) []int64 { ids := make([]int64, 0, len(names)) diff --git a/routers/admin/repos.go b/routers/admin/repos.go index 5eacb5ed3..9f194b9ab 100644 --- a/routers/admin/repos.go +++ b/routers/admin/repos.go @@ -27,7 +27,7 @@ func Repos(ctx *context.Context) { Ranger: models.Repositories, Private: true, PageSize: setting.UI.Admin.RepoPagingNum, - OrderBy: "id ASC", + OrderBy: "owner_id ASC, name ASC, id ASC", TplName: REPOS, }) } diff --git a/routers/home.go b/routers/home.go index 22a131a62..cbaf21086 100644 --- a/routers/home.go +++ b/routers/home.go @@ -176,7 +176,7 @@ func ExploreUsers(ctx *context.Context) { Counter: models.CountUsers, Ranger: models.Users, PageSize: setting.UI.ExplorePagingNum, - OrderBy: "updated_unix DESC", + OrderBy: "name ASC", TplName: EXPLORE_USERS, }) } @@ -191,7 +191,7 @@ func ExploreOrganizations(ctx *context.Context) { Counter: models.CountOrganizations, Ranger: models.Organizations, PageSize: setting.UI.ExplorePagingNum, - OrderBy: "updated_unix DESC", + OrderBy: "name ASC", TplName: EXPLORE_ORGANIZATIONS, }) } diff --git a/templates/admin/org/list.tmpl b/templates/admin/org/list.tmpl index 6b9423d03..e69eb56c3 100644 --- a/templates/admin/org/list.tmpl +++ b/templates/admin/org/list.tmpl @@ -15,7 +15,6 @@ - @@ -27,7 +26,6 @@ {{range .Users}} - diff --git a/templates/admin/repo/list.tmpl b/templates/admin/repo/list.tmpl index 4b1d98b94..6ca4d6657 100644 --- a/templates/admin/repo/list.tmpl +++ b/templates/admin/repo/list.tmpl @@ -15,7 +15,6 @@
ID {{.i18n.Tr "admin.orgs.name"}} {{.i18n.Tr "admin.orgs.teams"}} {{.i18n.Tr "admin.orgs.members"}}
{{.ID}} {{.Name}} {{.NumTeams}} {{.NumMembers}}
- @@ -29,7 +28,6 @@ {{range .Repos}} - diff --git a/templates/admin/user/list.tmpl b/templates/admin/user/list.tmpl index 8c7a0c9a9..8d60efc7f 100644 --- a/templates/admin/user/list.tmpl +++ b/templates/admin/user/list.tmpl @@ -18,7 +18,6 @@
ID {{.i18n.Tr "admin.repos.owner"}} {{.i18n.Tr "admin.repos.name"}} {{.i18n.Tr "admin.repos.private"}}
{{.ID}} {{.Owner.Name}} {{.Name}}
- @@ -31,7 +30,6 @@ {{range .Users}} -
ID {{.i18n.Tr "admin.users.name"}} {{.i18n.Tr "email"}} {{.i18n.Tr "admin.users.activated"}}
{{.ID}} {{.Name}}