Only send issue due emails to participants and custom subscribers
This commit is contained in:
parent
6412c4c54a
commit
5ab75649f3
|
@ -47,7 +47,8 @@ class NotificationSetting < ActiveRecord::Base
|
|||
].freeze
|
||||
|
||||
EXCLUDED_WATCHER_EVENTS = [
|
||||
:push_to_merge_request
|
||||
:push_to_merge_request,
|
||||
:issue_due
|
||||
].push(*EXCLUDED_PARTICIPATING_EVENTS).freeze
|
||||
|
||||
def self.find_or_create_for(source)
|
||||
|
|
|
@ -204,10 +204,11 @@ module NotificationRecipientService
|
|||
attr_reader :action
|
||||
attr_reader :previous_assignee
|
||||
attr_reader :skip_current_user
|
||||
def initialize(target, current_user, action:, previous_assignee: nil, skip_current_user: true)
|
||||
def initialize(target, current_user, action:, custom_action: nil, previous_assignee: nil, skip_current_user: true)
|
||||
@target = target
|
||||
@current_user = current_user
|
||||
@action = action
|
||||
@custom_action = custom_action
|
||||
@previous_assignee = previous_assignee
|
||||
@skip_current_user = skip_current_user
|
||||
end
|
||||
|
|
|
@ -377,7 +377,8 @@ class NotificationService
|
|||
recipients = NotificationRecipientService.build_recipients(
|
||||
issue,
|
||||
issue.author,
|
||||
action: "due_date",
|
||||
action: 'due',
|
||||
custom_action: :issue_due,
|
||||
skip_current_user: false
|
||||
)
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
- if Gitlab::CurrentSettings.email_author_in_body
|
||||
%p.details
|
||||
Issue created by #{link_to @issue.author_name, user_url(@issue.author)} is due:
|
||||
#{link_to @issue.author_name, user_url(@issue.author)}'s issue is due soon.
|
||||
|
||||
- if @issue.assignees.any?
|
||||
%p
|
||||
|
|
|
@ -0,0 +1,9 @@
|
|||
class AddIssueDueToNotificationSettings < ActiveRecord::Migration
|
||||
include Gitlab::Database::MigrationHelpers
|
||||
|
||||
DOWNTIME = false
|
||||
|
||||
def change
|
||||
add_column :notification_settings, :issue_due, :boolean
|
||||
end
|
||||
end
|
|
@ -11,7 +11,7 @@
|
|||
#
|
||||
# It's strongly recommended that you check this file into your version control system.
|
||||
|
||||
ActiveRecord::Schema.define(version: 20180327101207) do
|
||||
ActiveRecord::Schema.define(version: 20180330121048) do
|
||||
|
||||
# These are extensions that must be enabled in order to support this database
|
||||
enable_extension "plpgsql"
|
||||
|
@ -1311,6 +1311,7 @@ ActiveRecord::Schema.define(version: 20180327101207) do
|
|||
t.boolean "failed_pipeline"
|
||||
t.boolean "success_pipeline"
|
||||
t.boolean "push_to_merge_request"
|
||||
t.boolean "issue_due"
|
||||
end
|
||||
|
||||
add_index "notification_settings", ["source_id", "source_type"], name: "index_notification_settings_on_source_id_and_source_type", using: :btree
|
||||
|
|
|
@ -23,6 +23,7 @@ new_issue
|
|||
reopen_issue
|
||||
close_issue
|
||||
reassign_issue
|
||||
issue_due
|
||||
new_merge_request
|
||||
push_to_merge_request
|
||||
reopen_merge_request
|
||||
|
@ -75,6 +76,7 @@ curl --request PUT --header "PRIVATE-TOKEN: 9koXpg98eAheJpvBs5tK" https://gitlab
|
|||
| `reopen_issue` | boolean | no | Enable/disable this notification |
|
||||
| `close_issue` | boolean | no | Enable/disable this notification |
|
||||
| `reassign_issue` | boolean | no | Enable/disable this notification |
|
||||
| `issue_due` | boolean | no | Enable/disable this notification |
|
||||
| `new_merge_request` | boolean | no | Enable/disable this notification |
|
||||
| `push_to_merge_request` | boolean | no | Enable/disable this notification |
|
||||
| `reopen_merge_request` | boolean | no | Enable/disable this notification |
|
||||
|
@ -142,6 +144,7 @@ curl --request PUT --header "PRIVATE-TOKEN: 9koXpg98eAheJpvBs5tK" https://gitlab
|
|||
| `reopen_issue` | boolean | no | Enable/disable this notification |
|
||||
| `close_issue` | boolean | no | Enable/disable this notification |
|
||||
| `reassign_issue` | boolean | no | Enable/disable this notification |
|
||||
| `issue_due` | boolean | no | Enable/disable this notification |
|
||||
| `new_merge_request` | boolean | no | Enable/disable this notification |
|
||||
| `push_to_merge_request` | boolean | no | Enable/disable this notification |
|
||||
| `reopen_merge_request` | boolean | no | Enable/disable this notification |
|
||||
|
@ -166,6 +169,7 @@ Example responses:
|
|||
"reopen_issue": false,
|
||||
"close_issue": false,
|
||||
"reassign_issue": false,
|
||||
"issue_due": false,
|
||||
"new_merge_request": false,
|
||||
"push_to_merge_request": false,
|
||||
"reopen_merge_request": false,
|
||||
|
|
|
@ -86,6 +86,7 @@ In most of the below cases, the notification will be sent to:
|
|||
| Close issue | |
|
||||
| Reassign issue | The above, plus the old assignee |
|
||||
| Reopen issue | |
|
||||
| Due issue | Participants and Custom notification level with this event selected |
|
||||
| New merge request | |
|
||||
| Push to merge request | Participants and Custom notification level with this event selected |
|
||||
| Reassign merge request | The above, plus the old assignee |
|
||||
|
@ -96,15 +97,14 @@ In most of the below cases, the notification will be sent to:
|
|||
| Failed pipeline | The author of the pipeline |
|
||||
| Successful pipeline | The author of the pipeline, if they have the custom notification setting for successful pipelines set |
|
||||
|
||||
|
||||
In addition, if the title or description of an Issue or Merge Request is
|
||||
changed, notifications will be sent to any **new** mentions by `@username` as
|
||||
if they had been mentioned in the original text.
|
||||
|
||||
You won't receive notifications for Issues, Merge Requests or Milestones
|
||||
created by yourself. You will only receive automatic notifications when
|
||||
somebody else comments or adds changes to the ones that you've created or
|
||||
mentions you.
|
||||
You won't receive notifications for Issues, Merge Requests or Milestones created
|
||||
by yourself (except when an issue is due). You will only receive automatic
|
||||
notifications when somebody else comments or adds changes to the ones that
|
||||
you've created or mentions you.
|
||||
|
||||
### Email Headers
|
||||
|
||||
|
@ -122,7 +122,7 @@ Notification emails include headers that provide extra content about the notific
|
|||
| X-GitLab-NotificationReason | The reason for being notified. "mentioned", "assigned", etc |
|
||||
|
||||
#### X-GitLab-NotificationReason
|
||||
This header holds the reason for the notification to have been sent out,
|
||||
This header holds the reason for the notification to have been sent out,
|
||||
where reason can be `mentioned`, `assigned`, `own_activity`, etc.
|
||||
Only one reason is sent out according to its priority:
|
||||
- `own_activity`
|
||||
|
@ -130,7 +130,7 @@ Only one reason is sent out according to its priority:
|
|||
- `mentioned`
|
||||
|
||||
The reason in this header will also be shown in the footer of the notification email. For example an email with the
|
||||
reason `assigned` will have this sentence in the footer:
|
||||
reason `assigned` will have this sentence in the footer:
|
||||
`"You are receiving this email because you have been assigned an item on {configured GitLab hostname}"`
|
||||
|
||||
**Note: Only reasons listed above have been implemented so far**
|
||||
|
|
|
@ -935,16 +935,23 @@ describe NotificationService, :mailer do
|
|||
end
|
||||
|
||||
describe '#issue_due' do
|
||||
it 'sends email to issue notification recipients' do
|
||||
before do
|
||||
update_custom_notification(:issue_due, @u_guest_custom, resource: project)
|
||||
update_custom_notification(:issue_due, @u_custom_global)
|
||||
end
|
||||
|
||||
it 'sends email to issue notification recipients, excluding watchers' do
|
||||
notification.issue_due(issue)
|
||||
|
||||
should_email(issue.assignees.first)
|
||||
should_email(issue.author)
|
||||
should_email(@u_watcher)
|
||||
should_email(@u_guest_watcher)
|
||||
should_email(@u_guest_custom)
|
||||
should_email(@u_custom_global)
|
||||
should_email(@u_participant_mentioned)
|
||||
should_email(@subscriber)
|
||||
should_email(@watcher_and_subscriber)
|
||||
should_not_email(@u_watcher)
|
||||
should_not_email(@u_guest_watcher)
|
||||
should_not_email(@unsubscriber)
|
||||
should_not_email(@u_participating)
|
||||
should_not_email(@u_disabled)
|
||||
|
|
Loading…
Reference in New Issue