##// END OF EJS Templates
Moved redmine:load_default_data code to a module so that it can be called from the application....
Jean-Philippe Lang -
r1024:6ae87d7c4c10
parent child
Show More
@@ -0,0 +1,171
1 # redMine - project management software
2 # Copyright (C) 2006-2007 Jean-Philippe Lang
3 #
4 # This program is free software; you can redistribute it and/or
5 # modify it under the terms of the GNU General Public License
6 # as published by the Free Software Foundation; either version 2
7 # of the License, or (at your option) any later version.
8 #
9 # This program is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 # GNU General Public License for more details.
13 #
14 # You should have received a copy of the GNU General Public License
15 # along with this program; if not, write to the Free Software
16 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
17
18 module Redmine
19 module DefaultData
20 class DataAlreadyLoaded < Exception; end
21
22 module Loader
23 include GLoc
24
25 class << self
26 # Returns true if no data is already loaded in the database
27 # otherwise false
28 def no_data?
29 !Role.find(:first, :conditions => {:builtin => 0}) &&
30 !Tracker.find(:first) &&
31 !IssueStatus.find(:first) &&
32 !Enumeration.find(:first)
33 end
34
35 # Loads the default data
36 # Raises a RecordNotSaved exception if something goes wrong
37 def load(lang=nil)
38 raise DataAlreadyLoaded.new("Some configuration data is already loaded.") unless no_data?
39 set_language_if_valid(lang)
40
41 # Roles
42 manager = Role.create! :name => l(:default_role_manager),
43 :position => 1
44 manager.permissions = manager.setable_permissions.collect {|p| p.name}
45 manager.save!
46
47 developper = Role.create! :name => l(:default_role_developper),
48 :position => 2,
49 :permissions => [:manage_versions,
50 :manage_categories,
51 :add_issues,
52 :edit_issues,
53 :manage_issue_relations,
54 :add_issue_notes,
55 :change_issue_status,
56 :save_queries,
57 :view_gantt,
58 :view_calendar,
59 :log_time,
60 :view_time_entries,
61 :comment_news,
62 :view_documents,
63 :view_wiki_pages,
64 :edit_wiki_pages,
65 :delete_wiki_pages,
66 :add_messages,
67 :view_files,
68 :manage_files,
69 :browse_repository,
70 :view_changesets]
71
72 reporter = Role.create! :name => l(:default_role_reporter),
73 :position => 3,
74 :permissions => [:add_issues,
75 :add_issue_notes,
76 :change_issue_status,
77 :save_queries,
78 :view_gantt,
79 :view_calendar,
80 :log_time,
81 :view_time_entries,
82 :comment_news,
83 :view_documents,
84 :view_wiki_pages,
85 :add_messages,
86 :view_files,
87 :browse_repository,
88 :view_changesets]
89
90 Role.non_member.update_attribute :permissions, [:add_issues,
91 :add_issue_notes,
92 :change_issue_status,
93 :save_queries,
94 :view_gantt,
95 :view_calendar,
96 :view_time_entries,
97 :comment_news,
98 :view_documents,
99 :view_wiki_pages,
100 :add_messages,
101 :view_files,
102 :browse_repository,
103 :view_changesets]
104
105 Role.anonymous.update_attribute :permissions, [:view_gantt,
106 :view_calendar,
107 :view_time_entries,
108 :view_documents,
109 :view_wiki_pages,
110 :view_files,
111 :browse_repository,
112 :view_changesets]
113
114 # Trackers
115 Tracker.create!(:name => l(:default_tracker_bug), :is_in_chlog => true, :is_in_roadmap => false, :position => 1)
116 Tracker.create!(:name => l(:default_tracker_feature), :is_in_chlog => true, :is_in_roadmap => true, :position => 2)
117 Tracker.create!(:name => l(:default_tracker_support), :is_in_chlog => false, :is_in_roadmap => false, :position => 3)
118
119 # Issue statuses
120 new = IssueStatus.create!(:name => l(:default_issue_status_new), :is_closed => false, :is_default => true, :position => 1)
121 assigned = IssueStatus.create!(:name => l(:default_issue_status_assigned), :is_closed => false, :is_default => false, :position => 2)
122 resolved = IssueStatus.create!(:name => l(:default_issue_status_resolved), :is_closed => false, :is_default => false, :position => 3)
123 feedback = IssueStatus.create!(:name => l(:default_issue_status_feedback), :is_closed => false, :is_default => false, :position => 4)
124 closed = IssueStatus.create!(:name => l(:default_issue_status_closed), :is_closed => true, :is_default => false, :position => 5)
125 rejected = IssueStatus.create!(:name => l(:default_issue_status_rejected), :is_closed => true, :is_default => false, :position => 6)
126
127 # Workflow
128 Tracker.find(:all).each { |t|
129 IssueStatus.find(:all).each { |os|
130 IssueStatus.find(:all).each { |ns|
131 Workflow.create!(:tracker_id => t.id, :role_id => manager.id, :old_status_id => os.id, :new_status_id => ns.id) unless os == ns
132 }
133 }
134 }
135
136 Tracker.find(:all).each { |t|
137 [new, assigned, resolved, feedback].each { |os|
138 [assigned, resolved, feedback, closed].each { |ns|
139 Workflow.create!(:tracker_id => t.id, :role_id => developper.id, :old_status_id => os.id, :new_status_id => ns.id) unless os == ns
140 }
141 }
142 }
143
144 Tracker.find(:all).each { |t|
145 [new, assigned, resolved, feedback].each { |os|
146 [closed].each { |ns|
147 Workflow.create!(:tracker_id => t.id, :role_id => reporter.id, :old_status_id => os.id, :new_status_id => ns.id) unless os == ns
148 }
149 }
150 Workflow.create!(:tracker_id => t.id, :role_id => reporter.id, :old_status_id => resolved.id, :new_status_id => feedback.id)
151 }
152
153 # Enumerations
154 Enumeration.create!(:opt => "DCAT", :name => l(:default_doc_category_user), :position => 1)
155 Enumeration.create!(:opt => "DCAT", :name => l(:default_doc_category_tech), :position => 2)
156
157 Enumeration.create!(:opt => "IPRI", :name => l(:default_priority_low), :position => 1)
158 Enumeration.create!(:opt => "IPRI", :name => l(:default_priority_normal), :position => 2, :is_default => true)
159 Enumeration.create!(:opt => "IPRI", :name => l(:default_priority_high), :position => 3)
160 Enumeration.create!(:opt => "IPRI", :name => l(:default_priority_urgent), :position => 4)
161 Enumeration.create!(:opt => "IPRI", :name => l(:default_priority_immediate), :position => 5)
162
163 Enumeration.create!(:opt => "ACTI", :name => l(:default_activity_design), :position => 1)
164 Enumeration.create!(:opt => "ACTI", :name => l(:default_activity_development), :position => 2)
165
166 true
167 end
168 end
169 end
170 end
171 end
@@ -1,168 +1,29
1 desc 'Load Redmine default configuration data'
1 desc 'Load Redmine default configuration data'
2
2
3 namespace :redmine do
3 namespace :redmine do
4 task :load_default_data => :environment do
4 task :load_default_data => :environment do
5 include GLoc
5 include GLoc
6 set_language_if_valid('en')
6 set_language_if_valid('en')
7 puts
7 puts
8
9 while true
10 print "Select language: "
11 print GLoc.valid_languages.sort {|x,y| x.to_s <=> y.to_s }.join(", ")
12 print " [#{GLoc.current_language}] "
13 lang = STDIN.gets.chomp!
14 break if lang.empty?
15 break if set_language_if_valid(lang)
16 puts "Unknown language!"
17 end
18
8
19 puts "===================================="
9 while true
20
10 print "Select language: "
21 begin
11 print GLoc.valid_languages.sort {|x,y| x.to_s <=> y.to_s }.join(", ")
22 # check that no data already exists
12 print " [#{GLoc.current_language}] "
23 if Role.find(:first, :conditions => {:builtin => 0})
13 lang = STDIN.gets.chomp!
24 raise "Some roles are already defined."
14 break if lang.empty?
25 end
15 break if set_language_if_valid(lang)
26 if Tracker.find(:first)
16 puts "Unknown language!"
27 raise "Some trackers are already defined."
17 end
28 end
29 if IssueStatus.find(:first)
30 raise "Some statuses are already defined."
31 end
32 if Enumeration.find(:first)
33 raise "Some enumerations are already defined."
34 end
35
18
36 puts "Loading default configuration data for language: #{current_language}"
19 puts "===================================="
37
20
38 # roles
21 begin
39 manager = Role.create :name => l(:default_role_manager),
22 Redmine::DefaultData::Loader.load(current_language)
40 :position => 1
23 puts "Default configuration data loaded."
41 manager.permissions = manager.setable_permissions.collect {|p| p.name}
24 rescue => error
42 manager.save
25 puts "Error: " + error
43
26 puts "Default configuration data was not loaded."
44 developper = Role.create :name => l(:default_role_developper),
27 end
45 :position => 2,
28 end
46 :permissions => [:manage_versions,
47 :manage_categories,
48 :add_issues,
49 :edit_issues,
50 :manage_issue_relations,
51 :add_issue_notes,
52 :change_issue_status,
53 :save_queries,
54 :view_gantt,
55 :view_calendar,
56 :log_time,
57 :view_time_entries,
58 :comment_news,
59 :view_documents,
60 :view_wiki_pages,
61 :edit_wiki_pages,
62 :delete_wiki_pages,
63 :add_messages,
64 :view_files,
65 :manage_files,
66 :browse_repository,
67 :view_changesets]
68
69 reporter = Role.create :name => l(:default_role_reporter),
70 :position => 3,
71 :permissions => [:add_issues,
72 :add_issue_notes,
73 :change_issue_status,
74 :save_queries,
75 :view_gantt,
76 :view_calendar,
77 :log_time,
78 :view_time_entries,
79 :comment_news,
80 :view_documents,
81 :view_wiki_pages,
82 :add_messages,
83 :view_files,
84 :browse_repository,
85 :view_changesets]
86
87 Role.non_member.update_attribute :permissions, [:add_issues,
88 :add_issue_notes,
89 :change_issue_status,
90 :save_queries,
91 :view_gantt,
92 :view_calendar,
93 :view_time_entries,
94 :comment_news,
95 :view_documents,
96 :view_wiki_pages,
97 :add_messages,
98 :view_files,
99 :browse_repository,
100 :view_changesets]
101
102 Role.anonymous.update_attribute :permissions, [:view_gantt,
103 :view_calendar,
104 :view_time_entries,
105 :view_documents,
106 :view_wiki_pages,
107 :view_files,
108 :browse_repository,
109 :view_changesets]
110
111 # trackers
112 Tracker.create(:name => l(:default_tracker_bug), :is_in_chlog => true, :is_in_roadmap => false, :position => 1)
113 Tracker.create(:name => l(:default_tracker_feature), :is_in_chlog => true, :is_in_roadmap => true, :position => 2)
114 Tracker.create(:name => l(:default_tracker_support), :is_in_chlog => false, :is_in_roadmap => false, :position => 3)
115
116 # issue statuses
117 new = IssueStatus.create(:name => l(:default_issue_status_new), :is_closed => false, :is_default => true, :position => 1)
118 assigned = IssueStatus.create(:name => l(:default_issue_status_assigned), :is_closed => false, :is_default => false, :position => 2)
119 resolved = IssueStatus.create(:name => l(:default_issue_status_resolved), :is_closed => false, :is_default => false, :position => 3)
120 feedback = IssueStatus.create(:name => l(:default_issue_status_feedback), :is_closed => false, :is_default => false, :position => 4)
121 closed = IssueStatus.create(:name => l(:default_issue_status_closed), :is_closed => true, :is_default => false, :position => 5)
122 rejected = IssueStatus.create(:name => l(:default_issue_status_rejected), :is_closed => true, :is_default => false, :position => 6)
123
124 # workflow
125 Tracker.find(:all).each { |t|
126 IssueStatus.find(:all).each { |os|
127 IssueStatus.find(:all).each { |ns|
128 Workflow.create(:tracker_id => t.id, :role_id => manager.id, :old_status_id => os.id, :new_status_id => ns.id) unless os == ns
129 }
130 }
131 }
132
133 Tracker.find(:all).each { |t|
134 [new, assigned, resolved, feedback].each { |os|
135 [assigned, resolved, feedback, closed].each { |ns|
136 Workflow.create(:tracker_id => t.id, :role_id => developper.id, :old_status_id => os.id, :new_status_id => ns.id) unless os == ns
137 }
138 }
139 }
140
141 Tracker.find(:all).each { |t|
142 [new, assigned, resolved, feedback].each { |os|
143 [closed].each { |ns|
144 Workflow.create(:tracker_id => t.id, :role_id => reporter.id, :old_status_id => os.id, :new_status_id => ns.id) unless os == ns
145 }
146 }
147 Workflow.create(:tracker_id => t.id, :role_id => reporter.id, :old_status_id => resolved.id, :new_status_id => feedback.id)
148 }
149
150 # enumerations
151 Enumeration.create(:opt => "DCAT", :name => l(:default_doc_category_user), :position => 1)
152 Enumeration.create(:opt => "DCAT", :name => l(:default_doc_category_tech), :position => 2)
153
154 Enumeration.create(:opt => "IPRI", :name => l(:default_priority_low), :position => 1)
155 Enumeration.create(:opt => "IPRI", :name => l(:default_priority_normal), :position => 2, :is_default => true)
156 Enumeration.create(:opt => "IPRI", :name => l(:default_priority_high), :position => 3)
157 Enumeration.create(:opt => "IPRI", :name => l(:default_priority_urgent), :position => 4)
158 Enumeration.create(:opt => "IPRI", :name => l(:default_priority_immediate), :position => 5)
159
160 Enumeration.create(:opt => "ACTI", :name => l(:default_activity_design), :position => 1)
161 Enumeration.create(:opt => "ACTI", :name => l(:default_activity_development), :position => 2)
162
163 rescue => error
164 puts "Error: " + error
165 puts "Default configuration data can't be loaded."
166 end
167 end
168 end
29 end
General Comments 0
You need to be logged in to leave comments. Login now