Browse Source

Bug: 500 when transfer repository to collaborator

Unknwon 10 years ago
parent
commit
3cfa4a581c
4 changed files with 16 additions and 6 deletions
  1. 1 1
      gogs.go
  2. 12 4
      models/repo.go
  3. 1 1
      templates/.VERSION
  4. 2 0
      templates/repo/sidebar.tmpl

+ 1 - 1
gogs.go

@@ -17,7 +17,7 @@ import (
 	"github.com/gogits/gogs/modules/setting"
 )
 
-const APP_VER = "0.5.4.0928 Beta"
+const APP_VER = "0.5.4.0929 Beta"
 
 func init() {
 	runtime.GOMAXPROCS(runtime.NumCPU())

+ 12 - 4
models/repo.go

@@ -678,17 +678,25 @@ func TransferOwnership(u *User, newOwner string, repo *Repository) error {
 			return fmt.Errorf("fail to delete current accesses: %v", err)
 		}
 	} else {
+		// Delete current owner access.
 		if _, err = sess.Where("repo_name=?", oldRepoLink).And("user_name=?", owner.LowerName).
-			Update(&Access{UserName: newUser.LowerName}); err != nil {
+			Delete(new(Access)); err != nil {
 			sess.Rollback()
-			return err
+			return fmt.Errorf("fail to delete access(owner): %v", err)
+		}
+		// In case new owner has access.
+		if _, err = sess.Where("repo_name=?", oldRepoLink).And("user_name=?", newUser.LowerName).
+			Delete(new(Access)); err != nil {
+			sess.Rollback()
+			return fmt.Errorf("fail to delete access(new user): %v", err)
 		}
 	}
 
+	// Change accesses to new repository path.
 	if _, err = sess.Where("repo_name=?", oldRepoLink).
 		Update(&Access{RepoName: path.Join(newUser.LowerName, repo.LowerName)}); err != nil {
 		sess.Rollback()
-		return err
+		return fmt.Errorf("fail to update access(change reponame): %v", err)
 	}
 
 	// Update repository.
@@ -754,7 +762,7 @@ func TransferOwnership(u *User, newOwner string, repo *Repository) error {
 		}
 		if _, err = sess.Insert(access); err != nil {
 			sess.Rollback()
-			return err
+			return fmt.Errorf("fail to insert access: %v", err)
 		}
 	}
 

+ 1 - 1
templates/.VERSION

@@ -1 +1 @@
-0.5.4.0928 Beta
+0.5.4.0929 Beta

+ 2 - 0
templates/repo/sidebar.tmpl

@@ -20,9 +20,11 @@
         <!-- <li>
             <a class="radius" href="#"><i class="octicon octicon-organization"></i>contributors <span class="num right label label-gray label-radius">43</span></a>
         </li> -->
+        {{if .IsRepositoryTrueOwner}}
         <li class="border-bottom"></li>
         <li>
             <a class="radius" href="{{.RepoLink}}/settings"><i class="octicon octicon-tools"></i>{{.i18n.Tr "repo.settings"}}</a>
         </li>
+        {{end}}
     </ul>
 </div>