summaryrefslogtreecommitdiff
path: root/app/models
diff options
context:
space:
mode:
authorHeinrich Lee Yu <heinrich@gitlab.com>2019-07-19 01:04:43 +0800
committerHeinrich Lee Yu <heinrich@gitlab.com>2019-07-23 13:00:53 +0800
commit40d6d5e2d0123f1417bb5d3d1ead47bd525f8dac (patch)
tree1536ffad5f7c1a28ad2ca645a098a29b4bc2834d /app/models
parent17fe03078d003dc61a456da8d3e41e3e52ba4f54 (diff)
downloadgitlab-ce-40d6d5e2d0123f1417bb5d3d1ead47bd525f8dac.tar.gz
Make pipeline emails respect group email setting63485-fix-pipeline-emails-to-use-group-setting
When a user's notification email is set for a group, we should use that for pipeline emails
Diffstat (limited to 'app/models')
-rw-r--r--app/models/group.rb6
-rw-r--r--app/models/user.rb5
2 files changed, 11 insertions, 0 deletions
diff --git a/app/models/group.rb b/app/models/group.rb
index 37f30552b39..26ce2957e9b 100644
--- a/app/models/group.rb
+++ b/app/models/group.rb
@@ -144,6 +144,12 @@ class Group < Namespace
notification_settings(hierarchy_order: hierarchy_order).where(user: user)
end
+ def notification_email_for(user)
+ # Finds the closest notification_setting with a `notification_email`
+ notification_settings = notification_settings_for(user, hierarchy_order: :asc)
+ notification_settings.find { |n| n.notification_email.present? }&.notification_email
+ end
+
def to_reference(_from = nil, full: nil)
"#{self.class.reference_prefix}#{full_path}"
end
diff --git a/app/models/user.rb b/app/models/user.rb
index 0fd3daa3383..b439d1c0c16 100644
--- a/app/models/user.rb
+++ b/app/models/user.rb
@@ -1259,6 +1259,11 @@ class User < ApplicationRecord
end
end
+ def notification_email_for(notification_group)
+ # Return group-specific email address if present, otherwise return global notification email address
+ notification_group&.notification_email_for(self) || notification_email
+ end
+
def notification_settings_for(source)
if notification_settings.loaded?
notification_settings.find do |notification|