diff options
author | Unknwon <u@gogs.io> | 2016-03-05 18:08:42 -0500 |
---|---|---|
committer | Unknwon <u@gogs.io> | 2016-03-05 18:08:42 -0500 |
commit | 045f14fbd0e3553521f5092cf839be363c74a090 (patch) | |
tree | 9c82f5111c5c5262c97bd7936462fa4170e76b4f /models/repo.go | |
parent | 05d8664f15013b0159b3689bda84e89dd7be22fd (diff) |
#1146 finsih UI work for access mode of collaborators
Collaborators have write access as default, and can be changed via repository
collaboration settings page to change between read, write and admin.
Diffstat (limited to 'models/repo.go')
-rw-r--r-- | models/repo.go | 100 |
1 files changed, 0 insertions, 100 deletions
diff --git a/models/repo.go b/models/repo.go index eff66254..98b3e053 100644 --- a/models/repo.go +++ b/models/repo.go @@ -330,7 +330,6 @@ func (repo *Repository) RepoRelLink() string { return "/" + repo.MustOwner().Name + "/" + repo.Name } - func (repo *Repository) ComposeCompareURL(oldCommitID, newCommitID string) string { return fmt.Sprintf("%s/%s/compare/%s...%s", repo.MustOwner().Name, repo.Name, oldCommitID, newCommitID) } @@ -1797,105 +1796,6 @@ func CheckRepoStats() { // ***** END: Repository.NumForks ***** } -// _________ .__ .__ ___. __ .__ -// \_ ___ \ ____ | | | | _____ \_ |__ ________________ _/ |_|__| ____ ____ -// / \ \/ / _ \| | | | \__ \ | __ \ / _ \_ __ \__ \\ __\ |/ _ \ / \ -// \ \___( <_> ) |_| |__/ __ \| \_\ ( <_> ) | \// __ \| | | ( <_> ) | \ -// \______ /\____/|____/____(____ /___ /\____/|__| (____ /__| |__|\____/|___| / -// \/ \/ \/ \/ \/ - -// A Collaboration is a relation between an individual and a repository -type Collaboration struct { - ID int64 `xorm:"pk autoincr"` - RepoID int64 `xorm:"UNIQUE(s) INDEX NOT NULL"` - UserID int64 `xorm:"UNIQUE(s) INDEX NOT NULL"` - Created time.Time `xorm:"CREATED"` -} - -// Add collaborator and accompanying access -func (repo *Repository) AddCollaborator(u *User) error { - collaboration := &Collaboration{ - RepoID: repo.ID, - UserID: u.Id, - } - - has, err := x.Get(collaboration) - if err != nil { - return err - } else if has { - return nil - } - - if err = repo.GetOwner(); err != nil { - return fmt.Errorf("GetOwner: %v", err) - } - - sess := x.NewSession() - defer sessionRelease(sess) - if err = sess.Begin(); err != nil { - return err - } - - if _, err = sess.InsertOne(collaboration); err != nil { - return err - } - - if repo.Owner.IsOrganization() { - err = repo.recalculateTeamAccesses(sess, 0) - } else { - err = repo.recalculateAccesses(sess) - } - if err != nil { - return fmt.Errorf("recalculateAccesses 'team=%v': %v", repo.Owner.IsOrganization(), err) - } - - return sess.Commit() -} - -func (repo *Repository) getCollaborators(e Engine) ([]*User, error) { - collaborations := make([]*Collaboration, 0) - if err := e.Find(&collaborations, &Collaboration{RepoID: repo.ID}); err != nil { - return nil, err - } - - users := make([]*User, len(collaborations)) - for i, c := range collaborations { - user, err := getUserByID(e, c.UserID) - if err != nil { - return nil, err - } - users[i] = user - } - return users, nil -} - -// GetCollaborators returns the collaborators for a repository -func (repo *Repository) GetCollaborators() ([]*User, error) { - return repo.getCollaborators(x) -} - -// Delete collaborator and accompanying access -func (repo *Repository) DeleteCollaborator(u *User) (err error) { - collaboration := &Collaboration{ - RepoID: repo.ID, - UserID: u.Id, - } - - sess := x.NewSession() - defer sessionRelease(sess) - if err = sess.Begin(); err != nil { - return err - } - - if has, err := sess.Delete(collaboration); err != nil || has == 0 { - return err - } else if err = repo.recalculateAccesses(sess); err != nil { - return err - } - - return sess.Commit() -} - // __ __ __ .__ // / \ / \_____ _/ |_ ____ | |__ // \ \/\/ /\__ \\ __\/ ___\| | \ |