aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUnknwon <u@gogs.io>2017-02-10 15:54:02 -0500
committerUnknwon <u@gogs.io>2017-02-10 15:54:02 -0500
commit3f95824e656f2eb6a193038d58316b5abf0b1888 (patch)
treeceecda075c05e3c84f112653ce88e192f57ff0e1
parent29722af1ae51333a7da742b5e02a5e7fe5983aab (diff)
api/repo/milestone: fix change status didn't take effect
-rw-r--r--models/issue.go6
-rw-r--r--routers/api/v1/repo/milestone.go8
2 files changed, 13 insertions, 1 deletions
diff --git a/models/issue.go b/models/issue.go
index cc3e4ad0..dbe01f6f 100644
--- a/models/issue.go
+++ b/models/issue.go
@@ -1405,6 +1405,10 @@ func (m *Milestone) State() api.StateType {
return api.STATE_OPEN
}
+func (m *Milestone) ChangeStatus(isClosed bool) error {
+ return ChangeMilestoneStatus(m, isClosed)
+}
+
func (m *Milestone) APIFormat() *api.Milestone {
apiMilestone := &api.Milestone{
ID: m.ID,
@@ -1513,6 +1517,8 @@ func MilestoneStats(repoID int64) (open int64, closed int64) {
}
// ChangeMilestoneStatus changes the milestone open/closed status.
+// If milestone passes with changed values, those values will be
+// updated to database as well.
func ChangeMilestoneStatus(m *Milestone, isClosed bool) (err error) {
repo, err := GetRepositoryByID(m.RepoID)
if err != nil {
diff --git a/routers/api/v1/repo/milestone.go b/routers/api/v1/repo/milestone.go
index 2dcc3a52..bd408f63 100644
--- a/routers/api/v1/repo/milestone.go
+++ b/routers/api/v1/repo/milestone.go
@@ -81,10 +81,16 @@ func EditMilestone(ctx *context.APIContext, form api.EditMilestoneOption) {
milestone.Deadline = *form.Deadline
}
- if err := models.UpdateMilestone(milestone); err != nil {
+ if form.State != nil {
+ if err = milestone.ChangeStatus(api.STATE_CLOSED == api.StateType(*form.State)); err != nil {
+ ctx.Error(500, "ChangeStatus", err)
+ return
+ }
+ } else if err = models.UpdateMilestone(milestone); err != nil {
ctx.Handle(500, "UpdateMilestone", err)
return
}
+
ctx.JSON(200, milestone.APIFormat())
}