From fd5412ec47018a72c1f05aca487e10ea0a665e45 Mon Sep 17 00:00:00 2001 From: Unknown Date: Fri, 4 Jul 2014 22:43:39 -0400 Subject: [PATCH] Work on #274 --- models/org.go | 6 +++++ models/repo.go | 67 ++++++++++++++++++-------------------------------- 2 files changed, 30 insertions(+), 43 deletions(-) diff --git a/models/org.go b/models/org.go index 2625ed428..2efef534b 100644 --- a/models/org.go +++ b/models/org.go @@ -6,6 +6,7 @@ package models import ( "errors" + "os" "strings" "github.com/gogits/gogs/modules/base" @@ -97,6 +98,11 @@ func CreateOrganization(org, owner *User) (*User, error) { return nil, err } + if err = os.MkdirAll(UserPath(org.Name), os.ModePerm); err != nil { + sess.Rollback() + return nil, err + } + // Create default owner team. t := &Team{ OrgId: org.Id, diff --git a/models/repo.go b/models/repo.go index f2df05057..54177bb6f 100644 --- a/models/repo.go +++ b/models/repo.go @@ -626,46 +626,25 @@ func TransferOwnership(u *User, newOwner string, repo *Repository) (err error) { return err } - // Update accesses. - /*accesses := make([]Access, 0, 10) - if err = x.Find(&accesses, &Access{RepoName: u.LowerName + "/" + repo.LowerName}); err != nil { - return err - }*/ - sess := x.NewSession() defer sess.Close() if err = sess.Begin(); err != nil { return err } - access := &Access{ + if _, err = sess.Where("repo_name = ?", u.LowerName+"/"+repo.LowerName). + And("user_name = ?", u.LowerName).Update(&Access{UserName: newUser.LowerName}); err != nil { + sess.Rollback() + return err + } + + if _, err = sess.Where("repo_name = ?", u.LowerName+"/"+repo.LowerName).Update(&Access{ RepoName: newUser.LowerName + "/" + repo.LowerName, - } - - sess.Where("repo_name = ?", u.LowerName+"/"+repo.LowerName) - _, err = sess.And("user_name = ?", u.LowerName).Update(&Access{UserName: newUser.LowerName}) - if err != nil { + }); err != nil { sess.Rollback() return err } - _, err = sess.Where("repo_name = ?", u.LowerName+"/"+repo.LowerName).Update(access) - if err != nil { - sess.Rollback() - return err - } - - /* - for i := range accesses { - accesses[i].RepoName = newUser.LowerName + "/" + repo.LowerName - if accesses[i].UserName == u.LowerName { - accesses[i].UserName = newUser.LowerName - } - if err = UpdateAccessWithSession(sess, &accesses[i]); err != nil { - return err - } - }*/ - // Update repository. repo.OwnerId = newUser.Id if _, err := sess.Id(repo.Id).Update(repo); err != nil { @@ -686,26 +665,28 @@ func TransferOwnership(u *User, newOwner string, repo *Repository) (err error) { return err } - // Add watch of new owner to repository. - if !IsWatching(newUser.Id, repo.Id) { - if err = WatchRepo(newUser.Id, repo.Id, true); err != nil { - sess.Rollback() - return err - } - } - - if err = TransferRepoAction(u, newUser, repo); err != nil { - sess.Rollback() - return err - } - // Change repository directory name. if err = os.Rename(RepoPath(u.Name, repo.Name), RepoPath(newUser.Name, repo.Name)); err != nil { sess.Rollback() return err } - return sess.Commit() + if err = sess.Commit(); err != nil { + return err + } + + // Add watch of new owner to repository. + if !IsWatching(newUser.Id, repo.Id) { + if err = WatchRepo(newUser.Id, repo.Id, true); err != nil { + return err + } + } + + if err = TransferRepoAction(u, newUser, repo); err != nil { + return err + } + + return nil } // ChangeRepositoryName changes all corresponding setting from old repository name to new one.