##// END OF EJS Templates
code layout cleanup app/models/mail_handler.rb...
Toshi MARUYAMA -
r8625:5dd08133ef39
parent child
Show More
@@ -29,7 +29,9 class MailHandler < ActionMailer::Base
29
29
30 @@handler_options[:issue] ||= {}
30 @@handler_options[:issue] ||= {}
31
31
32 @@handler_options[:allow_override] = @@handler_options[:allow_override].split(',').collect(&:strip) if @@handler_options[:allow_override].is_a?(String)
32 if @@handler_options[:allow_override].is_a?(String)
33 @@handler_options[:allow_override] = @@handler_options[:allow_override].split(',').collect(&:strip)
34 end
33 @@handler_options[:allow_override] ||= []
35 @@handler_options[:allow_override] ||= []
34 # Project needs to be overridable if not specified
36 # Project needs to be overridable if not specified
35 @@handler_options[:allow_override] << 'project' unless @@handler_options[:issue].has_key?(:project)
37 @@handler_options[:allow_override] << 'project' unless @@handler_options[:issue].has_key?(:project)
@@ -47,12 +49,16 class MailHandler < ActionMailer::Base
47 sender_email = email.from.to_a.first.to_s.strip
49 sender_email = email.from.to_a.first.to_s.strip
48 # Ignore emails received from the application emission address to avoid hell cycles
50 # Ignore emails received from the application emission address to avoid hell cycles
49 if sender_email.downcase == Setting.mail_from.to_s.strip.downcase
51 if sender_email.downcase == Setting.mail_from.to_s.strip.downcase
50 logger.info "MailHandler: ignoring email from Redmine emission address [#{sender_email}]" if logger && logger.info
52 if logger && logger.info
53 logger.info "MailHandler: ignoring email from Redmine emission address [#{sender_email}]"
54 end
51 return false
55 return false
52 end
56 end
53 @user = User.find_by_mail(sender_email) if sender_email.present?
57 @user = User.find_by_mail(sender_email) if sender_email.present?
54 if @user && !@user.active?
58 if @user && !@user.active?
55 logger.info "MailHandler: ignoring email from non-active user [#{@user.login}]" if logger && logger.info
59 if logger && logger.info
60 logger.info "MailHandler: ignoring email from non-active user [#{@user.login}]"
61 end
56 return false
62 return false
57 end
63 end
58 if @user.nil?
64 if @user.nil?
@@ -63,15 +69,21 class MailHandler < ActionMailer::Base
63 when 'create'
69 when 'create'
64 @user = create_user_from_email
70 @user = create_user_from_email
65 if @user
71 if @user
66 logger.info "MailHandler: [#{@user.login}] account created" if logger && logger.info
72 if logger && logger.info
73 logger.info "MailHandler: [#{@user.login}] account created"
74 end
67 Mailer.deliver_account_information(@user, @user.password)
75 Mailer.deliver_account_information(@user, @user.password)
68 else
76 else
69 logger.error "MailHandler: could not create account for [#{sender_email}]" if logger && logger.error
77 if logger && logger.error
78 logger.error "MailHandler: could not create account for [#{sender_email}]"
79 end
70 return false
80 return false
71 end
81 end
72 else
82 else
73 # Default behaviour, emails from unknown users are ignored
83 # Default behaviour, emails from unknown users are ignored
74 logger.info "MailHandler: ignoring email from unknown user [#{sender_email}]" if logger && logger.info
84 if logger && logger.info
85 logger.info "MailHandler: ignoring email from unknown user [#{sender_email}]"
86 end
75 return false
87 return false
76 end
88 end
77 end
89 end
@@ -149,7 +161,10 class MailHandler < ActionMailer::Base
149 return unless issue
161 return unless issue
150 # check permission
162 # check permission
151 unless @@handler_options[:no_permission_check]
163 unless @@handler_options[:no_permission_check]
152 raise UnauthorizedAction unless user.allowed_to?(:add_issue_notes, issue.project) || user.allowed_to?(:edit_issues, issue.project)
164 unless user.allowed_to?(:add_issue_notes, issue.project) ||
165 user.allowed_to?(:edit_issues, issue.project)
166 raise UnauthorizedAction
167 end
153 end
168 end
154
169
155 # ignore CLI-supplied defaults for new issues
170 # ignore CLI-supplied defaults for new issues
@@ -161,7 +176,9 class MailHandler < ActionMailer::Base
161 journal.notes = cleaned_up_text_body
176 journal.notes = cleaned_up_text_body
162 add_attachments(issue)
177 add_attachments(issue)
163 issue.save!
178 issue.save!
164 logger.info "MailHandler: issue ##{issue.id} updated by #{user}" if logger && logger.info
179 if logger && logger.info
180 logger.info "MailHandler: issue ##{issue.id} updated by #{user}"
181 end
165 journal
182 journal
166 end
183 end
167
184
@@ -192,7 +209,9 class MailHandler < ActionMailer::Base
192 add_attachments(reply)
209 add_attachments(reply)
193 reply
210 reply
194 else
211 else
195 logger.info "MailHandler: ignoring reply from [#{sender_email}] to a locked topic" if logger && logger.info
212 if logger && logger.info
213 logger.info "MailHandler: ignoring reply from [#{sender_email}] to a locked topic"
214 end
196 end
215 end
197 end
216 end
198 end
217 end
@@ -241,8 +260,12 class MailHandler < ActionMailer::Base
241 def extract_keyword!(text, attr, format=nil)
260 def extract_keyword!(text, attr, format=nil)
242 keys = [attr.to_s.humanize]
261 keys = [attr.to_s.humanize]
243 if attr.is_a?(Symbol)
262 if attr.is_a?(Symbol)
244 keys << l("field_#{attr}", :default => '', :locale => user.language) if user && user.language.present?
263 if user && user.language.present?
245 keys << l("field_#{attr}", :default => '', :locale => Setting.default_language) if Setting.default_language.present?
264 keys << l("field_#{attr}", :default => '', :locale => user.language)
265 end
266 if Setting.default_language.present?
267 keys << l("field_#{attr}", :default => '', :locale => Setting.default_language)
268 end
246 end
269 end
247 keys.reject! {|k| k.blank?}
270 keys.reject! {|k| k.blank?}
248 keys.collect! {|k| Regexp.escape(k)}
271 keys.collect! {|k| Regexp.escape(k)}
@@ -388,10 +411,16 class MailHandler < ActionMailer::Base
388 keyword = keyword.to_s.downcase
411 keyword = keyword.to_s.downcase
389 assignable = issue.assignable_users
412 assignable = issue.assignable_users
390 assignee = nil
413 assignee = nil
391 assignee ||= assignable.detect {|a| a.mail.to_s.downcase == keyword || a.login.to_s.downcase == keyword}
414 assignee ||= assignable.detect {|a|
415 a.mail.to_s.downcase == keyword ||
416 a.login.to_s.downcase == keyword
417 }
392 if assignee.nil? && keyword.match(/ /)
418 if assignee.nil? && keyword.match(/ /)
393 firstname, lastname = *(keyword.split) # "First Last Throwaway"
419 firstname, lastname = *(keyword.split) # "First Last Throwaway"
394 assignee ||= assignable.detect {|a| a.is_a?(User) && a.firstname.to_s.downcase == firstname && a.lastname.to_s.downcase == lastname}
420 assignee ||= assignable.detect {|a|
421 a.is_a?(User) && a.firstname.to_s.downcase == firstname &&
422 a.lastname.to_s.downcase == lastname
423 }
395 end
424 end
396 if assignee.nil?
425 if assignee.nil?
397 assignee ||= assignable.detect {|a| a.is_a?(Group) && a.name.downcase == keyword}
426 assignee ||= assignable.detect {|a| a.is_a?(Group) && a.name.downcase == keyword}
General Comments 0
You need to be logged in to leave comments. Login now