Commit 9fef020f6be6ef0b468451b953c9f5f1dc156ee7

Authored by Victor Costa
1 parent 331869b0

Email template for change password notification

app/mailers/task_mailer.rb
1 class TaskMailer < ActionMailer::Base 1 class TaskMailer < ActionMailer::Base
2 2
  3 + include EmailTemplateHelper
  4 +
3 def target_notification(task, message) 5 def target_notification(task, message)
4 @message = extract_message(message) 6 @message = extract_message(message)
5 @target = task.target.name 7 @target = task.target.name
@@ -33,15 +35,13 @@ class TaskMailer &lt; ActionMailer::Base @@ -33,15 +35,13 @@ class TaskMailer &lt; ActionMailer::Base
33 @requestor = task.requestor.name 35 @requestor = task.requestor.name
34 @environment = task.requestor.environment.name 36 @environment = task.requestor.environment.name
35 @url = url_for(:host => task.requestor.environment.default_hostname, :controller => 'home') 37 @url = url_for(:host => task.requestor.environment.default_hostname, :controller => 'home')
36 - @email_template = task.email_template  
37 - template_params = {:environment => task.requestor.environment, :task => task}  
38 38
39 - mail( 39 + mail_with_template(
40 to: task.requestor.notification_emails, 40 to: task.requestor.notification_emails,
41 from: self.class.generate_from(task), 41 from: self.class.generate_from(task),
42 - subject: @email_template.present? ? @email_template.parsed_subject(template_params) : '[%s] %s' % [task.requestor.environment.name, task.target_notification_description],  
43 - body: @email_template.present? ? @email_template.parsed_body(template_params) : nil,  
44 - content_type: @email_template.present? ? "text/html" : nil 42 + subject: '[%s] %s' % [task.requestor.environment.name, task.target_notification_description],
  43 + email_template: task.email_template,
  44 + template_params: {:environment => task.requestor.environment, :task => task, :message => @message, :url => @url, :requestor => task.requestor}
45 ) 45 )
46 end 46 end
47 47
app/models/change_password.rb
@@ -26,6 +26,13 @@ class ChangePassword &lt; Task @@ -26,6 +26,13 @@ class ChangePassword &lt; Task
26 validates_presence_of :password_confirmation, :on => :update, :if => lambda { |change| change.status != Task::Status::CANCELLED } 26 validates_presence_of :password_confirmation, :on => :update, :if => lambda { |change| change.status != Task::Status::CANCELLED }
27 validates_confirmation_of :password, :if => lambda { |change| change.status != Task::Status::CANCELLED } 27 validates_confirmation_of :password, :if => lambda { |change| change.status != Task::Status::CANCELLED }
28 28
  29 + before_save :set_email_template
  30 +
  31 + def set_email_template
  32 + template = environment.email_templates.find_by_template_type(:user_change_password)
  33 + data[:email_template_id] = template.id unless template.nil?
  34 + end
  35 +
29 def environment 36 def environment
30 requestor.environment unless requestor.nil? 37 requestor.environment unless requestor.nil?
31 end 38 end
app/models/email_template.rb
@@ -23,7 +23,8 @@ class EmailTemplate &lt; ActiveRecord::Base @@ -23,7 +23,8 @@ class EmailTemplate &lt; ActiveRecord::Base
23 :task_rejection => {:description => _('Task Rejection'), :owner_type => Profile}, 23 :task_rejection => {:description => _('Task Rejection'), :owner_type => Profile},
24 :task_acceptance => {:description => _('Task Acceptance'), :owner_type => Profile}, 24 :task_acceptance => {:description => _('Task Acceptance'), :owner_type => Profile},
25 :organization_members => {:description => _('Organization Members'), :owner_type => Profile}, 25 :organization_members => {:description => _('Organization Members'), :owner_type => Profile},
26 - :user_activation => {:description => _('User Activation'), :unique => true, :owner_type => Environment} 26 + :user_activation => {:description => _('User Activation'), :unique => true, :owner_type => Environment},
  27 + :user_change_password => {:description => _('Change User Password'), :unique => true, :owner_type => Environment}
27 } 28 }
28 end 29 end
29 30
app/models/task.rb
@@ -245,7 +245,8 @@ class Task &lt; ActiveRecord::Base @@ -245,7 +245,8 @@ class Task &lt; ActiveRecord::Base
245 def to_liquid 245 def to_liquid
246 HashWithIndifferentAccess.new({ 246 HashWithIndifferentAccess.new({
247 :requestor => requestor, 247 :requestor => requestor,
248 - :reject_explanation => reject_explanation 248 + :reject_explanation => reject_explanation,
  249 + :code => code
249 }) 250 })
250 end 251 end
251 252
test/unit/change_password_test.rb
@@ -71,4 +71,10 @@ class ChangePasswordTest &lt; ActiveSupport::TestCase @@ -71,4 +71,10 @@ class ChangePasswordTest &lt; ActiveSupport::TestCase
71 assert_match(/#{task.requestor.name} wants to change its password/, email.subject) 71 assert_match(/#{task.requestor.name} wants to change its password/, email.subject)
72 end 72 end
73 73
  74 + should 'set email template when it exists' do
  75 + template = EmailTemplate.create!(:template_type => :user_change_password, :name => 'template1', :owner => Environment.default)
  76 + task = ChangePassword.create!(:requestor => person)
  77 + assert_equal template.id, task.email_template_id
  78 + end
  79 +
74 end 80 end
test/unit/email_template_test.rb
@@ -42,7 +42,7 @@ class EmailTemplateTest &lt; ActiveSupport::TestCase @@ -42,7 +42,7 @@ class EmailTemplateTest &lt; ActiveSupport::TestCase
42 42
43 should 'return available types when the owner is an environment' do 43 should 'return available types when the owner is an environment' do
44 template = EmailTemplate.new(:owner => Environment.default) 44 template = EmailTemplate.new(:owner => Environment.default)
45 - assert_equal [:user_activation], template.available_types.symbolize_keys.keys 45 + assert_equal [:user_activation, :user_change_password], template.available_types.symbolize_keys.keys
46 end 46 end
47 47
48 should 'return available types when the owner is a profile' do 48 should 'return available types when the owner is a profile' do