diff options
Diffstat (limited to 'routers/repo/issue.go')
-rw-r--r-- | routers/repo/issue.go | 66 |
1 files changed, 48 insertions, 18 deletions
diff --git a/routers/repo/issue.go b/routers/repo/issue.go index 7aa747351f..6218959585 100644 --- a/routers/repo/issue.go +++ b/routers/repo/issue.go @@ -239,20 +239,12 @@ func ViewIssue(ctx *middleware.Context, params martini.Params) { return } - // Update assignee. - if ctx.Repo.IsOwner { - aid, _ := base.StrTo(ctx.Query("assignneid")).Int64() - if aid > 0 { - // Not check for invalid assignne id and give responsibility to owners. - issue.AssigneeId = aid - if err = models.UpdateIssueUserPairByAssignee(aid, issue.Id); err != nil { - ctx.Handle(500, "issue.ViewIssue(UpdateIssueUserPairByAssignee): %v", err) - return - } - ctx.Redirect(fmt.Sprintf("%s/issues/%d", ctx.Repo.RepoLink, issue.Index)) - return - } + us, err := models.GetCollaborators(strings.TrimPrefix(ctx.Repo.RepoLink, "/")) + if err != nil { + ctx.Handle(500, "issue.CreateIssue(GetCollaborators)", err) + return } + ctx.Data["Collaborators"] = us if ctx.IsSigned { // Update issue-user. @@ -300,18 +292,18 @@ func ViewIssue(ctx *middleware.Context, params martini.Params) { } func UpdateIssue(ctx *middleware.Context, params martini.Params, form auth.CreateIssueForm) { - index, err := base.StrTo(params["index"]).Int() + idx, err := base.StrTo(params["index"]).Int() if err != nil { - ctx.Handle(404, "issue.UpdateIssue", err) + ctx.Error(404) return } - issue, err := models.GetIssueByIndex(ctx.Repo.Repository.Id, int64(index)) + issue, err := models.GetIssueByIndex(ctx.Repo.Repository.Id, int64(idx)) if err != nil { if err == models.ErrIssueNotExist { ctx.Handle(404, "issue.UpdateIssue", err) } else { - ctx.Handle(200, "issue.UpdateIssue(get issue)", err) + ctx.Handle(500, "issue.UpdateIssue(GetIssueByIndex)", err) } return } @@ -327,7 +319,7 @@ func UpdateIssue(ctx *middleware.Context, params martini.Params, form auth.Creat issue.Labels = form.Labels issue.Content = form.Content if err = models.UpdateIssue(issue); err != nil { - ctx.Handle(200, "issue.UpdateIssue(update issue)", err) + ctx.Handle(500, "issue.UpdateIssue(UpdateIssue)", err) return } @@ -338,6 +330,44 @@ func UpdateIssue(ctx *middleware.Context, params martini.Params, form auth.Creat }) } +func UpdateAssignee(ctx *middleware.Context) { + if !ctx.Repo.IsOwner { + ctx.Error(403) + return + } + + idx, err := base.StrTo(ctx.Query("issue")).Int64() + if err != nil { + ctx.Error(404) + return + } + + issue, err := models.GetIssueByIndex(ctx.Repo.Repository.Id, idx) + if err != nil { + if err == models.ErrIssueNotExist { + ctx.Handle(404, "issue.UpdateAssignee", err) + } else { + ctx.Handle(500, "issue.UpdateAssignee(GetIssueByIndex)", err) + } + return + } + + aid, _ := base.StrTo(ctx.Query("assigneeid")).Int64() + // Not check for invalid assignne id and give responsibility to owners. + issue.AssigneeId = aid + if err = models.UpdateIssueUserPairByAssignee(aid, issue.Id); err != nil { + ctx.Handle(500, "issue.UpdateAssignee(UpdateIssueUserPairByAssignee): %v", err) + return + } else if err = models.UpdateIssue(issue); err != nil { + ctx.Handle(500, "issue.UpdateAssignee(UpdateIssue)", err) + return + } + + ctx.JSON(200, map[string]interface{}{ + "ok": true, + }) +} + func Comment(ctx *middleware.Context, params martini.Params) { index, err := base.StrTo(ctx.Query("issueIndex")).Int64() if err != nil { |