aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author无闻 <u@gogs.io>2015-02-24 12:33:18 -0500
committer无闻 <u@gogs.io>2015-02-24 12:33:18 -0500
commitd5de48df89c822b399bcf5ce710456881225fe21 (patch)
tree6f8efa5381cef3652044f19522f0d441a5afea5b
parentcd8b43d9844cb0de3ef7887178140f1dc43ec72c (diff)
parent1f61340fa3b255661e3b19432ab0af5162642139 (diff)
Merge pull request #982 from nicolai86/bugfix/label-num_issues-2nd
Properly calculate the number of open issues per label
-rw-r--r--models/action.go22
-rw-r--r--routers/repo/issue.go19
2 files changed, 41 insertions, 0 deletions
diff --git a/models/action.go b/models/action.go
index 5cba2f51..a1a33f83 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 3e0206da..722bd0c3 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 {