Mercurial > hg > soundsoftware-site
comparison lib/redmine/default_data/.svn/text-base/loader.rb.svn-base @ 0:513646585e45
* Import Redmine trunk SVN rev 3859
author | Chris Cannam |
---|---|
date | Fri, 23 Jul 2010 15:52:44 +0100 |
parents | |
children | cbce1fd3b1b7 |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:513646585e45 |
---|---|
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 Redmine::I18n | |
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 Role.transaction do | |
42 # Roles | |
43 manager = Role.create! :name => l(:default_role_manager), | |
44 :position => 1 | |
45 manager.permissions = manager.setable_permissions.collect {|p| p.name} | |
46 manager.save! | |
47 | |
48 developer = Role.create! :name => l(:default_role_developer), | |
49 :position => 2, | |
50 :permissions => [:manage_versions, | |
51 :manage_categories, | |
52 :view_issues, | |
53 :add_issues, | |
54 :edit_issues, | |
55 :manage_issue_relations, | |
56 :manage_subtasks, | |
57 :add_issue_notes, | |
58 :save_queries, | |
59 :view_gantt, | |
60 :view_calendar, | |
61 :log_time, | |
62 :view_time_entries, | |
63 :comment_news, | |
64 :view_documents, | |
65 :view_wiki_pages, | |
66 :view_wiki_edits, | |
67 :edit_wiki_pages, | |
68 :delete_wiki_pages, | |
69 :add_messages, | |
70 :edit_own_messages, | |
71 :view_files, | |
72 :manage_files, | |
73 :browse_repository, | |
74 :view_changesets, | |
75 :commit_access] | |
76 | |
77 reporter = Role.create! :name => l(:default_role_reporter), | |
78 :position => 3, | |
79 :permissions => [:view_issues, | |
80 :add_issues, | |
81 :add_issue_notes, | |
82 :save_queries, | |
83 :view_gantt, | |
84 :view_calendar, | |
85 :log_time, | |
86 :view_time_entries, | |
87 :comment_news, | |
88 :view_documents, | |
89 :view_wiki_pages, | |
90 :view_wiki_edits, | |
91 :add_messages, | |
92 :edit_own_messages, | |
93 :view_files, | |
94 :browse_repository, | |
95 :view_changesets] | |
96 | |
97 Role.non_member.update_attribute :permissions, [:view_issues, | |
98 :add_issues, | |
99 :add_issue_notes, | |
100 :save_queries, | |
101 :view_gantt, | |
102 :view_calendar, | |
103 :view_time_entries, | |
104 :comment_news, | |
105 :view_documents, | |
106 :view_wiki_pages, | |
107 :view_wiki_edits, | |
108 :add_messages, | |
109 :view_files, | |
110 :browse_repository, | |
111 :view_changesets] | |
112 | |
113 Role.anonymous.update_attribute :permissions, [:view_issues, | |
114 :view_gantt, | |
115 :view_calendar, | |
116 :view_time_entries, | |
117 :view_documents, | |
118 :view_wiki_pages, | |
119 :view_wiki_edits, | |
120 :view_files, | |
121 :browse_repository, | |
122 :view_changesets] | |
123 | |
124 # Trackers | |
125 Tracker.create!(:name => l(:default_tracker_bug), :is_in_chlog => true, :is_in_roadmap => false, :position => 1) | |
126 Tracker.create!(:name => l(:default_tracker_feature), :is_in_chlog => true, :is_in_roadmap => true, :position => 2) | |
127 Tracker.create!(:name => l(:default_tracker_support), :is_in_chlog => false, :is_in_roadmap => false, :position => 3) | |
128 | |
129 # Issue statuses | |
130 new = IssueStatus.create!(:name => l(:default_issue_status_new), :is_closed => false, :is_default => true, :position => 1) | |
131 in_progress = IssueStatus.create!(:name => l(:default_issue_status_in_progress), :is_closed => false, :is_default => false, :position => 2) | |
132 resolved = IssueStatus.create!(:name => l(:default_issue_status_resolved), :is_closed => false, :is_default => false, :position => 3) | |
133 feedback = IssueStatus.create!(:name => l(:default_issue_status_feedback), :is_closed => false, :is_default => false, :position => 4) | |
134 closed = IssueStatus.create!(:name => l(:default_issue_status_closed), :is_closed => true, :is_default => false, :position => 5) | |
135 rejected = IssueStatus.create!(:name => l(:default_issue_status_rejected), :is_closed => true, :is_default => false, :position => 6) | |
136 | |
137 # Workflow | |
138 Tracker.find(:all).each { |t| | |
139 IssueStatus.find(:all).each { |os| | |
140 IssueStatus.find(:all).each { |ns| | |
141 Workflow.create!(:tracker_id => t.id, :role_id => manager.id, :old_status_id => os.id, :new_status_id => ns.id) unless os == ns | |
142 } | |
143 } | |
144 } | |
145 | |
146 Tracker.find(:all).each { |t| | |
147 [new, in_progress, resolved, feedback].each { |os| | |
148 [in_progress, resolved, feedback, closed].each { |ns| | |
149 Workflow.create!(:tracker_id => t.id, :role_id => developer.id, :old_status_id => os.id, :new_status_id => ns.id) unless os == ns | |
150 } | |
151 } | |
152 } | |
153 | |
154 Tracker.find(:all).each { |t| | |
155 [new, in_progress, resolved, feedback].each { |os| | |
156 [closed].each { |ns| | |
157 Workflow.create!(:tracker_id => t.id, :role_id => reporter.id, :old_status_id => os.id, :new_status_id => ns.id) unless os == ns | |
158 } | |
159 } | |
160 Workflow.create!(:tracker_id => t.id, :role_id => reporter.id, :old_status_id => resolved.id, :new_status_id => feedback.id) | |
161 } | |
162 | |
163 # Enumerations | |
164 DocumentCategory.create!(:name => l(:default_doc_category_user), :position => 1) | |
165 DocumentCategory.create!(:name => l(:default_doc_category_tech), :position => 2) | |
166 | |
167 IssuePriority.create!(:name => l(:default_priority_low), :position => 1) | |
168 IssuePriority.create!(:name => l(:default_priority_normal), :position => 2, :is_default => true) | |
169 IssuePriority.create!(:name => l(:default_priority_high), :position => 3) | |
170 IssuePriority.create!(:name => l(:default_priority_urgent), :position => 4) | |
171 IssuePriority.create!(:name => l(:default_priority_immediate), :position => 5) | |
172 | |
173 TimeEntryActivity.create!(:name => l(:default_activity_design), :position => 1) | |
174 TimeEntryActivity.create!(:name => l(:default_activity_development), :position => 2) | |
175 end | |
176 true | |
177 end | |
178 end | |
179 end | |
180 end | |
181 end |