* extract actions on new issue from models to services * improve code * rename services/issues to services/issuetags/v1.10.0-rc1
} | } | ||||
sess.Close() | sess.Close() | ||||
if err = NotifyWatchers(&Action{ | |||||
ActUserID: issue.Poster.ID, | |||||
ActUser: issue.Poster, | |||||
OpType: ActionCreateIssue, | |||||
Content: fmt.Sprintf("%d|%s", issue.Index, issue.Title), | |||||
RepoID: repo.ID, | |||||
Repo: repo, | |||||
IsPrivate: repo.IsPrivate, | |||||
}); err != nil { | |||||
log.Error("NotifyWatchers: %v", err) | |||||
} | |||||
mode, _ := AccessLevel(issue.Poster, issue.Repo) | |||||
if err = PrepareWebhooks(repo, HookEventIssues, &api.IssuePayload{ | |||||
Action: api.HookIssueOpened, | |||||
Index: issue.Index, | |||||
Issue: issue.APIFormat(), | |||||
Repository: repo.APIFormat(mode), | |||||
Sender: issue.Poster.APIFormat(), | |||||
}); err != nil { | |||||
log.Error("PrepareWebhooks: %v", err) | |||||
} else { | |||||
go HookQueue.Add(issue.RepoID) | |||||
} | |||||
return nil | return nil | ||||
} | } | ||||
api "code.gitea.io/gitea/modules/structs" | api "code.gitea.io/gitea/modules/structs" | ||||
"code.gitea.io/gitea/modules/timeutil" | "code.gitea.io/gitea/modules/timeutil" | ||||
"code.gitea.io/gitea/modules/util" | "code.gitea.io/gitea/modules/util" | ||||
issue_service "code.gitea.io/gitea/services/issue" | |||||
milestone_service "code.gitea.io/gitea/services/milestone" | milestone_service "code.gitea.io/gitea/services/milestone" | ||||
) | ) | ||||
form.Labels = make([]int64, 0) | form.Labels = make([]int64, 0) | ||||
} | } | ||||
if err := models.NewIssue(ctx.Repo.Repository, issue, form.Labels, assigneeIDs, nil); err != nil { | |||||
if err := issue_service.NewIssue(ctx.Repo.Repository, issue, form.Labels, assigneeIDs, nil); err != nil { | |||||
if models.IsErrUserDoesNotHaveAccessToRepo(err) { | if models.IsErrUserDoesNotHaveAccessToRepo(err) { | ||||
ctx.Error(400, "UserDoesNotHaveAccessToRepo", err) | ctx.Error(400, "UserDoesNotHaveAccessToRepo", err) | ||||
return | return |
api "code.gitea.io/gitea/modules/structs" | api "code.gitea.io/gitea/modules/structs" | ||||
"code.gitea.io/gitea/modules/util" | "code.gitea.io/gitea/modules/util" | ||||
comment_service "code.gitea.io/gitea/services/comments" | comment_service "code.gitea.io/gitea/services/comments" | ||||
issue_service "code.gitea.io/gitea/services/issue" | |||||
milestone_service "code.gitea.io/gitea/services/milestone" | milestone_service "code.gitea.io/gitea/services/milestone" | ||||
"github.com/unknwon/com" | "github.com/unknwon/com" | ||||
Content: form.Content, | Content: form.Content, | ||||
Ref: form.Ref, | Ref: form.Ref, | ||||
} | } | ||||
if err := models.NewIssue(repo, issue, labelIDs, assigneeIDs, attachments); err != nil { | |||||
if err := issue_service.NewIssue(repo, issue, labelIDs, assigneeIDs, attachments); err != nil { | |||||
if models.IsErrUserDoesNotHaveAccessToRepo(err) { | if models.IsErrUserDoesNotHaveAccessToRepo(err) { | ||||
ctx.Error(400, "UserDoesNotHaveAccessToRepo", err.Error()) | ctx.Error(400, "UserDoesNotHaveAccessToRepo", err.Error()) | ||||
return | return |
// 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 issue | |||||
import ( | |||||
"fmt" | |||||
"code.gitea.io/gitea/models" | |||||
"code.gitea.io/gitea/modules/log" | |||||
api "code.gitea.io/gitea/modules/structs" | |||||
) | |||||
// NewIssue creates new issue with labels for repository. | |||||
func NewIssue(repo *models.Repository, issue *models.Issue, labelIDs []int64, assigneeIDs []int64, uuids []string) error { | |||||
if err := models.NewIssue(repo, issue, labelIDs, assigneeIDs, uuids); err != nil { | |||||
return err | |||||
} | |||||
if err := models.NotifyWatchers(&models.Action{ | |||||
ActUserID: issue.Poster.ID, | |||||
ActUser: issue.Poster, | |||||
OpType: models.ActionCreateIssue, | |||||
Content: fmt.Sprintf("%d|%s", issue.Index, issue.Title), | |||||
RepoID: repo.ID, | |||||
Repo: repo, | |||||
IsPrivate: repo.IsPrivate, | |||||
}); err != nil { | |||||
log.Error("NotifyWatchers: %v", err) | |||||
} | |||||
mode, _ := models.AccessLevel(issue.Poster, issue.Repo) | |||||
if err := models.PrepareWebhooks(repo, models.HookEventIssues, &api.IssuePayload{ | |||||
Action: api.HookIssueOpened, | |||||
Index: issue.Index, | |||||
Issue: issue.APIFormat(), | |||||
Repository: repo.APIFormat(mode), | |||||
Sender: issue.Poster.APIFormat(), | |||||
}); err != nil { | |||||
log.Error("PrepareWebhooks: %v", err) | |||||
} else { | |||||
go models.HookQueue.Add(issue.RepoID) | |||||
} | |||||
return nil | |||||
} |