diff options
author | Nick Thomas <nick@gitlab.com> | 2019-07-23 17:09:28 +0300 |
---|---|---|
committer | Nick Thomas <nick@gitlab.com> | 2019-07-23 17:09:28 +0300 |
commit | c404c57fb8b5a6ca174e6fccb25cf057549a7a6f (patch) | |
tree | 9c1f298b64edb362b4c13d9e0754e08921e3e82e /app/models | |
parent | 6ee5f089a72c309827aac768c94e79481bc19b5f (diff) | |
parent | 40d6d5e2d0123f1417bb5d3d1ead47bd525f8dac (diff) |
Merge branch '63485-fix-pipeline-emails-to-use-group-setting' into 'master'
Make pipeline emails respect group email setting
Closes #63485
See merge request gitlab-org/gitlab-ce!30907
Diffstat (limited to 'app/models')
-rw-r--r-- | app/models/group.rb | 6 | ||||
-rw-r--r-- | app/models/user.rb | 5 |
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| |