comparison app/models/.svn/text-base/mail_handler.rb.svn-base @ 117:af80e5618e9b redmine-1.1

* Update to Redmine 1.1-stable branch (Redmine SVN rev 4707)
author Chris Cannam
date Thu, 13 Jan 2011 12:53:21 +0000
parents 94944d00e43c
children cd2282d2aa55
comparison
equal deleted inserted replaced
39:150ceac17a8d 117:af80e5618e9b
146 # check permission 146 # check permission
147 unless @@handler_options[:no_permission_check] 147 unless @@handler_options[:no_permission_check]
148 raise UnauthorizedAction unless user.allowed_to?(:add_issue_notes, issue.project) || user.allowed_to?(:edit_issues, issue.project) 148 raise UnauthorizedAction unless user.allowed_to?(:add_issue_notes, issue.project) || user.allowed_to?(:edit_issues, issue.project)
149 end 149 end
150 150
151 # ignore CLI-supplied defaults for new issues
152 @@handler_options[:issue].clear
153
151 journal = issue.init_journal(user, cleaned_up_text_body) 154 journal = issue.init_journal(user, cleaned_up_text_body)
152 issue.safe_attributes = issue_attributes_from_keywords(issue) 155 issue.safe_attributes = issue_attributes_from_keywords(issue)
153 issue.safe_attributes = {'custom_field_values' => custom_field_values_from_keywords(issue)} 156 issue.safe_attributes = {'custom_field_values' => custom_field_values_from_keywords(issue)}
154 add_attachments(issue) 157 add_attachments(issue)
155 issue.save! 158 issue.save!
254 # Returns a Hash of issue attributes extracted from keywords in the email body 257 # Returns a Hash of issue attributes extracted from keywords in the email body
255 def issue_attributes_from_keywords(issue) 258 def issue_attributes_from_keywords(issue)
256 assigned_to = (k = get_keyword(:assigned_to, :override => true)) && find_user_from_keyword(k) 259 assigned_to = (k = get_keyword(:assigned_to, :override => true)) && find_user_from_keyword(k)
257 assigned_to = nil if assigned_to && !issue.assignable_users.include?(assigned_to) 260 assigned_to = nil if assigned_to && !issue.assignable_users.include?(assigned_to)
258 261
259 { 262 attrs = {
260 'tracker_id' => ((k = get_keyword(:tracker)) && issue.project.trackers.find_by_name(k).try(:id)) || issue.project.trackers.find(:first).try(:id), 263 'tracker_id' => (k = get_keyword(:tracker)) && issue.project.trackers.find_by_name(k).try(:id),
261 'status_id' => (k = get_keyword(:status)) && IssueStatus.find_by_name(k).try(:id), 264 'status_id' => (k = get_keyword(:status)) && IssueStatus.find_by_name(k).try(:id),
262 'priority_id' => (k = get_keyword(:priority)) && IssuePriority.find_by_name(k).try(:id), 265 'priority_id' => (k = get_keyword(:priority)) && IssuePriority.find_by_name(k).try(:id),
263 'category_id' => (k = get_keyword(:category)) && issue.project.issue_categories.find_by_name(k).try(:id), 266 'category_id' => (k = get_keyword(:category)) && issue.project.issue_categories.find_by_name(k).try(:id),
264 'assigned_to_id' => assigned_to.try(:id), 267 'assigned_to_id' => assigned_to.try(:id),
265 'fixed_version_id' => (k = get_keyword(:fixed_version, :override => true)) && issue.project.shared_versions.find_by_name(k).try(:id), 268 'fixed_version_id' => (k = get_keyword(:fixed_version, :override => true)) && issue.project.shared_versions.find_by_name(k).try(:id),
266 'start_date' => get_keyword(:start_date, :override => true, :format => '\d{4}-\d{2}-\d{2}'), 269 'start_date' => get_keyword(:start_date, :override => true, :format => '\d{4}-\d{2}-\d{2}'),
267 'due_date' => get_keyword(:due_date, :override => true, :format => '\d{4}-\d{2}-\d{2}'), 270 'due_date' => get_keyword(:due_date, :override => true, :format => '\d{4}-\d{2}-\d{2}'),
268 'estimated_hours' => get_keyword(:estimated_hours, :override => true), 271 'estimated_hours' => get_keyword(:estimated_hours, :override => true),
269 'done_ratio' => get_keyword(:done_ratio, :override => true, :format => '(\d|10)?0') 272 'done_ratio' => get_keyword(:done_ratio, :override => true, :format => '(\d|10)?0')
270 }.delete_if {|k, v| v.blank? } 273 }.delete_if {|k, v| v.blank? }
274
275 if issue.new_record? && attrs['tracker_id'].nil?
276 attrs['tracker_id'] = issue.project.trackers.find(:first).try(:id)
277 end
278
279 attrs
271 end 280 end
272 281
273 # Returns a Hash of issue custom field values extracted from keywords in the email body 282 # Returns a Hash of issue custom field values extracted from keywords in the email body
274 def custom_field_values_from_keywords(customized) 283 def custom_field_values_from_keywords(customized)
275 customized.custom_field_values.inject({}) do |h, v| 284 customized.custom_field_values.inject({}) do |h, v|