summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorJean-Philippe Lang <jp_lang@yahoo.fr>2006-12-05 20:45:04 +0000
committerJean-Philippe Lang <jp_lang@yahoo.fr>2006-12-05 20:45:04 +0000
commit96f83cc8f0f032554f771a59da22303cd473b878 (patch)
tree355a0d2ed653a5426c59ebf6a1fe65eba024b4d0 /lib
parenteabc04d8368824965d3ac8de3fa84502e9c05d38 (diff)
downloadredmine-96f83cc8f0f032554f771a59da22303cd473b878.tar.gz
redmine-96f83cc8f0f032554f771a59da22303cd473b878.zip
trunk moved from /trunk/redmine to /trunk
git-svn-id: http://redmine.rubyforge.org/svn/trunk@67 e93f8b46-1217-0410-a6f0-8f06a7374b81
Diffstat (limited to 'lib')
-rw-r--r--lib/tasks/extract_fixtures.rake24
-rw-r--r--lib/tasks/load_default_data.rake88
2 files changed, 112 insertions, 0 deletions
diff --git a/lib/tasks/extract_fixtures.rake b/lib/tasks/extract_fixtures.rake
new file mode 100644
index 000000000..49834e5ab
--- /dev/null
+++ b/lib/tasks/extract_fixtures.rake
@@ -0,0 +1,24 @@
+desc 'Create YAML test fixtures from data in an existing database.
+Defaults to development database. Set RAILS_ENV to override.'
+
+task :extract_fixtures => :environment do
+ sql = "SELECT * FROM %s"
+ skip_tables = ["schema_info"]
+ ActiveRecord::Base.establish_connection
+ (ActiveRecord::Base.connection.tables - skip_tables).each do |table_name|
+ i = "000"
+ File.open("#{RAILS_ROOT}/#{table_name}.yml", 'w' ) do |file|
+ data = ActiveRecord::Base.connection.select_all(sql % table_name)
+ file.write data.inject({}) { |hash, record|
+
+ # cast extracted values
+ ActiveRecord::Base.connection.columns(table_name).each { |col|
+ record[col.name] = col.type_cast(record[col.name]) if record[col.name]
+ }
+
+ hash["#{table_name}_#{i.succ!}"] = record
+ hash
+ }.to_yaml
+ end
+ end
+end \ No newline at end of file
diff --git a/lib/tasks/load_default_data.rake b/lib/tasks/load_default_data.rake
new file mode 100644
index 000000000..d672802db
--- /dev/null
+++ b/lib/tasks/load_default_data.rake
@@ -0,0 +1,88 @@
+desc 'Load default configuration data (using default language)'
+
+task :load_default_data => :environment do
+ include GLoc
+ set_language_if_valid($RDM_DEFAULT_LANG)
+
+begin
+ # check that no data already exists
+ if Role.find(:first)
+ raise "Some roles are already defined."
+ end
+ if Tracker.find(:first)
+ raise "Some trackers are already defined."
+ end
+ if IssueStatus.find(:first)
+ raise "Some statuses are already defined."
+ end
+ if Enumeration.find(:first)
+ raise "Some enumerations are already defined."
+ end
+
+ puts "Loading default configuration for language: #{current_language}"
+
+ # roles
+ manager = Role.create :name => l(:default_role_manager)
+ manager.permissions = Permission.find(:all, :conditions => ["is_public=?", false])
+
+ developper = Role.create :name => l(:default_role_developper)
+ perms = [150, 320, 321, 322, 420, 421, 422, 1050, 1060, 1070, 1075, 1220, 1221, 1222, 1223, 1224, 1320, 1322, 1061, 1057]
+ developper.permissions = Permission.find(:all, :conditions => ["sort IN (#{perms.join(',')})"])
+
+ reporter = Role.create :name => l(:default_role_reporter)
+ perms = [1050, 1060, 1070, 1057]
+ reporter.permissions = Permission.find(:all, :conditions => ["sort IN (#{perms.join(',')})"])
+
+ # trackers
+ Tracker.create(:name => l(:default_tracker_bug), :is_in_chlog => true)
+ Tracker.create(:name => l(:default_tracker_feature), :is_in_chlog => true)
+ Tracker.create(:name => l(:default_tracker_support), :is_in_chlog => false)
+
+ # issue statuses
+ new = IssueStatus.create(:name => l(:default_issue_status_new), :is_closed => false, :is_default => true, :html_color => 'F98787')
+ assigned = IssueStatus.create(:name => l(:default_issue_status_assigned), :is_closed => false, :is_default => false, :html_color => 'C0C0FF')
+ resolved = IssueStatus.create(:name => l(:default_issue_status_resolved), :is_closed => false, :is_default => false, :html_color => '88E0B3')
+ feedback = IssueStatus.create(:name => l(:default_issue_status_feedback), :is_closed => false, :is_default => false, :html_color => 'F3A4F4')
+ closed = IssueStatus.create(:name => l(:default_issue_status_closed), :is_closed => true, :is_default => false, :html_color => 'DBDBDB')
+ rejected = IssueStatus.create(:name => l(:default_issue_status_rejected), :is_closed => true, :is_default => false, :html_color => 'F5C28B')
+
+ # workflow
+ Tracker.find(:all).each { |t|
+ IssueStatus.find(:all).each { |os|
+ IssueStatus.find(:all).each { |ns|
+ Workflow.create(:tracker_id => t.id, :role_id => manager.id, :old_status_id => os.id, :new_status_id => ns.id) unless os == ns
+ }
+ }
+ }
+
+ Tracker.find(:all).each { |t|
+ [new, assigned, resolved, feedback].each { |os|
+ [assigned, resolved, feedback, closed].each { |ns|
+ Workflow.create(:tracker_id => t.id, :role_id => developper.id, :old_status_id => os.id, :new_status_id => ns.id) unless os == ns
+ }
+ }
+ }
+
+ Tracker.find(:all).each { |t|
+ [new, assigned, resolved, feedback].each { |os|
+ [closed].each { |ns|
+ Workflow.create(:tracker_id => t.id, :role_id => reporter.id, :old_status_id => os.id, :new_status_id => ns.id) unless os == ns
+ }
+ }
+ Workflow.create(:tracker_id => t.id, :role_id => reporter.id, :old_status_id => resolved.id, :new_status_id => feedback.id)
+ }
+
+ # enumerations
+ Enumeration.create(:opt => "DCAT", :name => l(:default_doc_category_user))
+ Enumeration.create(:opt => "DCAT", :name => l(:default_doc_category_tech))
+ Enumeration.create(:opt => "IPRI", :name => l(:default_priority_low))
+ Enumeration.create(:opt => "IPRI", :name => l(:default_priority_normal))
+ Enumeration.create(:opt => "IPRI", :name => l(:default_priority_high))
+ Enumeration.create(:opt => "IPRI", :name => l(:default_priority_urgent))
+ Enumeration.create(:opt => "IPRI", :name => l(:default_priority_immediate))
+
+rescue => error
+ puts "Error: " + error
+ puts "Default configuration can't be loaded."
+end
+end \ No newline at end of file