##// END OF EJS Templates
Pass the commit keyword used to update the issue to the plugin hook....
Pass the commit keyword used to update the issue to the plugin hook. git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12198 e93f8b46-1217-0410-a6f0-8f06a7374b81

File last commit:

r11933:5e2eedf2c5fd
r11968:0444ecca3c87
Show More
migrate_from_mantis.rake
522 lines | 18.4 KiB | text/x-ruby | RubyLexer
/ lib / tasks / migrate_from_mantis.rake
Toshi MARUYAMA
remove trailing white-spaces from lib/tasks/migrate_from_mantis.rake...
r9401 # Redmine - project management software
Jean-Philippe Lang
Copyright for 2013 (#12788)....
r10939 # Copyright (C) 2006-2013 Jean-Philippe Lang
Toshi MARUYAMA
set svn:eol-style native lib/tasks/migrate_from_mantis.rake...
r8949 #
# 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 lib/tasks/migrate_from_mantis.rake...
r9401 #
Toshi MARUYAMA
set svn:eol-style native lib/tasks/migrate_from_mantis.rake...
r8949 # 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 lib/tasks/migrate_from_mantis.rake...
r9401 #
Toshi MARUYAMA
set svn:eol-style native lib/tasks/migrate_from_mantis.rake...
r8949 # 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.
desc 'Mantis migration script'
require 'active_record'
Jean-Philippe Lang
Don't use iconv with ruby1.9 (#12787)....
r11210 require 'iconv' if RUBY_VERSION < '1.9'
Toshi MARUYAMA
set svn:eol-style native lib/tasks/migrate_from_mantis.rake...
r8949 require 'pp'
namespace :redmine do
task :migrate_from_mantis => :environment do
Toshi MARUYAMA
remove trailing white-spaces from lib/tasks/migrate_from_mantis.rake...
r9401
Toshi MARUYAMA
set svn:eol-style native lib/tasks/migrate_from_mantis.rake...
r8949 module MantisMigrate
Toshi MARUYAMA
remove trailing white-spaces from lib/tasks/migrate_from_mantis.rake...
r9401
Toshi MARUYAMA
set svn:eol-style native lib/tasks/migrate_from_mantis.rake...
r8949 DEFAULT_STATUS = IssueStatus.default
assigned_status = IssueStatus.find_by_position(2)
resolved_status = IssueStatus.find_by_position(3)
feedback_status = IssueStatus.find_by_position(4)
Jean-Philippe Lang
Replaces find(:first/:all) calls....
r10704 closed_status = IssueStatus.where(:is_closed => true).first
Toshi MARUYAMA
set svn:eol-style native lib/tasks/migrate_from_mantis.rake...
r8949 STATUS_MAPPING = {10 => DEFAULT_STATUS, # new
20 => feedback_status, # feedback
30 => DEFAULT_STATUS, # acknowledged
40 => DEFAULT_STATUS, # confirmed
50 => assigned_status, # assigned
80 => resolved_status, # resolved
90 => closed_status # closed
}
Toshi MARUYAMA
remove trailing white-spaces from lib/tasks/migrate_from_mantis.rake...
r9401
Toshi MARUYAMA
set svn:eol-style native lib/tasks/migrate_from_mantis.rake...
r8949 priorities = IssuePriority.all
DEFAULT_PRIORITY = priorities[2]
PRIORITY_MAPPING = {10 => priorities[1], # none
20 => priorities[1], # low
30 => priorities[2], # normal
40 => priorities[3], # high
50 => priorities[4], # urgent
60 => priorities[5] # immediate
}
Toshi MARUYAMA
remove trailing white-spaces from lib/tasks/migrate_from_mantis.rake...
r9401
Toshi MARUYAMA
set svn:eol-style native lib/tasks/migrate_from_mantis.rake...
r8949 TRACKER_BUG = Tracker.find_by_position(1)
TRACKER_FEATURE = Tracker.find_by_position(2)
Toshi MARUYAMA
remove trailing white-spaces from lib/tasks/migrate_from_mantis.rake...
r9401
Jean-Philippe Lang
Replaces find(:all) calls....
r10690 roles = Role.where(:builtin => 0).order('position ASC').all
Toshi MARUYAMA
set svn:eol-style native lib/tasks/migrate_from_mantis.rake...
r8949 manager_role = roles[0]
developer_role = roles[1]
DEFAULT_ROLE = roles.last
ROLE_MAPPING = {10 => DEFAULT_ROLE, # viewer
25 => DEFAULT_ROLE, # reporter
40 => DEFAULT_ROLE, # updater
55 => developer_role, # developer
70 => manager_role, # manager
90 => manager_role # administrator
}
Toshi MARUYAMA
remove trailing white-spaces from lib/tasks/migrate_from_mantis.rake...
r9401
Toshi MARUYAMA
set svn:eol-style native lib/tasks/migrate_from_mantis.rake...
r8949 CUSTOM_FIELD_TYPE_MAPPING = {0 => 'string', # String
1 => 'int', # Numeric
2 => 'int', # Float
3 => 'list', # Enumeration
4 => 'string', # Email
5 => 'bool', # Checkbox
6 => 'list', # List
7 => 'list', # Multiselection list
8 => 'date', # Date
}
Toshi MARUYAMA
remove trailing white-spaces from lib/tasks/migrate_from_mantis.rake...
r9401
Toshi MARUYAMA
set svn:eol-style native lib/tasks/migrate_from_mantis.rake...
r8949 RELATION_TYPE_MAPPING = {1 => IssueRelation::TYPE_RELATES, # related to
2 => IssueRelation::TYPE_RELATES, # parent of
3 => IssueRelation::TYPE_RELATES, # child of
0 => IssueRelation::TYPE_DUPLICATES, # duplicate of
4 => IssueRelation::TYPE_DUPLICATES # has duplicate
}
Toshi MARUYAMA
remove trailing white-spaces from lib/tasks/migrate_from_mantis.rake...
r9401
Toshi MARUYAMA
set svn:eol-style native lib/tasks/migrate_from_mantis.rake...
r8949 class MantisUser < ActiveRecord::Base
Jean-Philippe Lang
set_table_name deprecated....
r9368 self.table_name = :mantis_user_table
Toshi MARUYAMA
remove trailing white-spaces from lib/tasks/migrate_from_mantis.rake...
r9401
Toshi MARUYAMA
set svn:eol-style native lib/tasks/migrate_from_mantis.rake...
r8949 def firstname
@firstname = realname.blank? ? username : realname.split.first[0..29]
@firstname
end
Toshi MARUYAMA
remove trailing white-spaces from lib/tasks/migrate_from_mantis.rake...
r9401
Toshi MARUYAMA
set svn:eol-style native lib/tasks/migrate_from_mantis.rake...
r8949 def lastname
@lastname = realname.blank? ? '-' : realname.split[1..-1].join(' ')[0..29]
@lastname = '-' if @lastname.blank?
@lastname
end
Toshi MARUYAMA
remove trailing white-spaces from lib/tasks/migrate_from_mantis.rake...
r9401
Toshi MARUYAMA
set svn:eol-style native lib/tasks/migrate_from_mantis.rake...
r8949 def email
if read_attribute(:email).match(/^([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})$/i) &&
!User.find_by_mail(read_attribute(:email))
@email = read_attribute(:email)
else
@email = "#{username}@foo.bar"
end
end
Toshi MARUYAMA
remove trailing white-spaces from lib/tasks/migrate_from_mantis.rake...
r9401
Toshi MARUYAMA
set svn:eol-style native lib/tasks/migrate_from_mantis.rake...
r8949 def username
read_attribute(:username)[0..29].gsub(/[^a-zA-Z0-9_\-@\.]/, '-')
end
end
Toshi MARUYAMA
remove trailing white-spaces from lib/tasks/migrate_from_mantis.rake...
r9401
Toshi MARUYAMA
set svn:eol-style native lib/tasks/migrate_from_mantis.rake...
r8949 class MantisProject < ActiveRecord::Base
Jean-Philippe Lang
set_table_name deprecated....
r9368 self.table_name = :mantis_project_table
Toshi MARUYAMA
set svn:eol-style native lib/tasks/migrate_from_mantis.rake...
r8949 has_many :versions, :class_name => "MantisVersion", :foreign_key => :project_id
has_many :categories, :class_name => "MantisCategory", :foreign_key => :project_id
has_many :news, :class_name => "MantisNews", :foreign_key => :project_id
has_many :members, :class_name => "MantisProjectUser", :foreign_key => :project_id
Toshi MARUYAMA
remove trailing white-spaces from lib/tasks/migrate_from_mantis.rake...
r9401
Toshi MARUYAMA
set svn:eol-style native lib/tasks/migrate_from_mantis.rake...
r8949 def identifier
read_attribute(:name).gsub(/[^a-z0-9\-]+/, '-').slice(0, Project::IDENTIFIER_MAX_LENGTH)
end
end
Toshi MARUYAMA
remove trailing white-spaces from lib/tasks/migrate_from_mantis.rake...
r9401
Toshi MARUYAMA
set svn:eol-style native lib/tasks/migrate_from_mantis.rake...
r8949 class MantisVersion < ActiveRecord::Base
Jean-Philippe Lang
set_table_name deprecated....
r9368 self.table_name = :mantis_project_version_table
Toshi MARUYAMA
remove trailing white-spaces from lib/tasks/migrate_from_mantis.rake...
r9401
Toshi MARUYAMA
set svn:eol-style native lib/tasks/migrate_from_mantis.rake...
r8949 def version
read_attribute(:version)[0..29]
end
Toshi MARUYAMA
remove trailing white-spaces from lib/tasks/migrate_from_mantis.rake...
r9401
Toshi MARUYAMA
set svn:eol-style native lib/tasks/migrate_from_mantis.rake...
r8949 def description
read_attribute(:description)[0..254]
end
end
Toshi MARUYAMA
remove trailing white-spaces from lib/tasks/migrate_from_mantis.rake...
r9401
Toshi MARUYAMA
set svn:eol-style native lib/tasks/migrate_from_mantis.rake...
r8949 class MantisCategory < ActiveRecord::Base
Jean-Philippe Lang
set_table_name deprecated....
r9368 self.table_name = :mantis_project_category_table
Toshi MARUYAMA
set svn:eol-style native lib/tasks/migrate_from_mantis.rake...
r8949 end
Toshi MARUYAMA
remove trailing white-spaces from lib/tasks/migrate_from_mantis.rake...
r9401
Toshi MARUYAMA
set svn:eol-style native lib/tasks/migrate_from_mantis.rake...
r8949 class MantisProjectUser < ActiveRecord::Base
Jean-Philippe Lang
set_table_name deprecated....
r9368 self.table_name = :mantis_project_user_list_table
Toshi MARUYAMA
set svn:eol-style native lib/tasks/migrate_from_mantis.rake...
r8949 end
Toshi MARUYAMA
remove trailing white-spaces from lib/tasks/migrate_from_mantis.rake...
r9401
Toshi MARUYAMA
set svn:eol-style native lib/tasks/migrate_from_mantis.rake...
r8949 class MantisBug < ActiveRecord::Base
Jean-Philippe Lang
set_table_name deprecated....
r9368 self.table_name = :mantis_bug_table
Toshi MARUYAMA
set svn:eol-style native lib/tasks/migrate_from_mantis.rake...
r8949 belongs_to :bug_text, :class_name => "MantisBugText", :foreign_key => :bug_text_id
has_many :bug_notes, :class_name => "MantisBugNote", :foreign_key => :bug_id
has_many :bug_files, :class_name => "MantisBugFile", :foreign_key => :bug_id
has_many :bug_monitors, :class_name => "MantisBugMonitor", :foreign_key => :bug_id
end
Toshi MARUYAMA
remove trailing white-spaces from lib/tasks/migrate_from_mantis.rake...
r9401
Toshi MARUYAMA
set svn:eol-style native lib/tasks/migrate_from_mantis.rake...
r8949 class MantisBugText < ActiveRecord::Base
Jean-Philippe Lang
set_table_name deprecated....
r9368 self.table_name = :mantis_bug_text_table
Toshi MARUYAMA
remove trailing white-spaces from lib/tasks/migrate_from_mantis.rake...
r9401
Toshi MARUYAMA
set svn:eol-style native lib/tasks/migrate_from_mantis.rake...
r8949 # Adds Mantis steps_to_reproduce and additional_information fields
# to description if any
def full_description
full_description = description
full_description += "\n\n*Steps to reproduce:*\n\n#{steps_to_reproduce}" unless steps_to_reproduce.blank?
full_description += "\n\n*Additional information:*\n\n#{additional_information}" unless additional_information.blank?
full_description
end
end
Toshi MARUYAMA
remove trailing white-spaces from lib/tasks/migrate_from_mantis.rake...
r9401
Toshi MARUYAMA
set svn:eol-style native lib/tasks/migrate_from_mantis.rake...
r8949 class MantisBugNote < ActiveRecord::Base
Jean-Philippe Lang
set_table_name deprecated....
r9368 self.table_name = :mantis_bugnote_table
Toshi MARUYAMA
set svn:eol-style native lib/tasks/migrate_from_mantis.rake...
r8949 belongs_to :bug, :class_name => "MantisBug", :foreign_key => :bug_id
belongs_to :bug_note_text, :class_name => "MantisBugNoteText", :foreign_key => :bugnote_text_id
end
Toshi MARUYAMA
remove trailing white-spaces from lib/tasks/migrate_from_mantis.rake...
r9401
Toshi MARUYAMA
set svn:eol-style native lib/tasks/migrate_from_mantis.rake...
r8949 class MantisBugNoteText < ActiveRecord::Base
Jean-Philippe Lang
set_table_name deprecated....
r9368 self.table_name = :mantis_bugnote_text_table
Toshi MARUYAMA
set svn:eol-style native lib/tasks/migrate_from_mantis.rake...
r8949 end
Toshi MARUYAMA
remove trailing white-spaces from lib/tasks/migrate_from_mantis.rake...
r9401
Toshi MARUYAMA
set svn:eol-style native lib/tasks/migrate_from_mantis.rake...
r8949 class MantisBugFile < ActiveRecord::Base
Jean-Philippe Lang
set_table_name deprecated....
r9368 self.table_name = :mantis_bug_file_table
Toshi MARUYAMA
remove trailing white-spaces from lib/tasks/migrate_from_mantis.rake...
r9401
Toshi MARUYAMA
set svn:eol-style native lib/tasks/migrate_from_mantis.rake...
r8949 def size
filesize
end
Toshi MARUYAMA
remove trailing white-spaces from lib/tasks/migrate_from_mantis.rake...
r9401
Toshi MARUYAMA
set svn:eol-style native lib/tasks/migrate_from_mantis.rake...
r8949 def original_filename
MantisMigrate.encode(filename)
end
Toshi MARUYAMA
remove trailing white-spaces from lib/tasks/migrate_from_mantis.rake...
r9401
Toshi MARUYAMA
set svn:eol-style native lib/tasks/migrate_from_mantis.rake...
r8949 def content_type
file_type
end
Toshi MARUYAMA
remove trailing white-spaces from lib/tasks/migrate_from_mantis.rake...
r9401
Toshi MARUYAMA
set svn:eol-style native lib/tasks/migrate_from_mantis.rake...
r8949 def read(*args)
Toshi MARUYAMA
replace tabs to spaces at lib/tasks/migrate_from_mantis.rake...
r9402 if @read_finished
nil
else
@read_finished = true
content
end
Toshi MARUYAMA
set svn:eol-style native lib/tasks/migrate_from_mantis.rake...
r8949 end
end
Toshi MARUYAMA
remove trailing white-spaces from lib/tasks/migrate_from_mantis.rake...
r9401
Toshi MARUYAMA
set svn:eol-style native lib/tasks/migrate_from_mantis.rake...
r8949 class MantisBugRelationship < ActiveRecord::Base
Jean-Philippe Lang
set_table_name deprecated....
r9368 self.table_name = :mantis_bug_relationship_table
Toshi MARUYAMA
set svn:eol-style native lib/tasks/migrate_from_mantis.rake...
r8949 end
Toshi MARUYAMA
remove trailing white-spaces from lib/tasks/migrate_from_mantis.rake...
r9401
Toshi MARUYAMA
set svn:eol-style native lib/tasks/migrate_from_mantis.rake...
r8949 class MantisBugMonitor < ActiveRecord::Base
Jean-Philippe Lang
set_table_name deprecated....
r9368 self.table_name = :mantis_bug_monitor_table
Toshi MARUYAMA
set svn:eol-style native lib/tasks/migrate_from_mantis.rake...
r8949 end
Toshi MARUYAMA
remove trailing white-spaces from lib/tasks/migrate_from_mantis.rake...
r9401
Toshi MARUYAMA
set svn:eol-style native lib/tasks/migrate_from_mantis.rake...
r8949 class MantisNews < ActiveRecord::Base
Jean-Philippe Lang
set_table_name deprecated....
r9368 self.table_name = :mantis_news_table
Toshi MARUYAMA
set svn:eol-style native lib/tasks/migrate_from_mantis.rake...
r8949 end
Toshi MARUYAMA
remove trailing white-spaces from lib/tasks/migrate_from_mantis.rake...
r9401
Toshi MARUYAMA
set svn:eol-style native lib/tasks/migrate_from_mantis.rake...
r8949 class MantisCustomField < ActiveRecord::Base
Jean-Philippe Lang
set_table_name deprecated....
r9368 self.table_name = :mantis_custom_field_table
Toshi MARUYAMA
remove trailing white-spaces from lib/tasks/migrate_from_mantis.rake...
r9401 set_inheritance_column :none
Toshi MARUYAMA
set svn:eol-style native lib/tasks/migrate_from_mantis.rake...
r8949 has_many :values, :class_name => "MantisCustomFieldString", :foreign_key => :field_id
has_many :projects, :class_name => "MantisCustomFieldProject", :foreign_key => :field_id
Toshi MARUYAMA
remove trailing white-spaces from lib/tasks/migrate_from_mantis.rake...
r9401
Toshi MARUYAMA
set svn:eol-style native lib/tasks/migrate_from_mantis.rake...
r8949 def format
read_attribute :type
end
Toshi MARUYAMA
remove trailing white-spaces from lib/tasks/migrate_from_mantis.rake...
r9401
Toshi MARUYAMA
set svn:eol-style native lib/tasks/migrate_from_mantis.rake...
r8949 def name
read_attribute(:name)[0..29]
end
end
Toshi MARUYAMA
remove trailing white-spaces from lib/tasks/migrate_from_mantis.rake...
r9401
Toshi MARUYAMA
set svn:eol-style native lib/tasks/migrate_from_mantis.rake...
r8949 class MantisCustomFieldProject < ActiveRecord::Base
Toshi MARUYAMA
remove trailing white-spaces from lib/tasks/migrate_from_mantis.rake...
r9401 self.table_name = :mantis_custom_field_project_table
Toshi MARUYAMA
set svn:eol-style native lib/tasks/migrate_from_mantis.rake...
r8949 end
Toshi MARUYAMA
remove trailing white-spaces from lib/tasks/migrate_from_mantis.rake...
r9401
Toshi MARUYAMA
set svn:eol-style native lib/tasks/migrate_from_mantis.rake...
r8949 class MantisCustomFieldString < ActiveRecord::Base
Toshi MARUYAMA
remove trailing white-spaces from lib/tasks/migrate_from_mantis.rake...
r9401 self.table_name = :mantis_custom_field_string_table
Toshi MARUYAMA
set svn:eol-style native lib/tasks/migrate_from_mantis.rake...
r8949 end
Toshi MARUYAMA
remove trailing white-spaces from lib/tasks/migrate_from_mantis.rake...
r9401
Toshi MARUYAMA
set svn:eol-style native lib/tasks/migrate_from_mantis.rake...
r8949 def self.migrate
Toshi MARUYAMA
remove trailing white-spaces from lib/tasks/migrate_from_mantis.rake...
r9401
Toshi MARUYAMA
set svn:eol-style native lib/tasks/migrate_from_mantis.rake...
r8949 # Users
print "Migrating users"
User.delete_all "login <> 'admin'"
users_map = {}
users_migrated = 0
Jean-Philippe Lang
Replaces find(:all) calls....
r10690 MantisUser.all.each do |user|
Toshi MARUYAMA
replace tabs to spaces at lib/tasks/migrate_from_mantis.rake...
r9402 u = User.new :firstname => encode(user.firstname),
:lastname => encode(user.lastname),
:mail => user.email,
:last_login_on => user.last_visit
u.login = user.username
u.password = 'mantis'
u.status = User::STATUS_LOCKED if user.enabled != 1
u.admin = true if user.access_level == 90
next unless u.save!
users_migrated += 1
users_map[user.id] = u.id
print '.'
Toshi MARUYAMA
set svn:eol-style native lib/tasks/migrate_from_mantis.rake...
r8949 end
puts
Toshi MARUYAMA
remove trailing white-spaces from lib/tasks/migrate_from_mantis.rake...
r9401
Toshi MARUYAMA
set svn:eol-style native lib/tasks/migrate_from_mantis.rake...
r8949 # Projects
print "Migrating projects"
Project.destroy_all
projects_map = {}
versions_map = {}
categories_map = {}
Jean-Philippe Lang
Replaces find(:all) calls....
r10690 MantisProject.all.each do |project|
Toshi MARUYAMA
replace tabs to spaces at lib/tasks/migrate_from_mantis.rake...
r9402 p = Project.new :name => encode(project.name),
Toshi MARUYAMA
set svn:eol-style native lib/tasks/migrate_from_mantis.rake...
r8949 :description => encode(project.description)
Toshi MARUYAMA
replace tabs to spaces at lib/tasks/migrate_from_mantis.rake...
r9402 p.identifier = project.identifier
next unless p.save
projects_map[project.id] = p.id
p.enabled_module_names = ['issue_tracking', 'news', 'wiki']
Jean-Philippe Lang
Makes migrate_from_mantis compatible with Rails3....
r9398 p.trackers << TRACKER_BUG unless p.trackers.include?(TRACKER_BUG)
p.trackers << TRACKER_FEATURE unless p.trackers.include?(TRACKER_FEATURE)
Toshi MARUYAMA
replace tabs to spaces at lib/tasks/migrate_from_mantis.rake...
r9402 print '.'
# Project members
project.members.each do |member|
Toshi MARUYAMA
set svn:eol-style native lib/tasks/migrate_from_mantis.rake...
r8949 m = Member.new :user => User.find_by_id(users_map[member.user_id]),
Toshi MARUYAMA
replace tabs to spaces at lib/tasks/migrate_from_mantis.rake...
r9402 :roles => [ROLE_MAPPING[member.access_level] || DEFAULT_ROLE]
m.project = p
m.save
end
# Project versions
project.versions.each do |version|
Toshi MARUYAMA
set svn:eol-style native lib/tasks/migrate_from_mantis.rake...
r8949 v = Version.new :name => encode(version.version),
:description => encode(version.description),
:effective_date => (version.date_order ? version.date_order.to_date : nil)
v.project = p
v.save
versions_map[version.id] = v.id
Toshi MARUYAMA
replace tabs to spaces at lib/tasks/migrate_from_mantis.rake...
r9402 end
# Project categories
project.categories.each do |category|
Toshi MARUYAMA
set svn:eol-style native lib/tasks/migrate_from_mantis.rake...
r8949 g = IssueCategory.new :name => category.category[0,30]
g.project = p
g.save
categories_map[category.category] = g.id
Toshi MARUYAMA
replace tabs to spaces at lib/tasks/migrate_from_mantis.rake...
r9402 end
end
puts
Toshi MARUYAMA
remove trailing white-spaces from lib/tasks/migrate_from_mantis.rake...
r9401
Toshi MARUYAMA
set svn:eol-style native lib/tasks/migrate_from_mantis.rake...
r8949 # Bugs
print "Migrating bugs"
Issue.destroy_all
issues_map = {}
keep_bug_ids = (Issue.count == 0)
MantisBug.find_each(:batch_size => 200) do |bug|
next unless projects_map[bug.project_id] && users_map[bug.reporter_id]
Toshi MARUYAMA
replace tabs to spaces at lib/tasks/migrate_from_mantis.rake...
r9402 i = Issue.new :project_id => projects_map[bug.project_id],
Toshi MARUYAMA
set svn:eol-style native lib/tasks/migrate_from_mantis.rake...
r8949 :subject => encode(bug.summary),
:description => encode(bug.bug_text.full_description),
:priority => PRIORITY_MAPPING[bug.priority] || DEFAULT_PRIORITY,
:created_on => bug.date_submitted,
:updated_on => bug.last_updated
Toshi MARUYAMA
replace tabs to spaces at lib/tasks/migrate_from_mantis.rake...
r9402 i.author = User.find_by_id(users_map[bug.reporter_id])
i.category = IssueCategory.find_by_project_id_and_name(i.project_id, bug.category[0,30]) unless bug.category.blank?
i.fixed_version = Version.find_by_project_id_and_name(i.project_id, bug.fixed_in_version) unless bug.fixed_in_version.blank?
i.status = STATUS_MAPPING[bug.status] || DEFAULT_STATUS
i.tracker = (bug.severity == 10 ? TRACKER_FEATURE : TRACKER_BUG)
i.id = bug.id if keep_bug_ids
next unless i.save
issues_map[bug.id] = i.id
print '.'
STDOUT.flush
Toshi MARUYAMA
set svn:eol-style native lib/tasks/migrate_from_mantis.rake...
r8949
# Assignee
# Redmine checks that the assignee is a project member
if (bug.handler_id && users_map[bug.handler_id])
i.assigned_to = User.find_by_id(users_map[bug.handler_id])
Jean-Philippe Lang
Makes migrate_from_mantis compatible with Rails3....
r9398 i.save(:validate => false)
Toshi MARUYAMA
remove trailing white-spaces from lib/tasks/migrate_from_mantis.rake...
r9401 end
Toshi MARUYAMA
replace tabs to spaces at lib/tasks/migrate_from_mantis.rake...
r9402
# Bug notes
bug.bug_notes.each do |note|
next unless users_map[note.reporter_id]
Toshi MARUYAMA
set svn:eol-style native lib/tasks/migrate_from_mantis.rake...
r8949 n = Journal.new :notes => encode(note.bug_note_text.note),
:created_on => note.date_submitted
n.user = User.find_by_id(users_map[note.reporter_id])
n.journalized = i
n.save
Toshi MARUYAMA
replace tabs to spaces at lib/tasks/migrate_from_mantis.rake...
r9402 end
Toshi MARUYAMA
set svn:eol-style native lib/tasks/migrate_from_mantis.rake...
r8949 # Bug files
bug.bug_files.each do |file|
a = Attachment.new :created_on => file.date_added
a.file = file
Jean-Philippe Lang
Replaces find(:first/:all) calls....
r10704 a.author = User.first
Toshi MARUYAMA
set svn:eol-style native lib/tasks/migrate_from_mantis.rake...
r8949 a.container = i
a.save
end
Toshi MARUYAMA
remove trailing white-spaces from lib/tasks/migrate_from_mantis.rake...
r9401
Toshi MARUYAMA
set svn:eol-style native lib/tasks/migrate_from_mantis.rake...
r8949 # Bug monitors
bug.bug_monitors.each do |monitor|
next unless users_map[monitor.user_id]
i.add_watcher(User.find_by_id(users_map[monitor.user_id]))
end
end
Toshi MARUYAMA
remove trailing white-spaces from lib/tasks/migrate_from_mantis.rake...
r9401
Toshi MARUYAMA
set svn:eol-style native lib/tasks/migrate_from_mantis.rake...
r8949 # update issue id sequence if needed (postgresql)
Issue.connection.reset_pk_sequence!(Issue.table_name) if Issue.connection.respond_to?('reset_pk_sequence!')
puts
Toshi MARUYAMA
remove trailing white-spaces from lib/tasks/migrate_from_mantis.rake...
r9401
Toshi MARUYAMA
set svn:eol-style native lib/tasks/migrate_from_mantis.rake...
r8949 # Bug relationships
print "Migrating bug relations"
Jean-Philippe Lang
Replaces find(:all) calls....
r10690 MantisBugRelationship.all.each do |relation|
Toshi MARUYAMA
set svn:eol-style native lib/tasks/migrate_from_mantis.rake...
r8949 next unless issues_map[relation.source_bug_id] && issues_map[relation.destination_bug_id]
r = IssueRelation.new :relation_type => RELATION_TYPE_MAPPING[relation.relationship_type]
r.issue_from = Issue.find_by_id(issues_map[relation.source_bug_id])
r.issue_to = Issue.find_by_id(issues_map[relation.destination_bug_id])
pp r unless r.save
print '.'
STDOUT.flush
end
puts
Toshi MARUYAMA
remove trailing white-spaces from lib/tasks/migrate_from_mantis.rake...
r9401
Toshi MARUYAMA
set svn:eol-style native lib/tasks/migrate_from_mantis.rake...
r8949 # News
print "Migrating news"
News.destroy_all
Jean-Philippe Lang
Replaces find(:all) calls....
r10690 MantisNews.where('project_id > 0').all.each do |news|
Toshi MARUYAMA
set svn:eol-style native lib/tasks/migrate_from_mantis.rake...
r8949 next unless projects_map[news.project_id]
n = News.new :project_id => projects_map[news.project_id],
:title => encode(news.headline[0..59]),
:description => encode(news.body),
:created_on => news.date_posted
n.author = User.find_by_id(users_map[news.poster_id])
n.save
print '.'
STDOUT.flush
end
puts
Toshi MARUYAMA
remove trailing white-spaces from lib/tasks/migrate_from_mantis.rake...
r9401
Toshi MARUYAMA
set svn:eol-style native lib/tasks/migrate_from_mantis.rake...
r8949 # Custom fields
print "Migrating custom fields"
IssueCustomField.destroy_all
Jean-Philippe Lang
Replaces find(:all) calls....
r10690 MantisCustomField.all.each do |field|
Toshi MARUYAMA
set svn:eol-style native lib/tasks/migrate_from_mantis.rake...
r8949 f = IssueCustomField.new :name => field.name[0..29],
:field_format => CUSTOM_FIELD_TYPE_MAPPING[field.format],
:min_length => field.length_min,
:max_length => field.length_max,
:regexp => field.valid_regexp,
:possible_values => field.possible_values.split('|'),
:is_required => field.require_report?
next unless f.save
print '.'
STDOUT.flush
# Trackers association
Jean-Philippe Lang
Replaces find(:all) calls....
r10690 f.trackers = Tracker.all
Toshi MARUYAMA
remove trailing white-spaces from lib/tasks/migrate_from_mantis.rake...
r9401
Toshi MARUYAMA
set svn:eol-style native lib/tasks/migrate_from_mantis.rake...
r8949 # Projects association
field.projects.each do |project|
f.projects << Project.find_by_id(projects_map[project.project_id]) if projects_map[project.project_id]
end
Toshi MARUYAMA
remove trailing white-spaces from lib/tasks/migrate_from_mantis.rake...
r9401
Toshi MARUYAMA
set svn:eol-style native lib/tasks/migrate_from_mantis.rake...
r8949 # Values
field.values.each do |value|
v = CustomValue.new :custom_field_id => f.id,
:value => value.value
v.customized = Issue.find_by_id(issues_map[value.bug_id]) if issues_map[value.bug_id]
v.save
end unless f.new_record?
end
puts
Toshi MARUYAMA
remove trailing white-spaces from lib/tasks/migrate_from_mantis.rake...
r9401
Toshi MARUYAMA
set svn:eol-style native lib/tasks/migrate_from_mantis.rake...
r8949 puts
puts "Users: #{users_migrated}/#{MantisUser.count}"
puts "Projects: #{Project.count}/#{MantisProject.count}"
puts "Memberships: #{Member.count}/#{MantisProjectUser.count}"
puts "Versions: #{Version.count}/#{MantisVersion.count}"
puts "Categories: #{IssueCategory.count}/#{MantisCategory.count}"
puts "Bugs: #{Issue.count}/#{MantisBug.count}"
puts "Bug notes: #{Journal.count}/#{MantisBugNote.count}"
puts "Bug files: #{Attachment.count}/#{MantisBugFile.count}"
puts "Bug relations: #{IssueRelation.count}/#{MantisBugRelationship.count}"
puts "Bug monitors: #{Watcher.count}/#{MantisBugMonitor.count}"
puts "News: #{News.count}/#{MantisNews.count}"
puts "Custom fields: #{IssueCustomField.count}/#{MantisCustomField.count}"
end
Toshi MARUYAMA
remove trailing white-spaces from lib/tasks/migrate_from_mantis.rake...
r9401
Toshi MARUYAMA
set svn:eol-style native lib/tasks/migrate_from_mantis.rake...
r8949 def self.encoding(charset)
Jean-Philippe Lang
Don't use iconv with ruby1.9 (#12787)....
r11210 @charset = charset
Toshi MARUYAMA
set svn:eol-style native lib/tasks/migrate_from_mantis.rake...
r8949 end
Toshi MARUYAMA
remove trailing white-spaces from lib/tasks/migrate_from_mantis.rake...
r9401
Toshi MARUYAMA
set svn:eol-style native lib/tasks/migrate_from_mantis.rake...
r8949 def self.establish_connection(params)
constants.each do |const|
klass = const_get(const)
next unless klass.respond_to? 'establish_connection'
klass.establish_connection params
end
end
Toshi MARUYAMA
remove trailing white-spaces from lib/tasks/migrate_from_mantis.rake...
r9401
Toshi MARUYAMA
set svn:eol-style native lib/tasks/migrate_from_mantis.rake...
r8949 def self.encode(text)
Jean-Philippe Lang
Don't use iconv with ruby1.9 (#12787)....
r11210 if RUBY_VERSION < '1.9'
@ic ||= Iconv.new('UTF-8', @charset)
@ic.iconv text
else
text.to_s.force_encoding(@charset).encode('UTF-8')
end
Toshi MARUYAMA
set svn:eol-style native lib/tasks/migrate_from_mantis.rake...
r8949 end
end
Toshi MARUYAMA
remove trailing white-spaces from lib/tasks/migrate_from_mantis.rake...
r9401
Toshi MARUYAMA
set svn:eol-style native lib/tasks/migrate_from_mantis.rake...
r8949 puts
if Redmine::DefaultData::Loader.no_data?
puts "Redmine configuration need to be loaded before importing data."
puts "Please, run this first:"
puts
puts " rake redmine:load_default_data RAILS_ENV=\"#{ENV['RAILS_ENV']}\""
exit
end
Toshi MARUYAMA
remove trailing white-spaces from lib/tasks/migrate_from_mantis.rake...
r9401
Toshi MARUYAMA
set svn:eol-style native lib/tasks/migrate_from_mantis.rake...
r8949 puts "WARNING: Your Redmine data will be deleted during this process."
print "Are you sure you want to continue ? [y/N] "
STDOUT.flush
break unless STDIN.gets.match(/^y$/i)
Toshi MARUYAMA
remove trailing white-spaces from lib/tasks/migrate_from_mantis.rake...
r9401
Toshi MARUYAMA
set svn:eol-style native lib/tasks/migrate_from_mantis.rake...
r8949 # Default Mantis database settings
Toshi MARUYAMA
remove trailing white-spaces from lib/tasks/migrate_from_mantis.rake...
r9401 db_params = {:adapter => 'mysql2',
:database => 'bugtracker',
:host => 'localhost',
:username => 'root',
Toshi MARUYAMA
set svn:eol-style native lib/tasks/migrate_from_mantis.rake...
r8949 :password => '' }
Toshi MARUYAMA
replace tabs to spaces at lib/tasks/migrate_from_mantis.rake...
r9402 puts
Toshi MARUYAMA
remove trailing white-spaces from lib/tasks/migrate_from_mantis.rake...
r9401 puts "Please enter settings for your Mantis database"
Toshi MARUYAMA
set svn:eol-style native lib/tasks/migrate_from_mantis.rake...
r8949 [:adapter, :host, :database, :username, :password].each do |param|
print "#{param} [#{db_params[param]}]: "
value = STDIN.gets.chomp!
db_params[param] = value unless value.blank?
end
Toshi MARUYAMA
remove trailing white-spaces from lib/tasks/migrate_from_mantis.rake...
r9401
Toshi MARUYAMA
set svn:eol-style native lib/tasks/migrate_from_mantis.rake...
r8949 while true
print "encoding [UTF-8]: "
STDOUT.flush
encoding = STDIN.gets.chomp!
encoding = 'UTF-8' if encoding.blank?
break if MantisMigrate.encoding encoding
puts "Invalid encoding!"
end
puts
Toshi MARUYAMA
remove trailing white-spaces from lib/tasks/migrate_from_mantis.rake...
r9401
Toshi MARUYAMA
set svn:eol-style native lib/tasks/migrate_from_mantis.rake...
r8949 # Make sure bugs can refer bugs in other projects
Setting.cross_project_issue_relations = 1 if Setting.respond_to? 'cross_project_issue_relations'
Toshi MARUYAMA
remove trailing white-spaces from lib/tasks/migrate_from_mantis.rake...
r9401
Jean-Baptiste Barth
Ensure Tranc and Mantis importers don't reset global notification settings (#13989)....
r11565 old_notified_events = Setting.notified_events
Jean-Philippe Lang
Fixed that Mantis/Trac users are not imported because of password too short (#14590)....
r11933 old_password_min_length = Setting.password_min_length
Jean-Baptiste Barth
Ensure Tranc and Mantis importers don't reset global notification settings (#13989)....
r11565 begin
# Turn off email notifications temporarily
Setting.notified_events = []
Jean-Philippe Lang
Fixed that Mantis/Trac users are not imported because of password too short (#14590)....
r11933 Setting.password_min_length = 4
Jean-Baptiste Barth
Ensure Tranc and Mantis importers don't reset global notification settings (#13989)....
r11565 # Run the migration
MantisMigrate.establish_connection db_params
MantisMigrate.migrate
ensure
Jean-Philippe Lang
Fixed that Mantis/Trac users are not imported because of password too short (#14590)....
r11933 # Restore previous settings
Jean-Baptiste Barth
Ensure Tranc and Mantis importers don't reset global notification settings (#13989)....
r11565 Setting.notified_events = old_notified_events
Jean-Philippe Lang
Fixed that Mantis/Trac users are not imported because of password too short (#14590)....
r11933 Setting.password_min_length = old_password_min_length
Jean-Baptiste Barth
Ensure Tranc and Mantis importers don't reset global notification settings (#13989)....
r11565 end
Toshi MARUYAMA
remove trailing white-spaces from lib/tasks/migrate_from_mantis.rake...
r9401
Toshi MARUYAMA
set svn:eol-style native lib/tasks/migrate_from_mantis.rake...
r8949 end
end