Browse Source

API allow to create closed milestones (#11745)

* API allow to create closed milestones

* set CloseDate too

Co-authored-by: Lauris BH <lauris@nix.lv>
Co-authored-by: techknowlogick <techknowlogick@gitea.io>
tags/v1.13.0-rc1
6543 GitHub 5 years ago
parent
commit
ab9ec61d95
4 changed files with 28 additions and 0 deletions
  1. +13
    -0
      integrations/api_issue_milestone_test.go
  2. +2
    -0
      modules/structs/issue_milestone.go
  3. +5
    -0
      routers/api/v1/repo/milestone.go
  4. +8
    -0
      templates/swagger/v1_json.tmpl

+ 13
- 0
integrations/api_issue_milestone_test.go View File

@@ -44,4 +44,17 @@ func TestAPIIssuesMilestone(t *testing.T) {
var apiMilestone2 structs.Milestone
DecodeJSON(t, resp, &apiMilestone2)
assert.EqualValues(t, "closed", apiMilestone2.State)

req = NewRequestWithJSON(t, "POST", fmt.Sprintf("/api/v1/repos/%s/%s/milestones?token=%s", owner.Name, repo.Name, token), structs.CreateMilestoneOption{
Title: "wow",
Description: "closed one",
State: "closed",
})
resp = session.MakeRequest(t, req, http.StatusCreated)
DecodeJSON(t, resp, &apiMilestone)
assert.Equal(t, "wow", apiMilestone.Title)
assert.Equal(t, structs.StateClosed, apiMilestone.State)

req = NewRequest(t, "DELETE", fmt.Sprintf("/api/v1/repos/%s/%s/milestones/%d?token=%s", owner.Name, repo.Name, apiMilestone.ID, token))
resp = session.MakeRequest(t, req, http.StatusNoContent)
}

+ 2
- 0
modules/structs/issue_milestone.go View File

@@ -28,6 +28,8 @@ type CreateMilestoneOption struct {
Description string `json:"description"`
// swagger:strfmt date-time
Deadline *time.Time `json:"due_on"`
// enum: open,closed
State string `json:"state"`
}

// EditMilestoneOption options for editing a milestone


+ 5
- 0
routers/api/v1/repo/milestone.go View File

@@ -144,6 +144,11 @@ func CreateMilestone(ctx *context.APIContext, form api.CreateMilestoneOption) {
DeadlineUnix: timeutil.TimeStamp(form.Deadline.Unix()),
}

if form.State == "closed" {
milestone.IsClosed = true
milestone.ClosedDateUnix = timeutil.TimeStampNow()
}

if err := models.NewMilestone(milestone); err != nil {
ctx.Error(http.StatusInternalServerError, "NewMilestone", err)
return


+ 8
- 0
templates/swagger/v1_json.tmpl View File

@@ -11384,6 +11384,14 @@
"format": "date-time",
"x-go-name": "Deadline"
},
"state": {
"type": "string",
"enum": [
"open",
"closed"
],
"x-go-name": "State"
},
"title": {
"type": "string",
"x-go-name": "Title"


Loading…
Cancel
Save