Mercurial > hg > soundsoftware-site
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| |