#1585 order owners list by last changed time

This commit is contained in:
Unknwon 2015-09-07 13:58:23 -04:00
parent 36405d0faa
commit 3d9b98fae4
3 changed files with 32 additions and 3 deletions

View File

@ -9,6 +9,8 @@ import (
"fmt" "fmt"
"os" "os"
"strings" "strings"
"github.com/go-xorm/xorm"
) )
var ( var (
@ -251,6 +253,25 @@ func IsPublicMembership(orgId, uid int64) bool {
return has return has
} }
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)
}
// GetOwnedOrgsByUserID returns a list of organizations are owned by given user ID.
func GetOwnedOrgsByUserID(userID int64) ([]*User, error) {
sess := x.NewSession()
return getOwnedOrgsByUserID(sess, userID)
}
// GetOwnedOrganizationsByUserIDDesc returns a list of organizations are owned by
// given user ID and descring order by given condition.
func GetOwnedOrgsByUserIDDesc(userID int64, desc string) ([]*User, error) {
sess := x.NewSession()
return getOwnedOrgsByUserID(sess.Desc(desc), userID)
}
// GetOrgUsersByUserId returns all organization-user relations by user ID. // GetOrgUsersByUserId returns all organization-user relations by user ID.
func GetOrgUsersByUserId(uid int64) ([]*OrgUser, error) { func GetOrgUsersByUserId(uid int64) ([]*OrgUser, error) {
ous := make([]*OrgUser, 0, 10) ous := make([]*OrgUser, 0, 10)

View File

@ -61,6 +61,7 @@ type User struct {
LoginSource int64 `xorm:"NOT NULL DEFAULT 0"` LoginSource int64 `xorm:"NOT NULL DEFAULT 0"`
LoginName string LoginName string
Type UserType Type UserType
OwnedOrgs []*User `xorm:"-"`
Orgs []*User `xorm:"-"` Orgs []*User `xorm:"-"`
Repos []*Repository `xorm:"-"` Repos []*Repository `xorm:"-"`
Location string Location string
@ -307,6 +308,12 @@ func (u *User) GetRepositories() (err error) {
return err return err
} }
// GetOwnedOrganizations returns all organizations that user owns.
func (u *User) GetOwnedOrganizations() (err error) {
u.OwnedOrgs, err = GetOwnedOrgsByUserID(u.Id)
return err
}
// GetOrganizations returns all organizations that user belongs to. // GetOrganizations returns all organizations that user belongs to.
func (u *User) GetOrganizations() error { func (u *User) GetOrganizations() error {
ous, err := GetOrgUsersByUserId(u.Id) ous, err := GetOrgUsersByUserId(u.Id)

View File

@ -28,11 +28,12 @@ const (
) )
func checkContextUser(ctx *middleware.Context, uid int64) *models.User { func checkContextUser(ctx *middleware.Context, uid int64) *models.User {
if err := ctx.User.GetOrganizations(); err != nil { orgs, err := models.GetOwnedOrgsByUserIDDesc(ctx.User.Id, "updated")
ctx.Handle(500, "GetOrganizations", err) if err != nil {
ctx.Handle(500, "GetOwnedOrganizationsByUserIDDesc", err)
return nil return nil
} }
ctx.Data["Orgs"] = ctx.User.Orgs ctx.Data["Orgs"] = orgs
// Not equal means current user is an organization. // Not equal means current user is an organization.
if uid == ctx.User.Id || uid == 0 { if uid == ctx.User.Id || uid == 0 {