2007-01-02 00:34:10 +03:00
|
|
|
desc 'Load default configuration data'
|
2006-07-29 23:54:22 +04:00
|
|
|
|
|
|
|
task :load_default_data => :environment do
|
|
|
|
include GLoc
|
2007-01-21 14:50:22 +03:00
|
|
|
set_language_if_valid('en')
|
2007-01-02 00:34:10 +03:00
|
|
|
puts
|
|
|
|
|
|
|
|
while true
|
|
|
|
print "Select language: "
|
|
|
|
print GLoc.valid_languages.sort {|x,y| x.to_s <=> y.to_s }.join(", ")
|
|
|
|
print " [#{GLoc.current_language}] "
|
|
|
|
lang = STDIN.gets.chomp!
|
|
|
|
break if lang.empty?
|
|
|
|
break if set_language_if_valid(lang)
|
|
|
|
puts "Unknown language!"
|
|
|
|
end
|
|
|
|
|
|
|
|
puts "===================================="
|
|
|
|
|
2006-11-12 21:50:30 +03:00
|
|
|
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
|
|
|
|
|
2007-01-02 00:34:10 +03:00
|
|
|
puts "Loading default configuration data for language: #{current_language}"
|
2006-11-12 21:50:30 +03:00
|
|
|
|
2006-07-29 23:54:22 +04:00
|
|
|
# roles
|
2007-02-04 12:18:40 +03:00
|
|
|
manager = Role.create :name => l(:default_role_manager), :position => 1
|
2006-11-12 21:50:30 +03:00
|
|
|
manager.permissions = Permission.find(:all, :conditions => ["is_public=?", false])
|
|
|
|
|
2007-02-04 12:18:40 +03:00
|
|
|
developper = Role.create :name => l(:default_role_developper), :position => 2
|
2006-12-10 21:35:48 +03:00
|
|
|
perms = [150, 320, 321, 322, 420, 421, 422, 1050, 1060, 1070, 1075, 1130, 1220, 1221, 1222, 1223, 1224, 1320, 1322, 1061, 1057]
|
2006-11-12 21:50:30 +03:00
|
|
|
developper.permissions = Permission.find(:all, :conditions => ["sort IN (#{perms.join(',')})"])
|
|
|
|
|
2007-02-04 12:18:40 +03:00
|
|
|
reporter = Role.create :name => l(:default_role_reporter), :position => 3
|
2006-12-10 21:35:48 +03:00
|
|
|
perms = [1050, 1060, 1070, 1057, 1130]
|
2006-11-12 21:50:30 +03:00
|
|
|
reporter.permissions = Permission.find(:all, :conditions => ["sort IN (#{perms.join(',')})"])
|
|
|
|
|
2006-07-29 23:54:22 +04:00
|
|
|
# trackers
|
2007-02-04 12:18:40 +03:00
|
|
|
Tracker.create(:name => l(:default_tracker_bug), :is_in_chlog => true, :is_in_roadmap => false, :position => 1)
|
|
|
|
Tracker.create(:name => l(:default_tracker_feature), :is_in_chlog => true, :is_in_roadmap => true, :position => 2)
|
|
|
|
Tracker.create(:name => l(:default_tracker_support), :is_in_chlog => false, :is_in_roadmap => false, :position => 3)
|
2006-11-12 21:50:30 +03:00
|
|
|
|
2006-07-29 23:54:22 +04:00
|
|
|
# issue statuses
|
2007-02-04 12:18:40 +03:00
|
|
|
new = IssueStatus.create(:name => l(:default_issue_status_new), :is_closed => false, :is_default => true, :html_color => 'F98787', :position => 1)
|
|
|
|
assigned = IssueStatus.create(:name => l(:default_issue_status_assigned), :is_closed => false, :is_default => false, :html_color => 'C0C0FF', :position => 2)
|
|
|
|
resolved = IssueStatus.create(:name => l(:default_issue_status_resolved), :is_closed => false, :is_default => false, :html_color => '88E0B3', :position => 3)
|
|
|
|
feedback = IssueStatus.create(:name => l(:default_issue_status_feedback), :is_closed => false, :is_default => false, :html_color => 'F3A4F4', :position => 4)
|
|
|
|
closed = IssueStatus.create(:name => l(:default_issue_status_closed), :is_closed => true, :is_default => false, :html_color => 'DBDBDB', :position => 5)
|
|
|
|
rejected = IssueStatus.create(:name => l(:default_issue_status_rejected), :is_closed => true, :is_default => false, :html_color => 'F5C28B', :position => 6)
|
2006-11-12 21:50:30 +03:00
|
|
|
|
2006-07-29 23:54:22 +04:00
|
|
|
# workflow
|
|
|
|
Tracker.find(:all).each { |t|
|
2006-11-12 21:50:30 +03:00
|
|
|
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
|
|
|
|
}
|
2006-07-29 23:54:22 +04:00
|
|
|
}
|
2006-11-12 21:50:30 +03:00
|
|
|
Workflow.create(:tracker_id => t.id, :role_id => reporter.id, :old_status_id => resolved.id, :new_status_id => feedback.id)
|
|
|
|
}
|
|
|
|
|
2006-07-29 23:54:22 +04:00
|
|
|
# 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))
|
2006-11-12 21:50:30 +03:00
|
|
|
|
|
|
|
rescue => error
|
|
|
|
puts "Error: " + error
|
2007-01-02 00:34:10 +03:00
|
|
|
puts "Default configuration data can't be loaded."
|
2006-11-12 21:50:30 +03:00
|
|
|
end
|
2006-07-29 23:54:22 +04:00
|
|
|
end
|