diff --git a/models/repo.go b/models/repo.go index ed828a347..d4f304557 100644 --- a/models/repo.go +++ b/models/repo.go @@ -223,6 +223,10 @@ func GetRepositories(user *User) ([]Repository, error) { return repos, err } +func GetRepositoryCount(user *User) (int64, error) { + return orm.Count(&Repository{OwnerId: user.Id}) +} + func StarReposiory(user *User, repoName string) error { return nil } diff --git a/models/user.go b/models/user.go index d904304f5..95cebb181 100644 --- a/models/user.go +++ b/models/user.go @@ -142,13 +142,15 @@ func UpdateUser(user *User) (err error) { // DeleteUser completely deletes everything of the user. func DeleteUser(user *User) error { - repos, err := GetRepositories(user) + cnt, err := GetRepositoryCount(user) if err != nil { return errors.New("modesl.GetRepositories: " + err.Error()) - } else if len(repos) > 0 { + } else if cnt > 0 { return ErrUserOwnRepos } + // TODO: check issues, other repos' commits + _, err = orm.Delete(user) // TODO: delete and update follower information. return err diff --git a/routers/user/user.go b/routers/user/user.go index ca9dddaec..7a58ba57f 100644 --- a/routers/user/user.go +++ b/routers/user/user.go @@ -20,6 +20,14 @@ import ( func Dashboard(r render.Render, data base.TmplData, session sessions.Session) { data["Title"] = "Dashboard" data["PageIsUserDashboard"] = true + repos, err := models.GetRepositories(&models.User{Id: auth.SignedInId(session)}) + if err != nil { + data["ErrorMsg"] = err + log.Error("dashboard: %v", err) + r.HTML(200, "base/error", data) + return + } + data["MyRepos"] = repos r.HTML(200, "user/dashboard", data) } @@ -133,7 +141,7 @@ func SignUp(form auth.RegisterForm, data base.TmplData, req *http.Request, r ren } // TODO: unfinished -func Delete(data base.TmplData, req *http.Request, r render.Render) { +func Delete(data base.TmplData, req *http.Request, session sessions.Session, r render.Render) { data["Title"] = "Delete Account" if req.Method == "GET" { @@ -141,7 +149,8 @@ func Delete(data base.TmplData, req *http.Request, r render.Render) { return } - u := &models.User{} + id := auth.SignedInId(session) + u := &models.User{Id: id} err := models.DeleteUser(u) data["ErrorMsg"] = err log.Error("user.Delete: %v", data) diff --git a/templates/user/dashboard.tmpl b/templates/user/dashboard.tmpl index 18433c7ba..b58f40630 100644 --- a/templates/user/dashboard.tmpl +++ b/templates/user/dashboard.tmpl @@ -21,7 +21,11 @@ New Repo