diff options
author | Heinrich Lee Yu <heinrich@gitlab.com> | 2019-07-19 01:04:43 +0800 |
---|---|---|
committer | Heinrich Lee Yu <heinrich@gitlab.com> | 2019-07-23 13:00:53 +0800 |
commit | 40d6d5e2d0123f1417bb5d3d1ead47bd525f8dac (patch) | |
tree | 1536ffad5f7c1a28ad2ca645a098a29b4bc2834d /app/models | |
parent | 17fe03078d003dc61a456da8d3e41e3e52ba4f54 (diff) | |
download | gitlab-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.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| |