##// END OF EJS Templates
Don't add the inclusion error when tracker is not set, the blank error is enough....
Don't add the inclusion error when tracker is not set, the blank error is enough. git-svn-id: http://svn.redmine.org/redmine/trunk@15492 e93f8b46-1217-0410-a6f0-8f06a7374b81

File last commit:

r14953:64afa24a7f72
r15110:90d14b71b365
Show More
issue_status.rb
113 lines | 4.3 KiB | text/x-ruby | RubyLexer
Toshi MARUYAMA
remove trailing white-spaces from app/models/issue_status.rb....
r6384 # Redmine - project management software
Jean-Philippe Lang
Updates copyright for 2016....
r14856 # Copyright (C) 2006-2016 Jean-Philippe Lang
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 #
# 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.
Toshi MARUYAMA
remove trailing white-spaces from app/models/issue_status.rb....
r6384 #
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 # 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.
Toshi MARUYAMA
remove trailing white-spaces from app/models/issue_status.rb....
r6384 #
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 # 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 IssueStatus < ActiveRecord::Base
Toshi MARUYAMA
remove trailing white-spaces from app/models/issue_status.rb....
r6384 before_destroy :check_integrity
Jean-Philippe Lang
Workflow enhancement: editable and required fields configurable by role, tracker and status (#703, #3521)....
r9794 has_many :workflows, :class_name => 'WorkflowTransition', :foreign_key => "old_status_id"
Jean-Philippe Lang
Query IssueStatus model to prevent workflows instanciation....
r13134 has_many :workflow_transitions_as_new_status, :class_name => 'WorkflowTransition', :foreign_key => "new_status_id"
Jean-Philippe Lang
Replaces acts_as_list with an implementation that handles #position= (#12909)....
r14953 acts_as_positioned
Toshi MARUYAMA
remove trailing white-spaces from app/models/issue_status.rb....
r6384
Jean-Philippe Lang
Fixed that setting a status as closed should update issue closed_on attribute (#18280)....
r13178 after_update :handle_is_closed_change
Jean-Philippe Lang
Workflow enhancement: editable and required fields configurable by role, tracker and status (#703, #3521)....
r9794 before_destroy :delete_workflow_rules
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330
validates_presence_of :name
validates_uniqueness_of :name
Jean-Philippe Lang
Added several validates_length_of...
r590 validates_length_of :name, :maximum => 30
Jean-Philippe Lang
Allow blank value for IssueStatus#default_done_ratio....
r3043 validates_inclusion_of :default_done_ratio, :in => 0..100, :allow_nil => true
Jean-Philippe Lang
Merged rails-4.1 branch (#14534)....
r13100 attr_protected :id
Toshi MARUYAMA
remove trailing white-spaces from app/models/issue_status.rb....
r6384
Jean-Philippe Lang
Order scopes cleanup....
r13144 scope :sorted, lambda { order(:position) }
Jean-Philippe Lang
Code cleanup....
r10660 scope :named, lambda {|arg| where("LOWER(#{table_name}.name) = LOWER(?)", arg.to_s.strip)}
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330
Eric Davis
Adds a Setting to control how an Issue's done_ratio is calculated:...
r3037 # Update all the +Issues+ setting their done_ratio to the value of their +IssueStatus+
def self.update_issue_done_ratios
if Issue.use_status_for_done_ratio?
Toshi MARUYAMA
remove unneeded Relation#all from IssueStatus model...
r12450 IssueStatus.where("default_done_ratio >= 0").each do |status|
Toshi MARUYAMA
Rails4: replace deprecated Relation#update_all at IssueStatus model...
r12236 Issue.where({:status_id => status.id}).update_all({:done_ratio => status.default_done_ratio})
Eric Davis
Adds a Setting to control how an Issue's done_ratio is calculated:...
r3037 end
end
return Issue.use_status_for_done_ratio?
end
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330
# Returns an array of all statuses the given role can switch to
Jean-Philippe Lang
Allow additional workflow transitions for issue author and assignee (#2732)....
r4775 def new_statuses_allowed_to(roles, tracker, author=false, assignee=false)
Jean-Philippe Lang
Makes new issue initial status settable in workflow (#5816)....
r14076 self.class.new_statuses_allowed(self, roles, tracker, author, assignee)
Jean-Philippe Lang
Various code cleaning, mainly on User, Permission and IssueStatus models....
r411 end
Jean-Philippe Lang
Makes new issue initial status settable in workflow (#5816)....
r14076 alias :find_new_statuses_allowed_to :new_statuses_allowed_to
Toshi MARUYAMA
remove trailing white-spaces from app/models/issue_status.rb....
r6384
Jean-Philippe Lang
Makes new issue initial status settable in workflow (#5816)....
r14076 def self.new_statuses_allowed(status, roles, tracker, author=false, assignee=false)
Jean-Philippe Lang
Fixed: additional workflow transitions not available when set to both author and assignee (#8836)....
r6180 if roles.present? && tracker
Jean-Philippe Lang
Makes new issue initial status settable in workflow (#5816)....
r14076 status_id = status.try(:id) || 0
Jean-Philippe Lang
Query IssueStatus model to prevent workflows instanciation....
r13134 scope = IssueStatus.
joins(:workflow_transitions_as_new_status).
Jean-Philippe Lang
Makes new issue initial status settable in workflow (#5816)....
r14076 where(:workflows => {:old_status_id => status_id, :role_id => roles.map(&:id), :tracker_id => tracker.id})
Jean-Philippe Lang
Query IssueStatus model to prevent workflows instanciation....
r13134
unless author && assignee
if author || assignee
scope = scope.where("author = ? OR assignee = ?", author, assignee)
else
scope = scope.where("author = ? AND assignee = ?", false, false)
end
end
scope.uniq.to_a.sort
Jean-Philippe Lang
Allows multiple roles on the same project (#706). Prerequisite for user groups feature....
r2627 else
[]
end
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 end
Jean-Philippe Lang
Added the ability to customize columns of a saved query....
r771
Jean-Philippe Lang
Merged IssuesController change_status and add_note actions....
r1030 def <=>(status)
position <=> status.position
end
Toshi MARUYAMA
remove trailing white-spaces from app/models/issue_status.rb....
r6384
Jean-Philippe Lang
Added the ability to customize columns of a saved query....
r771 def to_s; name end
Jean-Philippe Lang
Code cleanup....
r9798 private
Jean-Philippe Lang
Fixed that setting a status as closed should update issue closed_on attribute (#18280)....
r13178 # Updates issues closed_on attribute when an existing status is set as closed.
def handle_is_closed_change
if is_closed_changed? && is_closed == true
# First we update issues that have a journal for when the current status was set,
# a subselect is used to update all issues with a single query
subselect = "SELECT MAX(j.created_on) FROM #{Journal.table_name} j" +
" JOIN #{JournalDetail.table_name} d ON d.journal_id = j.id" +
" WHERE j.journalized_type = 'Issue' AND j.journalized_id = #{Issue.table_name}.id" +
" AND d.property = 'attr' AND d.prop_key = 'status_id' AND d.value = :status_id"
Toshi MARUYAMA
Merged r13640 from 2.6-stable to trunk (#18280)...
r13259 Issue.where(:status_id => id, :closed_on => nil).
update_all(["closed_on = (#{subselect})", {:status_id => id.to_s}])
Jean-Philippe Lang
Fixed that setting a status as closed should update issue closed_on attribute (#18280)....
r13178
# Then we update issues that don't have a journal which means the
# current status was set on creation
Issue.where(:status_id => id, :closed_on => nil).update_all("closed_on = created_on")
end
end
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 def check_integrity
Jean-Philippe Lang
Default status per tracker (#5991)....
r13153 if Issue.where(:status_id => id).any?
raise "This status is used by some issues"
elsif Tracker.where(:default_status_id => id).any?
raise "This status is used as the default status by some trackers"
end
Jean-Philippe Lang
Initial commit...
r2 end
Toshi MARUYAMA
remove trailing white-spaces from app/models/issue_status.rb....
r6384
Jean-Philippe Lang
Fixed: Deleting statuses doesn't delete all workflow entries (#5811)....
r3767 # Deletes associated workflows
Jean-Philippe Lang
Workflow enhancement: editable and required fields configurable by role, tracker and status (#703, #3521)....
r9794 def delete_workflow_rules
WorkflowRule.delete_all(["old_status_id = :id OR new_status_id = :id", {:id => id}])
Jean-Philippe Lang
Fixed: Deleting statuses doesn't delete all workflow entries (#5811)....
r3767 end
Jean-Philippe Lang
Initial commit...
r2 end