Class: IssueStatus
- Inherits:
-
ApplicationRecord
- Object
- ActiveRecord::Base
- ApplicationRecord
- IssueStatus
- Includes:
- Redmine::SafeAttributes
- 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
- .new_statuses_allowed(status, roles, tracker, author = false, assignee = false) ⇒ Object
-
.update_issue_done_ratios ⇒ Object
Update all the
Issues
setting their done_ratio to the value of theirIssueStatus
.
Instance Method Summary collapse
- #<=>(status) ⇒ Object
-
#new_statuses_allowed_to(roles, tracker, author = false, assignee = false) ⇒ Object
(also: #find_new_statuses_allowed_to)
Returns an array of all statuses the given role can switch to.
- #to_s ⇒ Object
Methods included from Redmine::SafeAttributes
#delete_unsafe_attributes, included, #safe_attribute?, #safe_attribute_names, #safe_attributes=
Methods inherited from ApplicationRecord
Class Method Details
.new_statuses_allowed(status, roles, tracker, author = false, assignee = false) ⇒ Object
64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 |
# File 'app/models/issue_status.rb', line 64 def self.new_statuses_allowed(status, roles, tracker, =false, assignee=false) if roles.present? && tracker status_id = status.try(:id) || 0 scope = IssueStatus. joins(:workflow_transitions_as_new_status). where(:workflows => {:old_status_id => status_id, :role_id => roles.map(&:id), :tracker_id => tracker.id}) unless && assignee if || assignee scope = scope.where("author = ? OR assignee = ?", , assignee) else scope = scope.where("author = ? AND assignee = ?", false, false) end end scope.distinct.to_a.sort else [] end end |
.update_issue_done_ratios ⇒ Object
Update all the Issues
setting their done_ratio to the value of their IssueStatus
48 49 50 51 52 53 54 55 56 |
# File 'app/models/issue_status.rb', line 48 def self.update_issue_done_ratios if Issue.use_status_for_done_ratio? IssueStatus.where("default_done_ratio >= 0").each do |status| Issue.where({:status_id => status.id}).update_all({:done_ratio => status.default_done_ratio}) end end return Issue.use_status_for_done_ratio? end |
Instance Method Details
#<=>(status) ⇒ Object
86 87 88 89 90 |
# File 'app/models/issue_status.rb', line 86 def <=>(status) return nil unless status.is_a?(IssueStatus) position <=> status.position end |
#new_statuses_allowed_to(roles, tracker, author = false, assignee = false) ⇒ Object Also known as: find_new_statuses_allowed_to
Returns an array of all statuses the given role can switch to
59 60 61 |
# File 'app/models/issue_status.rb', line 59 def new_statuses_allowed_to(roles, tracker, =false, assignee=false) self.class.new_statuses_allowed(self, roles, tracker, , assignee) end |
#to_s ⇒ Object
92 |
# File 'app/models/issue_status.rb', line 92 def to_s; name end |