aboutsummaryrefslogtreecommitdiff
path: root/internal/route/repo/issue.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/route/repo/issue.go')
-rw-r--r--internal/route/repo/issue.go179
1 files changed, 79 insertions, 100 deletions
diff --git a/internal/route/repo/issue.go b/internal/route/repo/issue.go
index fea9af98..1b64cfe2 100644
--- a/internal/route/repo/issue.go
+++ b/internal/route/repo/issue.go
@@ -51,7 +51,7 @@ var (
func MustEnableIssues(c *context.Context) {
if !c.Repo.Repository.EnableIssues {
- c.Handle(404, "MustEnableIssues", nil)
+ c.NotFound()
return
}
@@ -63,7 +63,7 @@ func MustEnableIssues(c *context.Context) {
func MustAllowPulls(c *context.Context) {
if !c.Repo.Repository.AllowsPulls() {
- c.Handle(404, "MustAllowPulls", nil)
+ c.NotFound()
return
}
@@ -77,7 +77,7 @@ func MustAllowPulls(c *context.Context) {
func RetrieveLabels(c *context.Context) {
labels, err := db.GetLabelsByRepoID(c.Repo.Repository.ID)
if err != nil {
- c.Handle(500, "RetrieveLabels.GetLabels", err)
+ c.Error(err, "get labels by repository ID")
return
}
for _, l := range labels {
@@ -182,14 +182,14 @@ func issues(c *context.Context, isPullList bool) {
SortType: sortType,
})
if err != nil {
- c.Handle(500, "Issues", err)
+ c.Error(err, "list issues")
return
}
// Get issue-user relations.
pairs, err := db.GetIssueUsers(repo.ID, posterID, isShowClosed)
if err != nil {
- c.Handle(500, "GetIssueUsers", err)
+ c.Error(err, "get issue-user relations")
return
}
@@ -213,14 +213,14 @@ func issues(c *context.Context, isPullList bool) {
// Get milestones.
c.Data["Milestones"], err = db.GetMilestonesByRepoID(repo.ID)
if err != nil {
- c.Handle(500, "GetAllRepoMilestones", err)
+ c.Error(err, "get milestone by repository ID")
return
}
// Get assignees.
c.Data["Assignees"], err = repo.GetAssignees()
if err != nil {
- c.Handle(500, "GetAssignees", err)
+ c.Error(err, "get assignees")
return
}
@@ -241,7 +241,7 @@ func issues(c *context.Context, isPullList bool) {
c.Data["State"] = "open"
}
- c.HTML(200, ISSUES)
+ c.Success(ISSUES)
}
func Issues(c *context.Context) {
@@ -264,18 +264,18 @@ func RetrieveRepoMilestonesAndAssignees(c *context.Context, repo *db.Repository)
var err error
c.Data["OpenMilestones"], err = db.GetMilestones(repo.ID, -1, false)
if err != nil {
- c.Handle(500, "GetMilestones", err)
+ c.Error(err, "get open milestones")
return
}
c.Data["ClosedMilestones"], err = db.GetMilestones(repo.ID, -1, true)
if err != nil {
- c.Handle(500, "GetMilestones", err)
+ c.Error(err, "get closed milestones")
return
}
c.Data["Assignees"], err = repo.GetAssignees()
if err != nil {
- c.Handle(500, "GetAssignees", err)
+ c.Error(err, "get assignees")
return
}
}
@@ -287,7 +287,7 @@ func RetrieveRepoMetas(c *context.Context, repo *db.Repository) []*db.Label {
labels, err := db.GetLabelsByRepoID(repo.ID)
if err != nil {
- c.Handle(500, "GetLabelsByRepoID", err)
+ c.Error(err, "get labels by repository ID")
return nil
}
c.Data["Labels"] = labels
@@ -345,7 +345,7 @@ func NewIssue(c *context.Context) {
return
}
- c.HTML(200, ISSUE_NEW)
+ c.Success(ISSUE_NEW)
}
func ValidateRepoMetas(c *context.Context, f form.NewIssue) ([]int64, int64, int64) {
@@ -382,7 +382,7 @@ func ValidateRepoMetas(c *context.Context, f form.NewIssue) ([]int64, int64, int
if milestoneID > 0 {
c.Data["Milestone"], err = repo.GetMilestoneByID(milestoneID)
if err != nil {
- c.Handle(500, "GetMilestoneByID", err)
+ c.Error(err, "get milestone by ID")
return nil, 0, 0
}
c.Data["milestone_id"] = milestoneID
@@ -393,7 +393,7 @@ func ValidateRepoMetas(c *context.Context, f form.NewIssue) ([]int64, int64, int
if assigneeID > 0 {
c.Data["Assignee"], err = repo.GetAssigneeByID(assigneeID)
if err != nil {
- c.Handle(500, "GetAssigneeByID", err)
+ c.Error(err, "get assignee by ID")
return nil, 0, 0
}
c.Data["assignee_id"] = assigneeID
@@ -415,7 +415,7 @@ func NewIssuePost(c *context.Context, f form.NewIssue) {
}
if c.HasError() {
- c.HTML(200, ISSUE_NEW)
+ c.Success(ISSUE_NEW)
return
}
@@ -434,7 +434,7 @@ func NewIssuePost(c *context.Context, f form.NewIssue) {
Content: f.Content,
}
if err := db.NewIssue(c.Repo.Repository, issue, labelIDs, attachments); err != nil {
- c.Handle(500, "NewIssue", err)
+ c.Error(err, "new issue")
return
}
@@ -445,7 +445,7 @@ func NewIssuePost(c *context.Context, f form.NewIssue) {
func uploadAttachment(c *context.Context, allowedTypes []string) {
file, header, err := c.Req.FormFile("file")
if err != nil {
- c.Error(500, fmt.Sprintf("FormFile: %v", err))
+ c.Error(err, "get file")
return
}
defer file.Close()
@@ -467,18 +467,18 @@ func uploadAttachment(c *context.Context, allowedTypes []string) {
}
if !allowed {
- c.Error(400, ErrFileTypeForbidden.Error())
+ c.PlainText(http.StatusBadRequest, ErrFileTypeForbidden.Error())
return
}
attach, err := db.NewAttachment(header.Filename, buf, file)
if err != nil {
- c.Error(500, fmt.Sprintf("NewAttachment: %v", err))
+ c.Error(err, "new attachment")
return
}
log.Trace("New attachment uploaded: %s", attach.UUID)
- c.JSON(200, map[string]string{
+ c.JSONSuccess(map[string]string{
"uuid": attach.UUID,
})
}
@@ -505,7 +505,7 @@ func viewIssue(c *context.Context, isPullList bool) {
issue, err := db.GetIssueByIndex(c.Repo.Repository.ID, index)
if err != nil {
- c.NotFoundOrServerError("GetIssueByIndex", errors.IsIssueNotExist, err)
+ c.NotFoundOrError(err, "get issue by index")
return
}
c.Data["Title"] = issue.Title
@@ -559,7 +559,7 @@ func viewIssue(c *context.Context, isPullList bool) {
}
labels, err := db.GetLabelsByRepoID(repo.ID)
if err != nil {
- c.Handle(500, "GetLabelsByRepoID", err)
+ c.Error(err, "get labels by repository ID")
return
}
hasSelected := false
@@ -583,7 +583,7 @@ func viewIssue(c *context.Context, isPullList bool) {
if c.IsLogged {
// Update issue-user.
if err = issue.ReadBy(c.User.ID); err != nil {
- c.Handle(500, "ReadBy", err)
+ c.Error(err, "mark read by")
return
}
}
@@ -638,8 +638,8 @@ func viewIssue(c *context.Context, isPullList bool) {
branchProtected := false
protectBranch, err := db.GetProtectBranchOfRepoByName(pull.BaseRepoID, pull.HeadBranch)
if err != nil {
- if !errors.IsErrBranchNotExist(err) {
- c.ServerError("GetProtectBranchOfRepoByName", err)
+ if !db.IsErrBranchNotExist(err) {
+ c.Error(err, "get protect branch of repository by name")
return
}
} else {
@@ -661,7 +661,7 @@ func viewIssue(c *context.Context, isPullList bool) {
c.Data["Issue"] = issue
c.Data["IsIssueOwner"] = c.Repo.IsWriter() || (c.IsLogged && issue.IsPoster(c.User.ID))
c.Data["SignInLink"] = conf.Server.Subpath + "/user/login?redirect_to=" + c.Data["Link"].(string)
- c.HTML(200, ISSUE_VIEW)
+ c.Success(ISSUE_VIEW)
}
func ViewIssue(c *context.Context) {
@@ -675,7 +675,7 @@ func ViewPull(c *context.Context) {
func getActionIssue(c *context.Context) *db.Issue {
issue, err := db.GetIssueByIndex(c.Repo.Repository.ID, c.ParamsInt64(":index"))
if err != nil {
- c.NotFoundOrServerError("GetIssueByIndex", errors.IsIssueNotExist, err)
+ c.NotFoundOrError(err, "get issue by index")
return nil
}
@@ -695,22 +695,22 @@ func UpdateIssueTitle(c *context.Context) {
}
if !c.IsLogged || (!issue.IsPoster(c.User.ID) && !c.Repo.IsWriter()) {
- c.Error(403)
+ c.Status(http.StatusForbidden)
return
}
title := c.QueryTrim("title")
if len(title) == 0 {
- c.Error(204)
+ c.Status(http.StatusNoContent)
return
}
if err := issue.ChangeTitle(c.User, title); err != nil {
- c.Handle(500, "ChangeTitle", err)
+ c.Error(err, "change title")
return
}
- c.JSON(200, map[string]interface{}{
+ c.JSONSuccess(map[string]interface{}{
"title": issue.Title,
})
}
@@ -722,17 +722,17 @@ func UpdateIssueContent(c *context.Context) {
}
if !c.IsLogged || (c.User.ID != issue.PosterID && !c.Repo.IsWriter()) {
- c.Error(403)
+ c.Status(http.StatusForbidden)
return
}
content := c.Query("content")
if err := issue.ChangeContent(c.User, content); err != nil {
- c.Handle(500, "ChangeContent", err)
+ c.Error(err, "change content")
return
}
- c.JSON(200, map[string]string{
+ c.JSONSuccess(map[string]string{
"content": string(markup.Markdown(issue.Content, c.Query("context"), c.Repo.Repository.ComposeMetas())),
})
}
@@ -745,35 +745,31 @@ func UpdateIssueLabel(c *context.Context) {
if c.Query("action") == "clear" {
if err := issue.ClearLabels(c.User); err != nil {
- c.Handle(500, "ClearLabels", err)
+ c.Error(err, "clear labels")
return
}
} else {
isAttach := c.Query("action") == "attach"
label, err := db.GetLabelOfRepoByID(c.Repo.Repository.ID, c.QueryInt64("id"))
if err != nil {
- if db.IsErrLabelNotExist(err) {
- c.Error(404, "GetLabelByID")
- } else {
- c.Handle(500, "GetLabelByID", err)
- }
+ c.NotFoundOrError(err, "get label by ID")
return
}
if isAttach && !issue.HasLabel(label.ID) {
if err = issue.AddLabel(c.User, label); err != nil {
- c.Handle(500, "AddLabel", err)
+ c.Error(err, "add label")
return
}
} else if !isAttach && issue.HasLabel(label.ID) {
if err = issue.RemoveLabel(c.User, label); err != nil {
- c.Handle(500, "RemoveLabel", err)
+ c.Error(err, "remove label")
return
}
}
}
- c.JSON(200, map[string]interface{}{
+ c.JSONSuccess(map[string]interface{}{
"ok": true,
})
}
@@ -787,7 +783,7 @@ func UpdateIssueMilestone(c *context.Context) {
oldMilestoneID := issue.MilestoneID
milestoneID := c.QueryInt64("id")
if oldMilestoneID == milestoneID {
- c.JSON(200, map[string]interface{}{
+ c.JSONSuccess(map[string]interface{}{
"ok": true,
})
return
@@ -796,11 +792,11 @@ func UpdateIssueMilestone(c *context.Context) {
// Not check for invalid milestone id and give responsibility to owners.
issue.MilestoneID = milestoneID
if err := db.ChangeMilestoneAssign(c.User, issue, oldMilestoneID); err != nil {
- c.Handle(500, "ChangeMilestoneAssign", err)
+ c.Error(err, "change milestone assign")
return
}
- c.JSON(200, map[string]interface{}{
+ c.JSONSuccess(map[string]interface{}{
"ok": true,
})
}
@@ -813,18 +809,18 @@ func UpdateIssueAssignee(c *context.Context) {
assigneeID := c.QueryInt64("id")
if issue.AssigneeID == assigneeID {
- c.JSON(200, map[string]interface{}{
+ c.JSONSuccess(map[string]interface{}{
"ok": true,
})
return
}
if err := issue.ChangeAssignee(c.User, assigneeID); err != nil {
- c.Handle(500, "ChangeAssignee", err)
+ c.Error(err, "change assignee")
return
}
- c.JSON(200, map[string]interface{}{
+ c.JSONSuccess(map[string]interface{}{
"ok": true,
})
}
@@ -862,7 +858,7 @@ func NewComment(c *context.Context, f form.CreateComment) {
pr, err = db.GetUnmergedPullRequest(pull.HeadRepoID, pull.BaseRepoID, pull.HeadBranch, pull.BaseBranch)
if err != nil {
if !db.IsErrPullRequestNotExist(err) {
- c.ServerError("GetUnmergedPullRequest", err)
+ c.Error(err, "get unmerged pull request")
return
}
}
@@ -870,7 +866,7 @@ func NewComment(c *context.Context, f form.CreateComment) {
// Regenerate patch and test conflict.
if pr == nil {
if err = issue.PullRequest.UpdatePatch(); err != nil {
- c.ServerError("UpdatePatch", err)
+ c.Error(err, "update patch")
return
}
@@ -913,7 +909,7 @@ func NewComment(c *context.Context, f form.CreateComment) {
comment, err = db.CreateIssueComment(c.User, c.Repo.Repository, issue, f.Content, attachments)
if err != nil {
- c.ServerError("CreateIssueComment", err)
+ c.Error(err, "create issue comment")
return
}
@@ -923,32 +919,32 @@ func NewComment(c *context.Context, f form.CreateComment) {
func UpdateCommentContent(c *context.Context) {
comment, err := db.GetCommentByID(c.ParamsInt64(":id"))
if err != nil {
- c.NotFoundOrServerError("GetCommentByID", db.IsErrCommentNotExist, err)
+ c.NotFoundOrError(err, "get comment by ID")
return
}
if c.UserID() != comment.PosterID && !c.Repo.IsAdmin() {
- c.Error(404)
+ c.NotFound()
return
} else if comment.Type != db.COMMENT_TYPE_COMMENT {
- c.Error(204)
+ c.Status(http.StatusNoContent)
return
}
oldContent := comment.Content
comment.Content = c.Query("content")
if len(comment.Content) == 0 {
- c.JSON(200, map[string]interface{}{
+ c.JSONSuccess(map[string]interface{}{
"content": "",
})
return
}
if err = db.UpdateComment(c.User, comment, oldContent); err != nil {
- c.Handle(500, "UpdateComment", err)
+ c.Error(err, "update comment")
return
}
- c.JSON(200, map[string]string{
+ c.JSONSuccess(map[string]string{
"content": string(markup.Markdown(comment.Content, c.Query("context"), c.Repo.Repository.ComposeMetas())),
})
}
@@ -956,24 +952,24 @@ func UpdateCommentContent(c *context.Context) {
func DeleteComment(c *context.Context) {
comment, err := db.GetCommentByID(c.ParamsInt64(":id"))
if err != nil {
- c.NotFoundOrServerError("GetCommentByID", db.IsErrCommentNotExist, err)
+ c.NotFoundOrError(err, "get comment by ID")
return
}
if c.UserID() != comment.PosterID && !c.Repo.IsAdmin() {
- c.Error(404)
+ c.NotFound()
return
} else if comment.Type != db.COMMENT_TYPE_COMMENT {
- c.Error(204)
+ c.Status(http.StatusNoContent)
return
}
if err = db.DeleteCommentByID(c.User, comment.ID); err != nil {
- c.Handle(500, "DeleteCommentByID", err)
+ c.Error(err, "delete comment by ID")
return
}
- c.Status(200)
+ c.Status(http.StatusOK)
}
func Labels(c *context.Context) {
@@ -982,7 +978,7 @@ func Labels(c *context.Context) {
c.Data["PageIsLabels"] = true
c.Data["RequireMinicolors"] = true
c.Data["LabelTemplates"] = db.LabelTemplates
- c.HTML(200, LABELS)
+ c.Success(LABELS)
}
func InitializeLabels(c *context.Context, f form.InitializeLabels) {
@@ -1006,7 +1002,7 @@ func InitializeLabels(c *context.Context, f form.InitializeLabels) {
}
}
if err := db.NewLabels(labels...); err != nil {
- c.Handle(500, "NewLabels", err)
+ c.Error(err, "new labels")
return
}
c.RawRedirect(c.Repo.MakeURL("labels"))
@@ -1028,7 +1024,7 @@ func NewLabel(c *context.Context, f form.CreateLabel) {
Color: f.Color,
}
if err := db.NewLabels(l); err != nil {
- c.Handle(500, "NewLabel", err)
+ c.Error(err, "new labels")
return
}
c.RawRedirect(c.Repo.MakeURL("labels"))
@@ -1037,19 +1033,14 @@ func NewLabel(c *context.Context, f form.CreateLabel) {
func UpdateLabel(c *context.Context, f form.CreateLabel) {
l, err := db.GetLabelByID(f.ID)
if err != nil {
- switch {
- case db.IsErrLabelNotExist(err):
- c.Error(404)
- default:
- c.Handle(500, "UpdateLabel", err)
- }
+ c.NotFoundOrError(err, "get label by ID")
return
}
l.Name = f.Title
l.Color = f.Color
if err := db.UpdateLabel(l); err != nil {
- c.Handle(500, "UpdateLabel", err)
+ c.Error(err, "update label")
return
}
c.RawRedirect(c.Repo.MakeURL("labels"))
@@ -1092,7 +1083,7 @@ func Milestones(c *context.Context) {
miles, err := db.GetMilestones(c.Repo.Repository.ID, page, isShowClosed)
if err != nil {
- c.Handle(500, "GetMilestones", err)
+ c.Error(err, "get milestones")
return
}
for _, m := range miles {
@@ -1112,7 +1103,7 @@ func Milestones(c *context.Context) {
}
c.Data["IsShowClosed"] = isShowClosed
- c.HTML(200, MILESTONE)
+ c.Success(MILESTONE)
}
func NewMilestone(c *context.Context) {
@@ -1121,7 +1112,7 @@ func NewMilestone(c *context.Context) {
c.Data["PageIsMilestones"] = true
c.Data["RequireDatetimepicker"] = true
c.Data["DateLang"] = conf.I18n.DateLang(c.Locale.Language())
- c.HTML(200, MILESTONE_NEW)
+ c.Success(MILESTONE_NEW)
}
func NewMilestonePost(c *context.Context, f form.CreateMilestone) {
@@ -1132,7 +1123,7 @@ func NewMilestonePost(c *context.Context, f form.CreateMilestone) {
c.Data["DateLang"] = conf.I18n.DateLang(c.Locale.Language())
if c.HasError() {
- c.HTML(200, MILESTONE_NEW)
+ c.Success(MILESTONE_NEW)
return
}
@@ -1152,7 +1143,7 @@ func NewMilestonePost(c *context.Context, f form.CreateMilestone) {
Content: f.Content,
Deadline: deadline,
}); err != nil {
- c.Handle(500, "NewMilestone", err)
+ c.Error(err, "new milestone")
return
}
@@ -1169,11 +1160,7 @@ func EditMilestone(c *context.Context) {
m, err := db.GetMilestoneByRepoID(c.Repo.Repository.ID, c.ParamsInt64(":id"))
if err != nil {
- if db.IsErrMilestoneNotExist(err) {
- c.Handle(404, "", nil)
- } else {
- c.Handle(500, "GetMilestoneByRepoID", err)
- }
+ c.NotFoundOrError(err, "get milestone by repository ID")
return
}
c.Data["title"] = m.Name
@@ -1181,7 +1168,7 @@ func EditMilestone(c *context.Context) {
if len(m.DeadlineString) > 0 {
c.Data["deadline"] = m.DeadlineString
}
- c.HTML(200, MILESTONE_NEW)
+ c.Success(MILESTONE_NEW)
}
func EditMilestonePost(c *context.Context, f form.CreateMilestone) {
@@ -1192,7 +1179,7 @@ func EditMilestonePost(c *context.Context, f form.CreateMilestone) {
c.Data["DateLang"] = conf.I18n.DateLang(c.Locale.Language())
if c.HasError() {
- c.HTML(200, MILESTONE_NEW)
+ c.Success(MILESTONE_NEW)
return
}
@@ -1208,18 +1195,14 @@ func EditMilestonePost(c *context.Context, f form.CreateMilestone) {
m, err := db.GetMilestoneByRepoID(c.Repo.Repository.ID, c.ParamsInt64(":id"))
if err != nil {
- if db.IsErrMilestoneNotExist(err) {
- c.Handle(404, "", nil)
- } else {
- c.Handle(500, "GetMilestoneByRepoID", err)
- }
+ c.NotFoundOrError(err, "get milestone by repository ID")
return
}
m.Name = f.Title
m.Content = f.Content
m.Deadline = deadline
if err = db.UpdateMilestone(m); err != nil {
- c.Handle(500, "UpdateMilestone", err)
+ c.Error(err, "update milestone")
return
}
@@ -1230,11 +1213,7 @@ func EditMilestonePost(c *context.Context, f form.CreateMilestone) {
func ChangeMilestonStatus(c *context.Context) {
m, err := db.GetMilestoneByRepoID(c.Repo.Repository.ID, c.ParamsInt64(":id"))
if err != nil {
- if db.IsErrMilestoneNotExist(err) {
- c.Handle(404, "", err)
- } else {
- c.Handle(500, "GetMilestoneByRepoID", err)
- }
+ c.NotFoundOrError(err, "get milestone by repository ID")
return
}
@@ -1246,7 +1225,7 @@ func ChangeMilestonStatus(c *context.Context) {
case "open":
if m.IsClosed {
if err = db.ChangeMilestoneStatus(m, false); err != nil {
- c.Handle(500, "ChangeMilestoneStatus", err)
+ c.Error(err, "change milestone status to open")
return
}
}
@@ -1255,7 +1234,7 @@ func ChangeMilestonStatus(c *context.Context) {
if !m.IsClosed {
m.ClosedDate = time.Now()
if err = db.ChangeMilestoneStatus(m, true); err != nil {
- c.Handle(500, "ChangeMilestoneStatus", err)
+ c.Error(err, "change milestone status to closed")
return
}
}
@@ -1272,7 +1251,7 @@ func DeleteMilestone(c *context.Context) {
c.Flash.Success(c.Tr("repo.milestones.deletion_success"))
}
- c.JSON(200, map[string]interface{}{
+ c.JSONSuccess(map[string]interface{}{
"redirect": c.Repo.MakeURL("milestones"),
})
}