Fixed: Issues associated with a locked version are not copied when copying a project (#11207).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10334 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
+11
-1
@@ -763,12 +763,17 @@ class Project < ActiveRecord::Base
|
||||
end
|
||||
|
||||
# Copies issues from +project+
|
||||
# Note: issues assigned to a closed version won't be copied due to validation rules
|
||||
def copy_issues(project)
|
||||
# Stores the source issue id as a key and the copied issues as the
|
||||
# value. Used to map the two togeather for issue relations.
|
||||
issues_map = {}
|
||||
|
||||
# Store status and reopen locked/closed versions
|
||||
version_statuses = versions.reject(&:open?).map {|version| [version, version.status]}
|
||||
version_statuses.each do |version, status|
|
||||
version.update_attribute :status, 'open'
|
||||
end
|
||||
|
||||
# Get issues sorted by root_id, lft so that parent issues
|
||||
# get copied before their children
|
||||
project.issues.find(:all, :order => 'root_id, lft').each do |issue|
|
||||
@@ -798,6 +803,11 @@ class Project < ActiveRecord::Base
|
||||
end
|
||||
end
|
||||
|
||||
# Restore locked/closed version statuses
|
||||
version_statuses.each do |version, status|
|
||||
version.update_attribute :status, status
|
||||
end
|
||||
|
||||
# Relations after in case issues related each other
|
||||
project.issues.each do |issue|
|
||||
new_issue = issues_map[issue.id]
|
||||
|
||||
Reference in New Issue
Block a user