kanbanworkflowstimelinescrumrubyroadmapproject-planningproject-managementopenprojectangularissue-trackerifcgantt-chartganttbug-trackerboardsbcf
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
83 lines
3.0 KiB
83 lines
3.0 KiB
#-- encoding: UTF-8
|
|
#-- copyright
|
|
# OpenProject is a project management system.
|
|
#
|
|
# Copyright (C) 2012-2013 the OpenProject Team
|
|
#
|
|
# This program is free software; you can redistribute it and/or
|
|
# modify it under the terms of the GNU General Public License version 3.
|
|
#
|
|
# See doc/COPYRIGHT.rdoc for more details.
|
|
#++
|
|
|
|
class MergeWikiVersionsWithJournals < ActiveRecord::Migration
|
|
# This is provided here for migrating up after the WikiContent::Version class has been removed
|
|
class WikiContent < ActiveRecord::Base
|
|
class Version < ActiveRecord::Base
|
|
end
|
|
end
|
|
|
|
def self.up
|
|
# avoid touching WikiContent on journal creation
|
|
WikiContentJournal.class_exec {
|
|
def touch_journaled_after_creation
|
|
end
|
|
}
|
|
|
|
# reload the user table schema is needed since
|
|
# the mail_notification type was changed from bool to string
|
|
User.connection.schema_cache.clear!
|
|
User.reset_column_information
|
|
ano_user = User.anonymous
|
|
|
|
# assign all wiki_contents w/o author to the anonymous user - they used to
|
|
# work w/o author but don't any more.
|
|
WikiContent.update_all({:author_id => ano_user.id}, :author_id => nil)
|
|
WikiContent::Version.update_all({:author_id => ano_user.id}, :author_id => nil)
|
|
|
|
WikiContent::Version.find_by_sql("SELECT * FROM wiki_content_versions").each do |wv|
|
|
journal = WikiContentJournal.create!(:journaled_id => wv.wiki_content_id, :user_id => wv.author_id,
|
|
:notes => wv.comments, :created_at => wv.updated_on, :activity_type => "wiki_edits")
|
|
changed_data = {}
|
|
changed_data["compression"] = wv.compression
|
|
changed_data["data"] = wv.data
|
|
if journal.has_attribute? :changes
|
|
journal.update_attribute(:changes, changed_data)
|
|
else
|
|
journal.update_attribute(:changed_data, changed_data)
|
|
end
|
|
journal.update_attribute(:version, wv.version)
|
|
end
|
|
# drop_table :wiki_content_versions
|
|
|
|
change_table :wiki_contents do |t|
|
|
t.rename :version, :lock_version
|
|
end
|
|
end
|
|
|
|
def self.down
|
|
change_table :wiki_contents do |t|
|
|
t.rename :lock_version, :version
|
|
end
|
|
|
|
# create_table :wiki_content_versions do |t|
|
|
# t.column :wiki_content_id, :integer, :null => false
|
|
# t.column :page_id, :integer, :null => false
|
|
# t.column :author_id, :integer
|
|
# t.column :data, :binary
|
|
# t.column :compression, :string, :limit => 6, :default => ""
|
|
# t.column :comments, :string, :limit => 255, :default => ""
|
|
# t.column :updated_on, :datetime, :null => false
|
|
# t.column :version, :integer, :null => false
|
|
# end
|
|
# add_index :wiki_content_versions, :wiki_content_id, :name => :wiki_content_versions_wcid
|
|
#
|
|
# WikiContentJournal.all.each do |j|
|
|
# WikiContent::Version.create(:wiki_content_id => j.journaled_id, :page_id => j.journaled.page_id,
|
|
# :author_id => j.user_id, :data => j.changed_data["data"], :compression => j.changed_data["compression"],
|
|
# :comments => j.notes, :updated_on => j.created_at, :version => j.version)
|
|
# end
|
|
|
|
WikiContentJournal.destroy_all
|
|
end
|
|
end
|
|
|