]> source.dussan.org Git - gitea.git/commitdiff
Properly calculate the number of open issues per label
authorRaphael Randschau <nicolai86@me.com>
Mon, 23 Feb 2015 19:32:44 +0000 (20:32 +0100)
committerRaphael Randschau <nicolai86@me.com>
Mon, 23 Feb 2015 20:26:24 +0000 (21:26 +0100)
models/action.go
routers/repo/issue.go

index 5cba2f515a4ca35ca4eed1ab3f9a5d8382e06f05..a1a33f83a029e9b7570cedb92bdd15d308796d9a 100644 (file)
@@ -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 {
index 3e0206dafbca4ad5af2976d6323812a5aab8aeb2..722bd0c3c44392f181538eaaf0e9bde5108d46ad 100644 (file)
@@ -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 {