summaryrefslogtreecommitdiffstats
path: root/models/repo.go
diff options
context:
space:
mode:
authorUnknwon <u@gogs.io>2015-02-28 21:44:09 -0500
committerUnknwon <u@gogs.io>2015-02-28 21:44:09 -0500
commit473e265727c1e47dd83e3f66a5cc92d2f027d951 (patch)
treebece3e29269a694b47a9d15d1ec27b8e9d38186f /models/repo.go
parente3dece1371f38f5af72c200bc4c4684ec2fc396b (diff)
downloadgitea-473e265727c1e47dd83e3f66a5cc92d2f027d951.tar.gz
gitea-473e265727c1e47dd83e3f66a5cc92d2f027d951.zip
models: done testing on new access system
Diffstat (limited to 'models/repo.go')
-rw-r--r--models/repo.go41
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