Class: IssueStatus
- Inherits:
-
ActiveRecord::Base
- Object
- ActiveRecord::Base
- IssueStatus
- Defined in:
- app/models/issue_status.rb
Overview
redMine - project management software Copyright © 2006 Jean-Philippe Lang
This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
Class Method Summary collapse
-
.default ⇒ Object
Returns the default status for new issues.
-
.update_issue_done_ratios ⇒ Object
Update all the
Issues
setting their done_ratio to the value of theirIssueStatus
.
Instance Method Summary collapse
- #<=>(status) ⇒ Object
- #after_save ⇒ Object
-
#find_new_statuses_allowed_to(roles, tracker, author = false, assignee = false) ⇒ Object
Same thing as above but uses a database query More efficient than the previous method if called just once.
-
#new_statuses_allowed_to(roles, tracker, author = false, assignee = false) ⇒ Object
Returns an array of all statuses the given role can switch to Uses association cache when called more than one time.
- #to_s ⇒ Object
Class Method Details
.default ⇒ Object
Returns the default status for new issues
35 36 37 |
# File 'app/models/issue_status.rb', line 35 def self.default find(:first, :conditions =>["is_default=?", true]) end |
.update_issue_done_ratios ⇒ Object
Update all the Issues
setting their done_ratio to the value of their IssueStatus
40 41 42 43 44 45 46 47 48 49 |
# File 'app/models/issue_status.rb', line 40 def self.update_issue_done_ratios if Issue.use_status_for_done_ratio? IssueStatus.find(:all, :conditions => ["default_done_ratio >= 0"]).each do |status| Issue.update_all(["done_ratio = ?", status.default_done_ratio], ["status_id = ?", status.id]) end end return Issue.use_status_for_done_ratio? end |
Instance Method Details
#<=>(status) ⇒ Object
84 85 86 |
# File 'app/models/issue_status.rb', line 84 def <=>(status) position <=> status.position end |
#after_save ⇒ Object
30 31 32 |
# File 'app/models/issue_status.rb', line 30 def after_save IssueStatus.update_all("is_default=#{connection.quoted_false}", ['id <> ?', id]) if self.is_default? end |
#find_new_statuses_allowed_to(roles, tracker, author = false, assignee = false) ⇒ Object
Same thing as above but uses a database query More efficient than the previous method if called just once
70 71 72 73 74 75 76 77 78 79 80 81 82 |
# File 'app/models/issue_status.rb', line 70 def find_new_statuses_allowed_to(roles, tracker, =false, assignee=false) if roles && tracker conditions = {:role_id => roles.collect(&:id), :tracker_id => tracker.id} conditions[:author] = false unless conditions[:assignee] = false unless assignee workflows.find(:all, :include => :new_status, :conditions => conditions).collect{|w| w.new_status}.compact.sort else [] end end |
#new_statuses_allowed_to(roles, tracker, author = false, assignee = false) ⇒ Object
Returns an array of all statuses the given role can switch to Uses association cache when called more than one time
53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
# File 'app/models/issue_status.rb', line 53 def new_statuses_allowed_to(roles, tracker, =false, assignee=false) if roles && tracker role_ids = roles.collect(&:id) transitions = workflows.select do |w| role_ids.include?(w.role_id) && w.tracker_id == tracker.id && ( || !w.) && (assignee || !w.assignee) end transitions.collect{|w| w.new_status}.compact.sort else [] end end |
#to_s ⇒ Object
88 |
# File 'app/models/issue_status.rb', line 88 def to_s; name end |