diff options
Diffstat (limited to 'routers/repo')
-rw-r--r-- | routers/repo/repo.go | 42 |
1 files changed, 24 insertions, 18 deletions
diff --git a/routers/repo/repo.go b/routers/repo/repo.go index e9ad7d1ab4..834195d83f 100644 --- a/routers/repo/repo.go +++ b/routers/repo/repo.go @@ -7,7 +7,6 @@ package repo import ( "fmt" "net/http" - "strconv" "github.com/martini-contrib/render" "github.com/martini-contrib/sessions" @@ -18,7 +17,7 @@ import ( "github.com/gogits/gogs/modules/log" ) -func Create(req *http.Request, r render.Render, data base.TmplData, session sessions.Session) { +func Create(form auth.CreateRepoForm, req *http.Request, r render.Render, data base.TmplData, session sessions.Session) { data["Title"] = "Create repository" if req.Method == "GET" { @@ -26,30 +25,37 @@ func Create(req *http.Request, r render.Render, data base.TmplData, session sess return } + if hasErr, ok := data["HasError"]; ok && hasErr.(bool) { + r.HTML(200, "repo/create", data) + return + } + // TODO: access check - id, err := strconv.ParseInt(req.FormValue("userId"), 10, 64) - if err == nil { - var u *models.User - u, err = models.GetUserById(id) - if u == nil { - err = models.ErrUserNotExist - } - if err == nil { - _, err = models.CreateRepository(u, req.FormValue("name")) + user, err := models.GetUserById(form.UserId) + if err != nil { + if err.Error() == models.ErrUserNotExist.Error() { + data["HasError"] = true + data["ErrorMsg"] = "User does not exist" + auth.AssignForm(form, data) + r.HTML(200, "repo/create", data) + return } - if err == nil { - data["RepoName"] = u.Name + "/" + req.FormValue("name") + } + + if err == nil { + // TODO: init description and readme + if _, err = models.CreateRepository(user, form.RepoName); err == nil { + data["RepoName"] = user.Name + "/" + form.RepoName r.HTML(200, "repo/created", data) + fmt.Println("good!!!!") return } } - if err != nil { - data["ErrorMsg"] = err - log.Error("repo.Create: %v", err) - r.HTML(200, "base/error", data) - } + data["ErrorMsg"] = err + log.Error("repo.Create: %v", err) + r.HTML(200, "base/error", data) } func Delete(req *http.Request, r render.Render, data base.TmplData, session sessions.Session) { |