parent
							
								
									59f25587e8
								
							
						
					
					
						commit
						889dea8fc1
					
				
					 3 changed files with 4 additions and 56 deletions
				
			
		|  | @ -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 { | ||||||
|  |  | ||||||
|  | @ -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 { | ||||||
|  |  | ||||||
|  | @ -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}} | ||||||
| 	]" | 	]" | ||||||
|  |  | ||||||
		Loading…
	
		Reference in a new issue