]> source.dussan.org Git - gitea.git/commitdiff
Enable assignee e-mail notification (#2003)
authorGyőrvári Gábor <scr34m@gmail.com>
Fri, 23 Jun 2017 13:43:37 +0000 (15:43 +0200)
committerLunny Xiao <xiaolunwen@gmail.com>
Fri, 23 Jun 2017 13:43:37 +0000 (21:43 +0800)
* 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
models/issue_mail.go

index 0989e3e195d91c66a3a8836584aad6cff8091c0f..e2e53b06fa2de2195d7fa0bf86c3fbd9300d1f22 100644 (file)
@@ -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 {
index 615aa82f06090f6a72d2f4d8b8f33358f9a0f3f0..b9e1a69fc2403c2bb033e3acd5a1c49c71aae01f 100644 (file)
@@ -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 {