Description:
sends mails by mail gem
Commit status:
[Not Reviewed]
References:
Comments:
0 Commit comments 0 Inline Comments
Unresolved TODOs:
There are no unresolved TODOs
Add another comment

r331:4917c2675f37 - - 4 files changed: 44 inserted, 25 deleted

@@ -16,35 +16,35
16 16 # See https://github.com/sstephenson/execjs#readme for more supported runtimes
17 17 # gem 'therubyracer', :platforms => :ruby
18 18
19 19 gem 'uglifier', '>= 1.0.3'
20 20 end
21 21
22 22 gem 'prototype-rails'
23 23
24 24 # To use ActiveModel has_secure_password
25 25 # gem 'bcrypt-ruby', '~> 3.0.0'
26 26
27 27 # To use Jbuilder templates for JSON
28 28 # gem 'jbuilder'
29 29
30 30 # Use unicorn as the app server
31 31 # gem 'unicorn'
32 32
33 33 # Deploy with Capistrano
34 34 # gem 'capistrano'
35 35
36 36 # To use debugger
37 37 # gem 'debugger'
38 38
39 39 gem "haml"
40 - gem "tmail"
40 + gem "mail"
41 41 gem "rdiscount"
42 42 gem "test-unit"
43 43 gem 'will_paginate', '~> 3.0.0'
44 44 gem 'dynamic_form'
45 45 gem 'in_place_editing'
46 46 gem 'verification', :git => 'git://github.com/sikachu/verification.git'
47 47
48 48 group :test, :development do
49 49 gem "rspec-rails", "~> 2.0"
50 50 end
@@ -96,53 +96,52
96 96 rspec-core (~> 2.11.0)
97 97 rspec-expectations (~> 2.11.0)
98 98 rspec-mocks (~> 2.11.0)
99 99 rspec-core (2.11.1)
100 100 rspec-expectations (2.11.3)
101 101 diff-lcs (~> 1.1.3)
102 102 rspec-mocks (2.11.3)
103 103 rspec-rails (2.11.0)
104 104 actionpack (>= 3.0)
105 105 activesupport (>= 3.0)
106 106 railties (>= 3.0)
107 107 rspec (~> 2.11.0)
108 108 sass (3.2.1)
109 109 sass-rails (3.2.5)
110 110 railties (~> 3.2.0)
111 111 sass (>= 3.1.10)
112 112 tilt (~> 1.3)
113 113 sprockets (2.1.3)
114 114 hike (~> 1.2)
115 115 rack (~> 1.0)
116 116 tilt (~> 1.1, != 1.3.0)
117 117 test-unit (2.5.2)
118 118 thor (0.16.0)
119 119 tilt (1.3.3)
120 - tmail (1.2.7.1)
121 120 treetop (1.4.10)
122 121 polyglot
123 122 polyglot (>= 0.3.1)
124 123 tzinfo (0.3.33)
125 124 uglifier (1.3.0)
126 125 execjs (>= 0.3.0)
127 126 multi_json (~> 1.0, >= 1.0.2)
128 127 will_paginate (3.0.3)
129 128
130 129 PLATFORMS
131 130 ruby
132 131
133 132 DEPENDENCIES
134 133 coffee-rails (~> 3.2.1)
135 134 dynamic_form
136 135 haml
137 136 in_place_editing
137 + mail
138 138 mysql2
139 139 prototype-rails
140 140 rails (= 3.2.8)
141 141 rdiscount
142 142 rspec-rails (~> 2.0)
143 143 sass-rails (~> 3.2.3)
144 144 test-unit
145 - tmail
146 145 uglifier (>= 1.0.3)
147 146 verification!
148 147 will_paginate (~> 3.0.0)
@@ -1,28 +1,26
1 1 class UserAdminController < ApplicationController
2 2
3 - #include MailHelperMethods
4 -
5 3 before_filter :admin_authorization
6 4
7 5 # GETs should be safe (see http://www.w3.org/2001/tag/doc/whenToUseGet.html)
8 6 verify :method => :post, :only => [ :destroy,
9 7 :create, :create_from_list,
10 8 :update,
11 9 :manage_contest,
12 10 :bulk_mail
13 11 ],
14 12 :redirect_to => { :action => :list }
15 13
16 14 def index
17 15 list
18 16 render :action => 'list'
19 17 end
20 18
21 19 def list
22 20 @user_count = User.count
23 21 if params[:page] == 'all'
24 22 @users = User.all
25 23 @paginated = false
26 24 else
27 25 @users = User.paginate :page => params[:page]
28 26 @paginated = true
@@ -295,66 +293,73
295 293 redirect_to :action => 'admin' and return
296 294 elsif user.login == 'root'
297 295 flash[:notice] = 'You cannot revoke admisnistrator permission from root.'
298 296 redirect_to :action => 'admin' and return
299 297 end
300 298
301 299 admin_role = Role.find_by_name('admin')
302 300 user.roles.delete(admin_role)
303 301 flash[:notice] = 'User permission revoked'
304 302 redirect_to :action => 'admin'
305 303 end
306 304
307 305 # mass mailing
308 306
309 307 def mass_mailing
310 308 end
311 309
312 310 def bulk_mail
313 311 lines = params[:login_list]
314 312 if !lines or lines.blank?
315 313 flash[:notice] = 'You entered an empty list.'
316 314 redirect_to :action => 'mass_mailing' and return
317 315 end
318 316
319 - subject = params[:subject]
320 - if !subject or subject.blank?
317 + mail_subject = params[:subject]
318 + if !mail_subject or mail_subject.blank?
321 319 flash[:notice] = 'You entered an empty mail subject.'
322 320 redirect_to :action => 'mass_mailing' and return
323 321 end
324 322
325 - body = params[:email_body]
326 - if !body or body.blank?
323 + mail_body = params[:email_body]
324 + if !mail_body or mail_body.blank?
327 325 flash[:notice] = 'You entered an empty mail body.'
328 326 redirect_to :action => 'mass_mailing' and return
329 327 end
330 328
329 + admin_email = GraderConfiguration['system.admin_email']
330 +
331 331 note = []
332 332 users = []
333 333 lines.split("\n").each do |line|
334 334 user = User.find_by_login(line.chomp)
335 335 if user
336 - send_mail(user.email, subject, body)
336 + Mail.deliver do
337 + from admin_email
338 + to user.email
339 + subject mail_subject
340 + body mail_body
341 + end
337 342 note << user.login
338 343 end
339 344 end
340 345
341 346 flash[:notice] = 'User(s) ' + note.join(', ') +
342 347 ' were successfully modified. '
343 348 redirect_to :action => 'mass_mailing'
344 349 end
345 350
346 351 protected
347 352
348 353 def random_password(length=5)
349 354 chars = 'abcdefghijkmnopqrstuvwxyz23456789'
350 355 newpass = ""
351 356 length.times { newpass << chars[rand(chars.size-1)] }
352 357 return newpass
353 358 end
354 359
355 360 def import_from_file(f)
356 361 data_hash = YAML.load(f)
357 362 @import_log = ""
358 363
359 364 country_data = data_hash[:countries]
360 365 site_data = data_hash[:sites]
@@ -405,51 +410,58
405 410 u.site = sites[user[:site_id]]
406 411 u.activated = true
407 412 u.email = "empty-#{u.login}@none.com"
408 413 if not u.save
409 414 @import_log << "Errors\n"
410 415 u.errors.each { |attr,msg| @import_log << "#{attr} - #{msg}\n" }
411 416 end
412 417 end
413 418
414 419 end
415 420
416 421 def logout_users(users)
417 422 users.each do |user|
418 423 contest_stat = user.contest_stat(true)
419 424 if contest_stat and !contest_stat.forced_logout
420 425 contest_stat.forced_logout = true
421 426 contest_stat.save
422 427 end
423 428 end
424 429 end
425 430
426 431 def send_contest_update_notification_email(user, contest)
427 432 contest_title_name = GraderConfiguration['contest.name']
428 433 contest_name = contest.name
429 - subject = t('contest.notification.email_subject', {
434 + mail_subject = t('contest.notification.email_subject', {
430 435 :contest_title_name => contest_title_name,
431 436 :contest_name => contest_name })
432 - body = t('contest.notification.email_body', {
437 + mail_body = t('contest.notification.email_body', {
433 438 :full_name => user.full_name,
434 439 :contest_title_name => contest_title_name,
435 440 :contest_name => contest.name,
436 441 })
437 442
438 - logger.info body
439 - send_mail(user.email, subject, body)
443 + admin_email = GraderConfiguration['system.admin_email']
444 +
445 + logger.info mail_body
446 + Mail.deliver do
447 + from admin_email
448 + to user.email
449 + subject mail_subject
450 + body mail_body
451 + end
440 452 end
441 453
442 454 def find_contest_and_user_from_contest_id(id)
443 455 if id!='none'
444 456 @contest = Contest.find(id)
445 457 else
446 458 @contest = nil
447 459 end
448 460 if @contest
449 461 @users = @contest.users
450 462 else
451 463 @users = User.find_users_with_no_contest
452 464 end
453 465 return [@contest, @users]
454 466 end
455 467 end
@@ -1,31 +1,28
1 - require 'tmail'
2 1 require 'net/smtp'
3 2
4 3 class UsersController < ApplicationController
5 4
6 - #include MailHelperMethods
7 -
8 5 before_filter :authenticate, :except => [:new,
9 6 :register,
10 7 :confirm,
11 8 :forget,
12 9 :retrieve_password]
13 10
14 11 before_filter :verify_online_registration, :only => [:new,
15 12 :register,
16 13 :forget,
17 14 :retrieve_password]
18 15
19 16 verify :method => :post, :only => [:chg_passwd],
20 17 :redirect_to => { :action => :index }
21 18
22 19 #in_place_edit_for :user, :alias_for_editing
23 20 #in_place_edit_for :user, :email_for_editing
24 21
25 22 def index
26 23 if !GraderConfiguration['system.user_setting_enabled']
27 24 redirect_to :controller => 'main', :action => 'list'
28 25 else
29 26 @user = User.find(session[:user_id])
30 27 end
31 28 end
@@ -103,56 +100,67
103 100 send_new_password_email(user)
104 101 flash[:notice] = 'New password has been mailed to you.'
105 102 end
106 103 else
107 104 flash[:notice] = I18n.t 'registration.password_retrieval.no_email'
108 105 end
109 106 redirect_to :action => 'forget'
110 107 end
111 108
112 109 protected
113 110
114 111 def verify_online_registration
115 112 if !GraderConfiguration['system.online_registration']
116 113 redirect_to :controller => 'main', :action => 'login'
117 114 end
118 115 end
119 116
120 117 def send_confirmation_email(user)
121 118 contest_name = GraderConfiguration['contest.name']
122 119 admin_email = GraderConfiguration['system.admin_email']
123 120 activation_url = url_for(:action => 'confirm',
124 121 :login => user.login,
125 122 :activation => user.activation_key)
126 123 home_url = url_for(:controller => 'main', :action => 'index')
127 - subject = "[#{contest_name}] Confirmation"
128 - body = t('registration.email_body', {
124 + mail_subject = "[#{contest_name}] Confirmation"
125 + mail_body = t('registration.email_body', {
129 126 :full_name => user.full_name,
130 127 :contest_name => contest_name,
131 128 :login => user.login,
132 129 :password => user.password,
133 130 :activation_url => activation_url,
134 131 :admin_email => admin_email
135 132 })
136 133
137 - logger.info body
134 + logger.info mail_body
138 135
139 - send_mail(user.email, subject, body)
136 + Mail.deliver do
137 + from admin_email
138 + to user.email
139 + subject mail_subject
140 + body mail_body
141 + end
140 142 end
141 143
142 144 def send_new_password_email(user)
143 145 contest_name = GraderConfiguration['contest.name']
144 146 admin_email = GraderConfiguration['system.admin_email']
145 - subject = "[#{contest_name}] Password recovery"
146 - body = t('registration.password_retrieval.email_body', {
147 + mail_subject = "[#{contest_name}] Password recovery"
148 + mail_body = t('registration.password_retrieval.email_body', {
147 149 :full_name => user.full_name,
148 150 :contest_name => contest_name,
149 151 :login => user.login,
150 152 :password => user.password,
151 153 :admin_email => admin_email
152 154 })
153 155
154 - logger.info body
155 - send_mail(user.email, subject, body)
156 + logger.info mail_body
157 +
158 + Mail.deliver do
159 + from admin_email
160 + to user.email
161 + subject mail_subject
162 + body mail_body
163 + end
156 164 end
157 165
158 166 end
You need to be logged in to leave comments. Login now