diff options
author | Unknwon <u@gogs.io> | 2015-02-28 21:44:09 -0500 |
---|---|---|
committer | Unknwon <u@gogs.io> | 2015-02-28 21:44:09 -0500 |
commit | 473e265727c1e47dd83e3f66a5cc92d2f027d951 (patch) | |
tree | bece3e29269a694b47a9d15d1ec27b8e9d38186f /models/repo.go | |
parent | e3dece1371f38f5af72c200bc4c4684ec2fc396b (diff) | |
download | gitea-473e265727c1e47dd83e3f66a5cc92d2f027d951.tar.gz gitea-473e265727c1e47dd83e3f66a5cc92d2f027d951.zip |
models: done testing on new access system
Diffstat (limited to 'models/repo.go')
-rw-r--r-- | models/repo.go | 41 |
1 files changed, 30 insertions, 11 deletions
diff --git a/models/repo.go b/models/repo.go index 0f75029096..65cd368640 100644 --- a/models/repo.go +++ b/models/repo.go @@ -544,11 +544,6 @@ func CreateRepository(u *User, name, desc, lang, license string, isPrivate, isMi // Give access to all members in owner team. if u.IsOrganization() { - if err = repo.recalculateAccesses(sess); err != nil { - return nil, err - } - - // Update owner team info and count. t, err := u.getOwnerTeam(sess) if err != nil { return nil, fmt.Errorf("getOwnerTeam: %v", err) @@ -556,12 +551,15 @@ func CreateRepository(u *User, name, desc, lang, license string, isPrivate, isMi return nil, fmt.Errorf("addRepository: %v", err) } } else { - if err = watchRepo(sess, u.Id, repo.Id, true); err != nil { - return nil, fmt.Errorf("watchRepo: %v", err) + // Organization called this in addRepository method. + if err = repo.recalculateAccesses(sess); err != nil { + return nil, fmt.Errorf("recalculateAccesses: %v", err) } } - if err = newRepoAction(sess, u, repo); err != nil { + if err = watchRepo(sess, u.Id, repo.Id, true); err != nil { + return nil, fmt.Errorf("watchRepo: %v", err) + } else if err = newRepoAction(sess, u, repo); err != nil { return nil, fmt.Errorf("newRepoAction: %v", err) } @@ -667,6 +665,27 @@ func TransferOwnership(u *User, newOwnerName string, repo *Repository) error { } } + // Remove old team-repository relations. + if owner.IsOrganization() { + if err = owner.getTeams(sess); err != nil { + return fmt.Errorf("getTeams: %v", err) + } + for _, t := range owner.Teams { + if !t.hasRepository(sess, repo.Id) { + continue + } + + t.NumRepos-- + if _, err := sess.Id(t.ID).AllCols().Update(t); err != nil { + return fmt.Errorf("decrease team repository count '%d': %v", t.ID, err) + } + } + + if err = owner.removeOrgRepo(sess, repo.Id); err != nil { + return fmt.Errorf("removeOrgRepo: %v", err) + } + } + if newOwner.IsOrganization() { t, err := newOwner.GetOwnerTeam() if err != nil { @@ -763,7 +782,7 @@ func DeleteRepository(uid, repoID int64, userName string) error { for _, t := range org.Teams { if !t.hasRepository(sess, repoID) { continue - } else if err = t.removeRepository(sess, repo); err != nil { + } else if err = t.removeRepository(sess, repo, false); err != nil { return err } } @@ -771,9 +790,9 @@ func DeleteRepository(uid, repoID int64, userName string) error { if _, err = sess.Delete(&Repository{Id: repoID}); err != nil { return err - } else if _, err := sess.Delete(&Access{RepoID: repo.Id}); err != nil { + } else if _, err = sess.Delete(&Access{RepoID: repo.Id}); err != nil { return err - } else if _, err := sess.Delete(&Action{RepoId: repo.Id}); err != nil { + } else if _, err = sess.Delete(&Action{RepoId: repo.Id}); err != nil { return err } else if _, err = sess.Delete(&Watch{RepoId: repoID}); err != nil { return err |