BigW Consortium Gitlab
Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
G
gitlab-ce
Project
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Open sidebar
Forest Godfrey
gitlab-ce
Commits
0a044c73
Commit
0a044c73
authored
Mar 27, 2013
by
Dmitriy Zaporozhets
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
NotificationService respects disabled notifications now
parent
ba599120
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
43 additions
and
19 deletions
+43
-19
notification_service.rb
app/services/notification_service.rb
+43
-19
No files found.
app/services/notification_service.rb
View file @
0a044c73
...
@@ -8,6 +8,9 @@
...
@@ -8,6 +8,9 @@
class
NotificationService
class
NotificationService
# Always notify user about ssh key added
# Always notify user about ssh key added
# only if ssh key is not deploy key
# only if ssh key is not deploy key
#
# This is security email so it will be sent
# even if user disabled notifications
def
new_key
(
key
)
def
new_key
(
key
)
if
key
.
user
if
key
.
user
Notify
.
delay
.
new_ssh_key_email
(
key
.
id
)
Notify
.
delay
.
new_ssh_key_email
(
key
.
id
)
...
@@ -21,10 +24,10 @@ class NotificationService
...
@@ -21,10 +24,10 @@ class NotificationService
# * project team members with notification level higher then Participating
# * project team members with notification level higher then Participating
#
#
def
close_issue
(
issue
,
current_user
)
def
close_issue
(
issue
,
current_user
)
recipients
=
[
issue
.
author
,
issue
.
assignee
].
compact
.
uniq
recipients
=
reject_muted_users
([
issue
.
author
,
issue
.
assignee
])
# Dont send email to me when I close an issue
# Dont send email to me when I close an issue
recipients
.
reject!
{
|
u
|
u
==
current_user
}
recipients
.
delete
(
current_user
)
recipients
.
each
do
|
recipient
|
recipients
.
each
do
|
recipient
|
Notify
.
delay
.
issue_status_changed_email
(
recipient
.
id
,
issue
.
id
,
issue
.
state
,
current_user
.
id
)
Notify
.
delay
.
issue_status_changed_email
(
recipient
.
id
,
issue
.
id
,
issue
.
state
,
current_user
.
id
)
...
@@ -37,14 +40,7 @@ class NotificationService
...
@@ -37,14 +40,7 @@ class NotificationService
# * issue new assignee if his notification level is not Disabled
# * issue new assignee if his notification level is not Disabled
#
#
def
reassigned_issue
(
issue
,
current_user
)
def
reassigned_issue
(
issue
,
current_user
)
recipient_ids
=
[
issue
.
assignee_id
,
issue
.
assignee_id_was
].
compact
.
uniq
reassign_email
(
merge_request
,
current_user
,
'reassigned_issue_email'
)
# Reject me from recipients if I reassign an issue
recipient_ids
.
reject!
{
|
id
|
id
==
current_user
.
id
}
recipient_ids
.
each
do
|
recipient_id
|
Notify
.
delay
.
reassigned_issue_email
(
recipient_id
,
issue
.
id
,
issue
.
assignee_id_was
)
end
end
end
# When create an issue we should send next emails:
# When create an issue we should send next emails:
...
@@ -52,7 +48,11 @@ class NotificationService
...
@@ -52,7 +48,11 @@ class NotificationService
# * issue assignee if his notification level is not Disabled
# * issue assignee if his notification level is not Disabled
#
#
def
new_issue
(
issue
,
current_user
)
def
new_issue
(
issue
,
current_user
)
if
issue
.
assignee
&&
issue
.
assignee
!=
current_user
if
issue
.
assignee
&&
issue
.
assignee
!=
current_user
# skip if assignee notification disabled
return
true
if
issue
.
assignee
.
notification
.
disabled?
Notify
.
delay
.
new_issue_email
(
issue
.
id
)
Notify
.
delay
.
new_issue_email
(
issue
.
id
)
end
end
end
end
...
@@ -63,6 +63,9 @@ class NotificationService
...
@@ -63,6 +63,9 @@ class NotificationService
#
#
def
new_merge_request
(
merge_request
,
current_user
)
def
new_merge_request
(
merge_request
,
current_user
)
if
merge_request
.
assignee
&&
merge_request
.
assignee
!=
current_user
if
merge_request
.
assignee
&&
merge_request
.
assignee
!=
current_user
# skip if assignee notification disabled
return
true
if
merge_request
.
assignee
.
notification
.
disabled?
Notify
.
delay
.
new_merge_request_email
(
merge_request
.
id
)
Notify
.
delay
.
new_merge_request_email
(
merge_request
.
id
)
end
end
end
end
...
@@ -73,12 +76,7 @@ class NotificationService
...
@@ -73,12 +76,7 @@ class NotificationService
# * merge_request assignee if his notification level is not Disabled
# * merge_request assignee if his notification level is not Disabled
#
#
def
reassigned_merge_request
(
merge_request
,
current_user
)
def
reassigned_merge_request
(
merge_request
,
current_user
)
recipients_ids
=
merge_request
.
assignee_id_was
,
merge_request
.
assignee_id
reassign_email
(
merge_request
,
current_user
,
'reassigned_merge_request_email'
)
recipients_ids
.
delete
current_user
.
id
recipients_ids
.
each
do
|
recipient_id
|
Notify
.
delay
.
reassigned_merge_request_email
(
recipient_id
,
merge_request
.
id
,
merge_request
.
assignee_id_was
)
end
end
end
# Notify new user with email after creation
# Notify new user with email after creation
...
@@ -93,15 +91,17 @@ class NotificationService
...
@@ -93,15 +91,17 @@ class NotificationService
#
#
def
new_note
(
note
)
def
new_note
(
note
)
if
note
.
notify
if
note
.
notify
users
=
note
.
project
.
users
.
reject
{
|
u
|
u
.
id
==
note
.
author
.
id
}
users
=
note
.
project
.
users
users
=
reject_muted_users
(
users
)
users
.
delete
(
note
.
author
)
# Note: wall posts are not "attached" to anything, so fall back to "Wall"
# Note: wall posts are not "attached" to anything, so fall back to "Wall"
noteable_type
=
note
.
noteable_type
.
presence
||
"Wall"
noteable_type
=
note
.
noteable_type
.
presence
||
"Wall"
notify_method
=
"note_
#{
noteable_type
.
underscore
}
_email"
.
to_sym
notify_method
=
"note_
#{
noteable_type
.
underscore
}
_email"
.
to_sym
if
Notify
.
respond_to?
notify_method
if
Notify
.
respond_to?
notify_method
team_without_note_author
(
note
).
map
do
|
u
|
users
.
each
do
|
user
|
Notify
.
delay
.
send
(
notify_method
,
u
.
id
,
note
.
id
)
Notify
.
delay
.
send
(
notify_method
,
u
ser
.
id
,
note
.
id
)
end
end
end
end
elsif
note
.
notify_author
&&
note
.
commit_author
elsif
note
.
notify_author
&&
note
.
commit_author
...
@@ -116,4 +116,28 @@ class NotificationService
...
@@ -116,4 +116,28 @@ class NotificationService
def
update_team_member
(
users_project
)
def
update_team_member
(
users_project
)
Notify
.
delay
.
project_access_granted_email
(
users_project
.
id
)
Notify
.
delay
.
project_access_granted_email
(
users_project
.
id
)
end
end
protected
# Remove users with disabled notifications from array
# Also remove duplications and nil recipients
def
reject_muted_users
(
users
)
users
.
compact
.
uniq
.
reject
do
|
user
|
user
.
notification
.
disabled?
end
end
def
reassign_email
(
target
,
current_user
,
entity_sym
)
recipients
=
User
.
where
(
id:
[
target
.
assignee_id
,
target
.
assignee_id_was
])
# reject users with disabled notifications
recipients
=
reject_muted_users
(
recipients
)
# Reject me from recipients if I reassign an item
recipients
.
delete
(
current_user
)
recipients
.
each
do
|
recipient_id
|
Notify
.
delay
.
send
(
method
,
recipient
.
id
,
target
.
id
,
target
.
assignee_id_was
)
end
end
end
end
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment