Remove User.GetOrganizations() (#14032)

as title
This commit is contained in:
6543 2021-06-18 19:00:53 +02:00 committed by GitHub
parent 59f25587e8
commit 889dea8fc1
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 4 additions and 56 deletions

View file

@ -114,11 +114,12 @@ func doCheckOrgCounts(username string, orgCounts map[string]int, strict bool, ca
Name: username, Name: username,
}).(*models.User) }).(*models.User)
user.GetOrganizations(&models.SearchOrganizationsOptions{All: true}) orgs, err := models.GetOrgsByUserID(user.ID, true)
assert.NoError(t, err)
calcOrgCounts := map[string]int{} calcOrgCounts := map[string]int{}
for _, org := range user.Orgs { for _, org := range orgs {
calcOrgCounts[org.LowerName] = org.NumRepos calcOrgCounts[org.LowerName] = org.NumRepos
count, ok := canonicalCounts[org.LowerName] count, ok := canonicalCounts[org.LowerName]
if ok { if ok {

View file

@ -112,7 +112,6 @@ type User struct {
LoginName string LoginName string
Type UserType Type UserType
OwnedOrgs []*User `xorm:"-"` OwnedOrgs []*User `xorm:"-"`
Orgs []*User `xorm:"-"`
Repos []*Repository `xorm:"-"` Repos []*Repository `xorm:"-"`
Location string Location string
Website string Website string
@ -603,58 +602,6 @@ func (u *User) GetOwnedOrganizations() (err error) {
return err return err
} }
// GetOrganizations returns paginated organizations that user belongs to.
// TODO: does not respect All and show orgs you privately participate
func (u *User) GetOrganizations(opts *SearchOrganizationsOptions) error {
sess := x.NewSession()
defer sess.Close()
schema, err := x.TableInfo(new(User))
if err != nil {
return err
}
groupByCols := &strings.Builder{}
for _, col := range schema.Columns() {
fmt.Fprintf(groupByCols, "`%s`.%s,", schema.Name, col.Name)
}
groupByStr := groupByCols.String()
groupByStr = groupByStr[0 : len(groupByStr)-1]
sess.Select("`user`.*, count(repo_id) as org_count").
Table("user").
Join("INNER", "org_user", "`org_user`.org_id=`user`.id").
Join("LEFT", builder.
Select("id as repo_id, owner_id as repo_owner_id").
From("repository").
Where(accessibleRepositoryCondition(u)), "`repository`.repo_owner_id = `org_user`.org_id").
And("`org_user`.uid=?", u.ID).
GroupBy(groupByStr)
if opts.PageSize != 0 {
sess = opts.setSessionPagination(sess)
}
type OrgCount struct {
User `xorm:"extends"`
OrgCount int
}
orgCounts := make([]*OrgCount, 0, 10)
if err := sess.
Asc("`user`.name").
Find(&orgCounts); err != nil {
return err
}
orgs := make([]*User, len(orgCounts))
for i, orgCount := range orgCounts {
orgCount.User.NumRepos = orgCount.OrgCount
orgs[i] = &orgCount.User
}
u.Orgs = orgs
return nil
}
// DisplayName returns full name if it's not empty, // DisplayName returns full name if it's not empty,
// returns username otherwise. // returns username otherwise.
func (u *User) DisplayName() string { func (u *User) DisplayName() string {

View file

@ -9,7 +9,7 @@
:more-repos-link="'{{.ContextUser.HomeLink}}'" :more-repos-link="'{{.ContextUser.HomeLink}}'"
{{if not .ContextUser.IsOrganization}} {{if not .ContextUser.IsOrganization}}
:organizations="[ :organizations="[
{{range .ContextUser.Orgs}} {{range .Orgs}}
{name: '{{.Name}}', num_repos: '{{.NumRepos}}'}, {name: '{{.Name}}', num_repos: '{{.NumRepos}}'},
{{end}} {{end}}
]" ]"