From f2afed3098973eb70ecf61c7e3bf7203bf3f592a Mon Sep 17 00:00:00 2001 From: Győrvári Gábor Date: Fri, 23 Jun 2017 15:43:37 +0200 Subject: Enable assignee e-mail notification (#2003) * Enable assignee e-mail notification * Check assignee and doer to avoid self made comment notifications. * Assignee not always defined * New method to avoid error when assignee deleted * Assignee empty check --- models/issue.go | 23 ++++++++++++++++++----- models/issue_mail.go | 5 +++++ 2 files changed, 23 insertions(+), 5 deletions(-) (limited to 'models') diff --git a/models/issue.go b/models/issue.go index 0989e3e195..e2e53b06fa 100644 --- a/models/issue.go +++ b/models/issue.go @@ -131,6 +131,22 @@ func (issue *Issue) loadPoster(e Engine) (err error) { return } +func (issue *Issue) loadAssignee(e Engine) (err error) { + if issue.Assignee == nil { + issue.Assignee, err = getUserByID(e, issue.AssigneeID) + if err != nil { + issue.AssigneeID = -1 + issue.Assignee = NewGhostUser() + if !IsErrUserNotExist(err) { + return fmt.Errorf("getUserByID.(assignee) [%d]: %v", issue.AssigneeID, err) + } + err = nil + return + } + } + return +} + func (issue *Issue) loadAttributes(e Engine) (err error) { if err = issue.loadRepo(e); err != nil { return @@ -151,11 +167,8 @@ func (issue *Issue) loadAttributes(e Engine) (err error) { } } - if issue.Assignee == nil && issue.AssigneeID > 0 { - issue.Assignee, err = getUserByID(e, issue.AssigneeID) - if err != nil { - return fmt.Errorf("getUserByID.(assignee) [%d]: %v", issue.AssigneeID, err) - } + if err = issue.loadAssignee(e); err != nil { + return } if issue.IsPull && issue.PullRequest == nil { diff --git a/models/issue_mail.go b/models/issue_mail.go index 615aa82f06..b9e1a69fc2 100644 --- a/models/issue_mail.go +++ b/models/issue_mail.go @@ -42,6 +42,11 @@ func mailIssueCommentToParticipants(issue *Issue, doer *User, comment *Comment, participants = append(participants, issue.Poster) } + // Assignee must receive any communications + if issue.Assignee != nil && issue.AssigneeID > 0 && issue.AssigneeID != doer.ID { + participants = append(participants, issue.Assignee) + } + tos := make([]string, 0, len(watchers)) // List of email addresses. names := make([]string, 0, len(watchers)) for i := range watchers { -- cgit v1.2.3