1
0
Fork 0
forked from forgejo/forgejo

Show collaborative repositories in dashboard

This commit is contained in:
Unknown 2014-05-12 15:14:22 -04:00
parent 54e95fa367
commit a913aff1d0
3 changed files with 53 additions and 3 deletions

View file

@ -721,7 +721,7 @@ func GetRepositoryById(id int64) (*Repository, error) {
return repo, nil
}
// GetRepositories returns the list of repositories of given user.
// GetRepositories returns a list of repositories of given user.
func GetRepositories(user *User, private bool) ([]*Repository, error) {
repos := make([]*Repository, 0, 10)
sess := orm.Desc("updated")
@ -758,6 +758,36 @@ func GetCollaboratorNames(repoName string) ([]string, error) {
return names, nil
}
// GetCollaborativeRepos returns a list of repositories that user is collaborator.
func GetCollaborativeRepos(uname string) ([]*Repository, error) {
uname = strings.ToLower(uname)
accesses := make([]*Access, 0, 10)
if err := orm.Find(&accesses, &Access{UserName: uname}); err != nil {
return nil, err
}
repos := make([]*Repository, 0, 10)
for _, access := range accesses {
if strings.HasPrefix(access.RepoName, uname) {
continue
}
infos := strings.Split(access.RepoName, "/")
u, err := GetUserByName(infos[0])
if err != nil {
return nil, err
}
repo, err := GetRepositoryByName(u.Id, infos[1])
if err != nil {
return nil, err
}
repo.Owner = u
repos = append(repos, repo)
}
return repos, nil
}
// GetCollaborators returns a list of users of repository's collaborators.
func GetCollaborators(repoName string) (us []*User, err error) {
accesses := make([]*Access, 0, 10)