diff options
author | Lunny Xiao <xiaolunwen@gmail.com> | 2019-09-18 08:17:12 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-09-18 08:17:12 +0800 |
commit | 29454733b4eeea33e6c94c50b32855066c203988 (patch) | |
tree | 8b6317a23c7a51a83dea1a674b76084c225397e1 /services | |
parent | 99f3ee3bf3ff969097a0b9a2627533af476a0461 (diff) | |
download | gitea-29454733b4eeea33e6c94c50b32855066c203988.tar.gz gitea-29454733b4eeea33e6c94c50b32855066c203988.zip |
move some milestone functions to a standalone package (#8213)
Diffstat (limited to 'services')
-rw-r--r-- | services/milestone/milestone.go | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/services/milestone/milestone.go b/services/milestone/milestone.go new file mode 100644 index 0000000000..68052e5a6c --- /dev/null +++ b/services/milestone/milestone.go @@ -0,0 +1,59 @@ +// Copyright 2019 The Gitea Authors. All rights reserved. +// Use of this source code is governed by a MIT-style +// license that can be found in the LICENSE file. + +package models + +import ( + "code.gitea.io/gitea/models" + "code.gitea.io/gitea/modules/log" + api "code.gitea.io/gitea/modules/structs" +) + +// ChangeMilestoneAssign changes assignment of milestone for issue. +func ChangeMilestoneAssign(issue *models.Issue, doer *models.User, oldMilestoneID int64) (err error) { + if err = models.ChangeMilestoneAssign(issue, doer, oldMilestoneID); err != nil { + return + } + + var hookAction api.HookIssueAction + if issue.MilestoneID > 0 { + hookAction = api.HookIssueMilestoned + } else { + hookAction = api.HookIssueDemilestoned + } + + if err = issue.LoadAttributes(); err != nil { + return err + } + + mode, _ := models.AccessLevel(doer, issue.Repo) + if issue.IsPull { + err = issue.PullRequest.LoadIssue() + if err != nil { + log.Error("LoadIssue: %v", err) + return + } + err = models.PrepareWebhooks(issue.Repo, models.HookEventPullRequest, &api.PullRequestPayload{ + Action: hookAction, + Index: issue.Index, + PullRequest: issue.PullRequest.APIFormat(), + Repository: issue.Repo.APIFormat(mode), + Sender: doer.APIFormat(), + }) + } else { + err = models.PrepareWebhooks(issue.Repo, models.HookEventIssues, &api.IssuePayload{ + Action: hookAction, + Index: issue.Index, + Issue: issue.APIFormat(), + Repository: issue.Repo.APIFormat(mode), + Sender: doer.APIFormat(), + }) + } + if err != nil { + log.Error("PrepareWebhooks [is_pull: %v]: %v", issue.IsPull, err) + } else { + go models.HookQueue.Add(issue.RepoID) + } + return nil +} |