Actualizado plugin Redmine Questions 1.0.0 light
This commit is contained in:
parent
27e60f8ec1
commit
5d7889f1c9
140 changed files with 5342 additions and 1430 deletions
59
plugins/redmine_questions/lib/tasks/migrate_from_boards.rake
Normal file
59
plugins/redmine_questions/lib/tasks/migrate_from_boards.rake
Normal file
|
@ -0,0 +1,59 @@
|
|||
namespace :redmine do
|
||||
namespace :questions do
|
||||
desc <<-END_DESC
|
||||
Migrate forum board to questions section
|
||||
|
||||
rake redmine:questions:migrate_board_to_section RAILS_ENV="production" board_id="source forum board id" question_section_id="destination question section id" project_id="section project id (nil for global section)"
|
||||
|
||||
END_DESC
|
||||
|
||||
task :migrate_board_to_section => :environment do
|
||||
board_id = ENV['board_id']
|
||||
question_section_id = ENV['question_section_id']
|
||||
question_section_name = ENV['question_section_name']
|
||||
project_id = ENV['project_id']
|
||||
|
||||
if board_id.blank? && project_id.blank?
|
||||
puts 'RedmineQuestions: Params board_id or project_id should be present'
|
||||
exit
|
||||
end
|
||||
|
||||
project = Project.where(:identifier => project_id).first
|
||||
project.enable_module!(:questions) if project
|
||||
boards = [Board.where(:id => board_id).first].compact
|
||||
boards = project.boards if project && boards.blank?
|
||||
boards.each do |board|
|
||||
section = QuestionsSection.for_project(project).where(:id => question_section_id).first
|
||||
section ||= QuestionsSection.for_project(project).find_or_create_by(:name => question_section_name) if question_section_name
|
||||
section ||= QuestionsSection.for_project(project).find_or_create_by(:name => board.name)
|
||||
if section.nil? || board.nil?
|
||||
puts 'RedmineQuestions: Destination section does not found' unless section
|
||||
puts 'RedmineQuestions: Source board does not found' unless board
|
||||
exit
|
||||
end
|
||||
|
||||
board.topics.reverse.each do |topic|
|
||||
if section.questions.where(:subject => topic.subject).first.present?
|
||||
puts "Questions with subject #{topic.subject} already exists."
|
||||
next
|
||||
end
|
||||
|
||||
question_attrs = topic.attributes.slice('subject', 'content', 'author_id', 'locked').merge('project_id' => project.try(:id))
|
||||
migrated_question = section.questions.create(question_attrs)
|
||||
migrated_question.attachments = topic.attachments.map { |attachment| attachment.copy }
|
||||
|
||||
topic.children.each do |reply|
|
||||
if section.section_type == 'questions'
|
||||
answer_attrs = reply.slice('subject', 'content', 'author_id', 'locked').merge('project_id' => project.try(:id))
|
||||
migrated_answer = migrated_question.answers.create(answer_attrs)
|
||||
migrated_answer.attachments = reply.attachments.map { |attachment| attachment.copy }
|
||||
else
|
||||
comment_attrs = { 'author_id' => reply.author_id, 'comments' => reply.content }
|
||||
migrated_question.comments.create(comment_attrs)
|
||||
end
|
||||
end
|
||||
end
|
||||
end #each
|
||||
end
|
||||
end
|
||||
end
|
Loading…
Add table
Add a link
Reference in a new issue