Browse Source

Ordering organizations and users by name

tags/v1.0.0
Thibault Meyer 7 years ago
parent
commit
3a10a0c1ca
No account linked to committer's email address
4 changed files with 41 additions and 21 deletions
  1. 30
    17
      models/org.go
  2. 8
    1
      models/user.go
  3. 1
    1
      routers/admin/repos.go
  4. 2
    2
      routers/home.go

+ 30
- 17
models/org.go View File

return err return err
} }


org.Members = make([]*User, len(ous))
var ids = make([]int64, len(ous))
for i, ou := range ous { for i, ou := range ous {
org.Members[i], err = GetUserByID(ou.Uid)
if err != nil {
return err
}
ids[i] = ou.Uid
} }
return nil
org.Members, err = GetUsersByIDs(ids)
return err
} }


// AddMember adds new member to organization. // AddMember adds new member to organization.
// Organizations returns number of organizations in given page. // Organizations returns number of organizations in given page.
func Organizations(page, pageSize int) ([]*User, error) { func Organizations(page, pageSize int) ([]*User, error) {
orgs := make([]*User, 0, pageSize) 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. // DeleteOrganization completely and permanently deletes everything of organization.
if !showAll { if !showAll {
sess.And("`org_user`.is_public=?", true) 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)
return orgs, sess.
And("`org_user`.uid=?", userID).
Join("INNER", "`org_user`", "`org_user`.org_id=`user`.id").
Asc("`user`.name").
Find(&orgs)
} }


// GetOrgsByUserID returns a list of organizations that the given user ID // GetOrgsByUserID returns a list of organizations that the given user ID


func getOwnedOrgsByUserID(sess *xorm.Session, userID int64) ([]*User, error) { func getOwnedOrgsByUserID(sess *xorm.Session, userID int64) ([]*User, error) {
orgs := make([]*User, 0, 10) 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)
return orgs, sess.
Where("`org_user`.uid=?", userID).
And("`org_user`.is_owner=?", true).
Join("INNER", "`org_user`", "`org_user`.org_id=`user`.id").
Asc("`user`.name").
Find(&orgs)
} }


// GetOwnedOrgsByUserID returns a list of organizations are owned by given user ID. // GetOwnedOrgsByUserID returns a list of organizations are owned by given user ID.
// GetOrgUsersByUserID returns all organization-user relations by user ID. // GetOrgUsersByUserID returns all organization-user relations by user ID.
func GetOrgUsersByUserID(uid int64, all bool) ([]*OrgUser, error) { func GetOrgUsersByUserID(uid int64, all bool) ([]*OrgUser, error) {
ous := make([]*OrgUser, 0, 10) ous := make([]*OrgUser, 0, 10)
sess := x.Where("uid=?", uid)
sess := x.
Join("LEFT", "user", `"org_user".org_id="user".id`).
Where(`"org_user".uid=?`, uid)
if !all { if !all {
// Only show public organizations // Only show public organizations
sess.And("is_public=?", true) sess.And("is_public=?", true)
} }
err := sess.Find(&ous)
err := sess.
Asc("`user`.name").
Find(&ous)
return ous, err return ous, err
} }




func (org *User) getUserTeams(e Engine, userID int64, cols ...string) ([]*Team, error) { func (org *User) getUserTeams(e Engine, userID int64, cols ...string) ([]*Team, error) {
teams := make([]*Team, 0, org.NumTeams) teams := make([]*Team, 0, org.NumTeams)
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").
Cols(cols...).Find(&teams)
return teams, e.
Where("`team_user`.org_id = ?", org.ID).
Join("INNER", "team_user", "`team_user`.team_id = team.id").
Join("INNER", "user", "`user`.id=team_user.uid").
And("`team_user`.uid = ?", userID).
Asc("`user`.name").
Cols(cols...).
Find(&teams)
} }


// GetUserTeamIDs returns of all team IDs of the organization that user is memeber of. // GetUserTeamIDs returns of all team IDs of the organization that user is memeber of.

+ 8
- 1
models/user.go View File

// Users returns number of users in given page. // Users returns number of users in given page.
func Users(page, pageSize int) ([]*User, error) { func Users(page, pageSize int) ([]*User, error) {
users := make([]*User, 0, pageSize) 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 // get user by erify code
return mails 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. // GetUserIDsByNames returns a slice of ids corresponds to names.
func GetUserIDsByNames(names []string) []int64 { func GetUserIDsByNames(names []string) []int64 {
ids := make([]int64, 0, len(names)) ids := make([]int64, 0, len(names))

+ 1
- 1
routers/admin/repos.go View File

Ranger: models.Repositories, Ranger: models.Repositories,
Private: true, Private: true,
PageSize: setting.UI.Admin.RepoPagingNum, PageSize: setting.UI.Admin.RepoPagingNum,
OrderBy: "id ASC",
OrderBy: "owner_id ASC, name ASC, id ASC",
TplName: REPOS, TplName: REPOS,
}) })
} }

+ 2
- 2
routers/home.go View File

Counter: models.CountUsers, Counter: models.CountUsers,
Ranger: models.Users, Ranger: models.Users,
PageSize: setting.UI.ExplorePagingNum, PageSize: setting.UI.ExplorePagingNum,
OrderBy: "updated_unix DESC",
OrderBy: "name ASC",
TplName: EXPLORE_USERS, TplName: EXPLORE_USERS,
}) })
} }
Counter: models.CountOrganizations, Counter: models.CountOrganizations,
Ranger: models.Organizations, Ranger: models.Organizations,
PageSize: setting.UI.ExplorePagingNum, PageSize: setting.UI.ExplorePagingNum,
OrderBy: "updated_unix DESC",
OrderBy: "name ASC",
TplName: EXPLORE_ORGANIZATIONS, TplName: EXPLORE_ORGANIZATIONS,
}) })
} }

Loading…
Cancel
Save