Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
G
gitlab-ce
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
gitlab-ce
Commits
cdefad88
Commit
cdefad88
authored
Aug 26, 2012
by
Dmitriy Zaporozhets
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #1305 from AlexDenisov/project_access_notifications
Project access notifications
parents
2c32574a
3c96d1f0
Changes
7
Show whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
96 additions
and
1 deletion
+96
-1
app/mailers/notify.rb
app/mailers/notify.rb
+7
-0
app/observers/users_project_observer.rb
app/observers/users_project_observer.rb
+9
-0
app/views/notify/project_access_granted_email.html.haml
app/views/notify/project_access_granted_email.html.haml
+14
-0
config/application.rb
config/application.rb
+1
-1
spec/factories.rb
spec/factories.rb
+5
-0
spec/mailers/notify_spec.rb
spec/mailers/notify_spec.rb
+20
-0
spec/observers/users_project_observer_spec.rb
spec/observers/users_project_observer_spec.rb
+40
-0
No files found.
app/mailers/notify.rb
View file @
cdefad88
...
@@ -76,6 +76,13 @@ class Notify < ActionMailer::Base
...
@@ -76,6 +76,13 @@ class Notify < ActionMailer::Base
mail
(
to:
recipient
(
recipient_id
),
subject:
subject
(
"changed issue #
#{
@issue
.
id
}
"
,
@issue
.
title
))
mail
(
to:
recipient
(
recipient_id
),
subject:
subject
(
"changed issue #
#{
@issue
.
id
}
"
,
@issue
.
title
))
end
end
def
project_access_granted_email
(
user_project_id
)
@users_project
=
UsersProject
.
find
user_project_id
@project
=
@users_project
.
project
mail
(
to:
@users_project
.
user
.
email
,
subject:
subject
(
"access to project was granted"
))
end
private
private
# Look up a User by their ID and return their email address
# Look up a User by their ID and return their email address
...
...
app/observers/users_project_observer.rb
0 → 100644
View file @
cdefad88
class
UsersProjectObserver
<
ActiveRecord
::
Observer
def
after_create
(
users_project
)
Notify
.
project_access_granted_email
(
users_project
.
id
).
deliver
end
def
after_update
(
users_project
)
Notify
.
project_access_granted_email
(
users_project
.
id
).
deliver
end
end
app/views/notify/project_access_granted_email.html.haml
0 → 100644
View file @
cdefad88
%td
.content
{
align:
"left"
,
style:
"font-family: Helvetica, Arial, sans-serif; padding: 20px 0 0;"
,
valign:
"top"
,
width:
"600"
}
%table
{
border:
"0"
,
cellpadding:
"0"
,
cellspacing:
"0"
,
style:
"color: #717171; font: normal 11px Helvetica, Arial, sans-serif; margin: 0; padding: 0;"
,
width:
"600"
}
%tr
%td
{
style:
"font-size: 1px; line-height: 1px;"
,
width:
"21"
}
%td
{
align:
"left"
,
style:
"padding: 20px 0 0;"
}
%h2
{
style:
"color:#646464; font-weight: bold; margin: 0; padding: 0; line-height: 26px; font-size: 18px; font-family: Helvetica, Arial, sans-serif; "
}
=
"You got granted
#{
@users_project
.
project_access_human
}
access to project"
%td
{
style:
"font-size: 1px; line-height: 1px;"
,
width:
"21"
}
%tr
%td
{
style:
"font-size: 1px; line-height: 1px;"
,
width:
"21"
}
%td
{
align:
"left"
,
style:
"padding: 20px 0 0;"
}
%h2
{
style:
"color:#646464 !important; font-weight: bold; margin: 0; padding: 0; line-height: 26px; font-size: 18px; font-family: Helvetica, Arial, sans-serif; "
}
=
link_to_gfm
truncate
(
@project
.
name
,
length:
45
),
project_url
(
@project
),
title:
@project
.
name
%br
config/application.rb
View file @
cdefad88
...
@@ -23,7 +23,7 @@ module Gitlab
...
@@ -23,7 +23,7 @@ module Gitlab
# config.plugins = [ :exception_notification, :ssl_requirement, :all ]
# config.plugins = [ :exception_notification, :ssl_requirement, :all ]
# Activate observers that should always be running.
# Activate observers that should always be running.
config
.
active_record
.
observers
=
:mailer_observer
,
:activity_observer
,
:project_observer
,
:key_observer
,
:issue_observer
,
:user_observer
,
:system_hook_observer
config
.
active_record
.
observers
=
:mailer_observer
,
:activity_observer
,
:project_observer
,
:key_observer
,
:issue_observer
,
:user_observer
,
:system_hook_observer
,
:users_project_observer
# Set Time.zone default to the specified zone and make Active Record auto-convert to this zone.
# Set Time.zone default to the specified zone and make Active Record auto-convert to this zone.
# Run "rake -D time" for a list of tasks for finding time zone names. Default is UTC.
# Run "rake -D time" for a list of tasks for finding time zone names. Default is UTC.
...
...
spec/factories.rb
View file @
cdefad88
...
@@ -90,3 +90,8 @@ Factory.add(:milestone, Milestone) do |obj|
...
@@ -90,3 +90,8 @@ Factory.add(:milestone, Milestone) do |obj|
obj
.
title
=
Faker
::
Lorem
.
sentence
obj
.
title
=
Faker
::
Lorem
.
sentence
obj
.
due_date
=
Date
.
today
+
1
.
month
obj
.
due_date
=
Date
.
today
+
1
.
month
end
end
Factory
.
add
(
:users_project
,
UsersProject
)
do
|
obj
|
obj
.
user
=
Factory
:user
obj
.
project
=
Factory
:project
end
spec/mailers/notify_spec.rb
View file @
cdefad88
...
@@ -145,6 +145,26 @@ describe Notify do
...
@@ -145,6 +145,26 @@ describe Notify do
end
end
end
end
describe
'project access changed'
do
let
(
:project
)
{
Factory
.
create
(
:project
,
path:
"Fuu"
,
code:
"Fuu"
)
}
let
(
:user
)
{
Factory
.
create
:user
}
let
(
:users_project
)
{
Factory
.
create
(
:users_project
,
project:
project
,
user:
user
)
}
subject
{
Notify
.
project_access_granted_email
(
users_project
.
id
)
}
it
'has the correct subject'
do
should
have_subject
/access to project was granted/
end
it
'contains name of project'
do
should
have_body_text
/
#{
project
.
name
}
/
end
it
'contains new user role'
do
should
have_body_text
/
#{
users_project
.
project_access_human
}
/
end
end
context
'items that are noteable, the email for a note'
do
context
'items that are noteable, the email for a note'
do
let
(
:note_author
)
{
Factory
.
create
(
:user
,
name:
'author_name'
)
}
let
(
:note_author
)
{
Factory
.
create
(
:user
,
name:
'author_name'
)
}
let
(
:note
)
{
Factory
.
create
(
:note
,
project:
project
,
author:
note_author
)
}
let
(
:note
)
{
Factory
.
create
(
:note
,
project:
project
,
author:
note_author
)
}
...
...
spec/observers/users_project_observer_spec.rb
0 → 100644
View file @
cdefad88
require
'spec_helper'
describe
UsersProjectObserver
do
let
(
:user
)
{
Factory
.
create
:user
}
let
(
:project
)
{
Factory
.
create
(
:project
,
code:
"Fuu"
,
path:
"Fuu"
)
}
let
(
:users_project
)
{
Factory
.
create
(
:users_project
,
project:
project
,
user:
user
)}
subject
{
UsersProjectObserver
.
instance
}
describe
"#after_create"
do
it
"should called when UsersProject created"
do
subject
.
should_receive
(
:after_create
)
UsersProject
.
observers
.
enable
:users_project_observer
do
Factory
.
create
(
:users_project
,
project:
project
,
user:
user
)
end
end
it
"should send email to user"
do
Notify
.
should_receive
(
:project_access_granted_email
).
with
(
users_project
.
id
).
and_return
(
double
(
deliver:
true
))
subject
.
after_create
(
users_project
)
end
end
describe
"#after_update"
do
it
"should called when UsersProject updated"
do
subject
.
should_receive
(
:after_update
)
UsersProject
.
observers
.
enable
:users_project_observer
do
users_project
.
update_attribute
(
:project_access
,
40
)
end
end
it
"should send email to user"
do
Notify
.
should_receive
(
:project_access_granted_email
).
with
(
users_project
.
id
).
and_return
(
double
(
deliver:
true
))
subject
.
after_update
(
users_project
)
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