From 1f61340fa3b255661e3b19432ab0af5162642139 Mon Sep 17 00:00:00 2001 From: Raphael Randschau Date: Mon, 23 Feb 2015 20:32:44 +0100 Subject: [PATCH] Properly calculate the number of open issues per label --- models/action.go | 22 ++++++++++++++++++++++ routers/repo/issue.go | 19 +++++++++++++++++++ 2 files changed, 41 insertions(+) diff --git a/models/action.go b/models/action.go index 5cba2f515..a1a33f83a 100644 --- a/models/action.go +++ b/models/action.go @@ -182,6 +182,17 @@ func updateIssuesCommit(userId, repoId int64, repoUserName, repoName string, com } issue.IsClosed = true + if err = issue.GetLabels(); err != nil { + return err + } + for _, label := range issue.Labels { + label.NumClosedIssues++ + + if err = UpdateLabel(label); err != nil { + return err + } + } + if err = UpdateIssue(issue); err != nil { return err } else if err = UpdateIssueUserPairsByStatus(issue.Id, issue.IsClosed); err != nil { @@ -230,6 +241,17 @@ func updateIssuesCommit(userId, repoId int64, repoUserName, repoName string, com } issue.IsClosed = false + if err = issue.GetLabels(); err != nil { + return err + } + for _, label := range issue.Labels { + label.NumClosedIssues-- + + if err = UpdateLabel(label); err != nil { + return err + } + } + if err = UpdateIssue(issue); err != nil { return err } else if err = UpdateIssueUserPairsByStatus(issue.Id, issue.IsClosed); err != nil { diff --git a/routers/repo/issue.go b/routers/repo/issue.go index 3e0206daf..722bd0c3c 100644 --- a/routers/repo/issue.go +++ b/routers/repo/issue.go @@ -549,6 +549,7 @@ func UpdateIssueLabel(ctx *middleware.Context) { label.NumClosedIssues-- } } + if err = models.UpdateLabel(label); err != nil { ctx.Handle(500, "issue.UpdateIssueLabel(UpdateLabel)", err) return @@ -767,6 +768,24 @@ func Comment(ctx *middleware.Context) { return } + if err = issue.GetLabels(); err != nil { + send(500, nil, err) + return + } + + for _, label := range issue.Labels { + if issue.IsClosed { + label.NumClosedIssues++ + } else { + label.NumClosedIssues-- + } + + if err = models.UpdateLabel(label); err != nil { + send(500, nil, err) + return + } + } + // Change open/closed issue counter for the associated milestone if issue.MilestoneId > 0 { if err = models.ChangeMilestoneIssueStats(issue); err != nil {