summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLunny Xiao <xiaolunwen@gmail.com>2014-03-13 14:50:32 +0800
committerLunny Xiao <xiaolunwen@gmail.com>2014-03-13 14:50:32 +0800
commit1902500b0dcefa20627129b48c8131da8798c169 (patch)
tree1a960236b5de97bafaddc76e4bc18830ccc30e3d
parent3a1fa012f7069c5d6b606a3330ec68abdcc125ed (diff)
parent27104ac89a4c489809068ae5c6dbe383ce7fbde2 (diff)
downloadgitea-1902500b0dcefa20627129b48c8131da8798c169.tar.gz
gitea-1902500b0dcefa20627129b48c8131da8798c169.zip
Merge branch 'master' of github.com:gogits/gogs
-rw-r--r--gogs.go2
-rw-r--r--models/repo.go19
-rw-r--r--modules/auth/repo.go6
-rw-r--r--routers/repo/repo.go11
-rw-r--r--templates/repo/nav.tmpl2
-rw-r--r--templates/repo/setting.tmpl5
-rw-r--r--templates/repo/toolbar.tmpl2
-rw-r--r--templates/user/dashboard.tmpl1
-rw-r--r--templates/user/setting.tmpl2
-rw-r--r--web.go2
10 files changed, 34 insertions, 18 deletions
diff --git a/gogs.go b/gogs.go
index 6865e1f213..f1a702ed22 100644
--- a/gogs.go
+++ b/gogs.go
@@ -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&nbsp;&nbsp;{{.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>
diff --git a/web.go b/web.go
index 6d57f120c9..475b662b39 100644
--- a/web.go
+++ b/web.go
@@ -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)