summaryrefslogtreecommitdiffstats
path: root/models
diff options
context:
space:
mode:
authorLunny Xiao <xiaolunwen@gmail.com>2020-01-30 11:49:02 +0800
committerGitHub <noreply@github.com>2020-01-30 11:49:02 +0800
commit0c5e2e2e4cf1b1d28f697f92787a199fb6179e32 (patch)
treed6c790b9629dafad28b4eb1ce460cb18ad5f07d3 /models
parent158b7163872e900984b4fd64e81a8a316e281bc8 (diff)
downloadgitea-0c5e2e2e4cf1b1d28f697f92787a199fb6179e32.tar.gz
gitea-0c5e2e2e4cf1b1d28f697f92787a199fb6179e32.zip
Fix milestone API state parameter unhandled (#10049) (#10053)
* Fix milestone API state parameter unhandled (#10049) * Fix milestone API state parameter unhandled * Fix test * Fix test
Diffstat (limited to 'models')
-rw-r--r--models/issue_milestone.go27
-rw-r--r--models/issue_milestone_test.go5
2 files changed, 27 insertions, 5 deletions
diff --git a/models/issue_milestone.go b/models/issue_milestone.go
index df2f30fb3b..447d0b7f46 100644
--- a/models/issue_milestone.go
+++ b/models/issue_milestone.go
@@ -253,12 +253,33 @@ func updateMilestone(e Engine, m *Milestone) error {
}
// UpdateMilestone updates information of given milestone.
-func UpdateMilestone(m *Milestone) error {
- if err := updateMilestone(x, m); err != nil {
+func UpdateMilestone(m *Milestone, oldIsClosed bool) error {
+ sess := x.NewSession()
+ defer sess.Close()
+ if err := sess.Begin(); err != nil {
+ return err
+ }
+
+ if m.IsClosed && !oldIsClosed {
+ m.ClosedDateUnix = timeutil.TimeStampNow()
+ }
+
+ if err := updateMilestone(sess, m); err != nil {
return err
}
- return updateMilestoneCompleteness(x, m.ID)
+ if err := updateMilestoneCompleteness(sess, m.ID); err != nil {
+ return err
+ }
+
+ // if IsClosed changed, update milestone numbers of repository
+ if oldIsClosed != m.IsClosed {
+ if err := updateRepoMilestoneNum(sess, m.RepoID); err != nil {
+ return err
+ }
+ }
+
+ return sess.Commit()
}
func updateMilestoneCompleteness(e Engine, milestoneID int64) error {
diff --git a/models/issue_milestone_test.go b/models/issue_milestone_test.go
index 6f8548ec67..42445dafeb 100644
--- a/models/issue_milestone_test.go
+++ b/models/issue_milestone_test.go
@@ -160,8 +160,9 @@ func TestUpdateMilestone(t *testing.T) {
milestone := AssertExistsAndLoadBean(t, &Milestone{ID: 1}).(*Milestone)
milestone.Name = "newMilestoneName"
milestone.Content = "newMilestoneContent"
- assert.NoError(t, UpdateMilestone(milestone))
- AssertExistsAndLoadBean(t, milestone)
+ assert.NoError(t, UpdateMilestone(milestone, milestone.IsClosed))
+ milestone = AssertExistsAndLoadBean(t, &Milestone{ID: 1}).(*Milestone)
+ assert.EqualValues(t, "newMilestoneName", milestone.Name)
CheckConsistencyFor(t, &Milestone{})
}