diff options
author | Lunny Xiao <xiaolunwen@gmail.com> | 2014-03-13 14:50:32 +0800 |
---|---|---|
committer | Lunny Xiao <xiaolunwen@gmail.com> | 2014-03-13 14:50:32 +0800 |
commit | 1902500b0dcefa20627129b48c8131da8798c169 (patch) | |
tree | 1a960236b5de97bafaddc76e4bc18830ccc30e3d | |
parent | 3a1fa012f7069c5d6b606a3330ec68abdcc125ed (diff) | |
parent | 27104ac89a4c489809068ae5c6dbe383ce7fbde2 (diff) | |
download | gitea-1902500b0dcefa20627129b48c8131da8798c169.tar.gz gitea-1902500b0dcefa20627129b48c8131da8798c169.zip |
Merge branch 'master' of github.com:gogits/gogs
-rw-r--r-- | gogs.go | 2 | ||||
-rw-r--r-- | models/repo.go | 19 | ||||
-rw-r--r-- | modules/auth/repo.go | 6 | ||||
-rw-r--r-- | routers/repo/repo.go | 11 | ||||
-rw-r--r-- | templates/repo/nav.tmpl | 2 | ||||
-rw-r--r-- | templates/repo/setting.tmpl | 5 | ||||
-rw-r--r-- | templates/repo/toolbar.tmpl | 2 | ||||
-rw-r--r-- | templates/user/dashboard.tmpl | 1 | ||||
-rw-r--r-- | templates/user/setting.tmpl | 2 | ||||
-rw-r--r-- | web.go | 2 |
10 files changed, 34 insertions, 18 deletions
@@ -20,7 +20,7 @@ import ( // Test that go1.1 tag above is included in builds. main.go refers to this definition. const go11tag = true -const APP_VER = "0.0.5.0313" +const APP_VER = "0.0.6.0313" func init() { runtime.GOMAXPROCS(runtime.NumCPU()) diff --git a/models/repo.go b/models/repo.go index fa8f7c760d..6e45367c09 100644 --- a/models/repo.go +++ b/models/repo.go @@ -105,7 +105,6 @@ func CreateRepository(user *User, repoName, desc, repoLang, license string, priv return nil, err } - // TODO: RemoveAll may fail due to not root access. access := Access{ UserName: user.Name, RepoName: repo.Name, @@ -339,13 +338,21 @@ func RepoPath(userName, repoName string) string { } // DeleteRepository deletes a repository for a user or orgnaztion. -func DeleteRepository(user *User, reposName string) (err error) { +func DeleteRepository(userId, repoId int64, userName string) (err error) { + repo := &Repository{Id: repoId, OwnerId: userId} + has, err := orm.Get(repo) + if err != nil { + return err + } else if !has { + return ErrRepoNotExist + } + session := orm.NewSession() - if _, err = session.Delete(&Repository{OwnerId: user.Id, Name: reposName}); err != nil { + if _, err = session.Delete(&Repository{Id: repoId}); err != nil { session.Rollback() return err } - if _, err = session.Exec("update user set num_repos = num_repos - 1 where id = ?", user.Id); err != nil { + if _, err = session.Exec("update user set num_repos = num_repos - 1 where id = ?", userId); err != nil { session.Rollback() return err } @@ -353,9 +360,9 @@ func DeleteRepository(user *User, reposName string) (err error) { session.Rollback() return err } - if err = os.RemoveAll(RepoPath(user.Name, reposName)); err != nil { + if err = os.RemoveAll(RepoPath(userName, repo.Name)); err != nil { // TODO: log and delete manully - log.Error("delete repo %s/%s failed", user.Name, reposName) + log.Error("delete repo %s/%s failed", userName, repo.Name) return err } return nil diff --git a/modules/auth/repo.go b/modules/auth/repo.go index d769664649..5fe091d62f 100644 --- a/modules/auth/repo.go +++ b/modules/auth/repo.go @@ -56,6 +56,12 @@ func (f *CreateRepoForm) Validate(errors *binding.Errors, req *http.Request, con validate(errors, data, f) } +type DeleteRepoForm struct { + UserId int64 `form:"userId" binding:"Required"` + UserName string `form:"userName" binding:"Required"` + RepoId int64 `form:"repoId" binding:"Required"` +} + func RepoAssignment(redirect bool) martini.Handler { return func(params martini.Params, r render.Render, data base.TmplData, session sessions.Session) { // assign false first diff --git a/routers/repo/repo.go b/routers/repo/repo.go index 5769aff7c3..a12b45d7b9 100644 --- a/routers/repo/repo.go +++ b/routers/repo/repo.go @@ -5,9 +5,9 @@ package repo import ( - "net/http" "github.com/martini-contrib/render" "github.com/martini-contrib/sessions" + "net/http" "github.com/gogits/gogs/models" "github.com/gogits/gogs/modules/auth" @@ -68,7 +68,7 @@ func Create(form auth.CreateRepoForm, req *http.Request, r render.Render, data b r.HTML(200, "base/error", data) } -func Delete(req *http.Request, r render.Render, data base.TmplData, session sessions.Session) { +func Delete(form auth.DeleteRepoForm, req *http.Request, r render.Render, data base.TmplData, session sessions.Session) { data["Title"] = "Delete repository" if req.Method == "GET" { @@ -76,13 +76,14 @@ func Delete(req *http.Request, r render.Render, data base.TmplData, session sess return } - u := &models.User{} - err := models.DeleteRepository(u, "") - if err != nil { + if err := models.DeleteRepository(form.UserId, form.RepoId, form.UserName); err != nil { data["ErrorMsg"] = err log.Error("repo.Delete: %v", err) r.HTML(200, "base/error", data) + return } + + r.Redirect("/", 200) } func List(req *http.Request, r render.Render, data base.TmplData, session sessions.Session) { diff --git a/templates/repo/nav.tmpl b/templates/repo/nav.tmpl index 1e52488897..5d60d46107 100644 --- a/templates/repo/nav.tmpl +++ b/templates/repo/nav.tmpl @@ -26,6 +26,6 @@ <button type="button" class="btn btn-default"><i class="fa fa-code-fork"></i>Fork {{.Repository.NumForks}}</button> </div> </div> - <h3><i class="fa fa-book fa-lg"></i><a href="/{{.Owner.Name}}/">{{.Owner.Name}}</a> / {{.Repository.Name}}</h3> + <h3><i class="fa fa-book fa-lg"></i><a href="/user/{{.Owner.Name}}">{{.Owner.Name}}</a> / {{.Repository.Name}}</h3> </div> </div>
\ No newline at end of file diff --git a/templates/repo/setting.tmpl b/templates/repo/setting.tmpl index 262b91a187..5e0a9f6cb9 100644 --- a/templates/repo/setting.tmpl +++ b/templates/repo/setting.tmpl @@ -22,8 +22,9 @@ <p>This action <strong>CANNOT</strong> be undone. This will delete the repository, wiki, issues, and comments permanently. </p> <form action="/repo/delete" method="post"> - <input type="hidden" name="reponame" value="{{.Repository.Name}}"/> - <input type="hidden" name="username" value="{{.Owner.Name}}"/> + <input type="hidden" name="userId" value="{{.Owner.Id}}"/> + <input type="hidden" name="userName" value="{{.Owner.Name}}"/> + <input type="hidden" name="repoId" value="{{.Repository.Id}}"/> <hr/> <button class="btn btn-danger btn-lg">I understand the consequences, delete this repository</button> </form> diff --git a/templates/repo/toolbar.tmpl b/templates/repo/toolbar.tmpl index fb2145ab3d..a409fcbea7 100644 --- a/templates/repo/toolbar.tmpl +++ b/templates/repo/toolbar.tmpl @@ -25,7 +25,7 @@ </ul> <ul class="nav navbar-nav navbar-right"> <li class="dropdown"> - <a href="#" class="dropdown-toggle" data-toggle="dropdown">Statics <b class="caret"></b></a> + <a href="#" class="dropdown-toggle" data-toggle="dropdown">Statistic <b class="caret"></b></a> <ul class="dropdown-menu"> <li><a href="#">Graphic</a></li> <li><a href="#">Pulse</a></li> diff --git a/templates/user/dashboard.tmpl b/templates/user/dashboard.tmpl index e8fbe29605..7768a7ee6d 100644 --- a/templates/user/dashboard.tmpl +++ b/templates/user/dashboard.tmpl @@ -12,6 +12,7 @@ </div> </div> <div id="gogs-body" class="container"> + {{if .HasInfo}}<div class="alert alert-info">{{.InfoMsg}}</div>{{end}} <div id="gogs-feed-left" class="col-md-8"> Website is still in the progress of building...please come back later! <strong>{{.SignedUserName}}</strong> is logged! </div> diff --git a/templates/user/setting.tmpl b/templates/user/setting.tmpl index 928d359a26..79de58fe75 100644 --- a/templates/user/setting.tmpl +++ b/templates/user/setting.tmpl @@ -7,7 +7,7 @@ <li class="list-group-item list-group-item-success"><a href="/user/setting">Account Profile</a></li> <li class="list-group-item"><a href="#">Emails and Password</a></li> <li class="list-group-item"><a href="#">Notifications</a></li> - <li class="list-group-item"><a href="/user/setting/ssh/">SSH Keys</a></li> + <li class="list-group-item"><a href="/user/setting/ssh">SSH Keys</a></li> <li class="list-group-item"><a href="#">Security</a></li> <li class="list-group-item"><a href="/user/delete">Delete Account</a></li> </ul> @@ -69,7 +69,7 @@ func runWeb(*cli.Context) { m.Get("/user/:username", auth.SignInRequire(false), user.Profile) m.Any("/repo/create", auth.SignInRequire(true), binding.BindIgnErr(auth.CreateRepoForm{}), repo.Create) - m.Any("/repo/delete", auth.SignInRequire(true), repo.Delete) + m.Any("/repo/delete", auth.SignInRequire(true), binding.Bind(auth.DeleteRepoForm{}), repo.Delete) m.Any("/repo/list", auth.SignInRequire(false), repo.List) m.Get("/:username/:reponame/settings", auth.SignInRequire(false), auth.RepoAssignment(true), repo.Setting) |