aboutsummaryrefslogtreecommitdiff
path: root/models/repo.go
diff options
context:
space:
mode:
Diffstat (limited to 'models/repo.go')
-rw-r--r--models/repo.go12
1 files changed, 9 insertions, 3 deletions
diff --git a/models/repo.go b/models/repo.go
index 1dbda2a0..d0cd1b55 100644
--- a/models/repo.go
+++ b/models/repo.go
@@ -1080,15 +1080,21 @@ func GetCollaboratorNames(repoName string) ([]string, error) {
return names, nil
}
+// CollaborativeRepository represents a repository with collaborative information.
+type CollaborativeRepository struct {
+ *Repository
+ CanPush bool
+}
+
// GetCollaborativeRepos returns a list of repositories that user is collaborator.
-func GetCollaborativeRepos(uname string) ([]*Repository, error) {
+func GetCollaborativeRepos(uname string) ([]*CollaborativeRepository, error) {
uname = strings.ToLower(uname)
accesses := make([]*Access, 0, 10)
if err := x.Find(&accesses, &Access{UserName: uname}); err != nil {
return nil, err
}
- repos := make([]*Repository, 0, 10)
+ repos := make([]*CollaborativeRepository, 0, 10)
for _, access := range accesses {
infos := strings.Split(access.RepoName, "/")
if infos[0] == uname {
@@ -1105,7 +1111,7 @@ func GetCollaborativeRepos(uname string) ([]*Repository, error) {
return nil, err
}
repo.Owner = u
- repos = append(repos, repo)
+ repos = append(repos, &CollaborativeRepository{repo, access.Mode == WRITABLE})
}
return repos, nil
}