##// END OF EJS Templates
Merged bug fixes r3402, r3405 to r3408 from trunk....
Jean-Philippe Lang -
r3317:0ef11ef4fe61
parent child
Show More
@@ -320,13 +320,9 class ProjectsController < ApplicationController
320 @issues_by_version = {}
320 @issues_by_version = {}
321 unless @selected_tracker_ids.empty?
321 unless @selected_tracker_ids.empty?
322 @versions.each do |version|
322 @versions.each do |version|
323 conditions = {:tracker_id => @selected_tracker_ids}
324 if !@project.versions.include?(version)
325 conditions.merge!(:project_id => project_ids)
326 end
327 issues = version.fixed_issues.visible.find(:all,
323 issues = version.fixed_issues.visible.find(:all,
328 :include => [:project, :status, :tracker, :priority],
324 :include => [:project, :status, :tracker, :priority],
329 :conditions => conditions,
325 :conditions => {:tracker_id => @selected_tracker_ids, :project_id => project_ids},
330 :order => "#{Project.table_name}.lft, #{Tracker.table_name}.position, #{Issue.table_name}.id")
326 :order => "#{Project.table_name}.lft, #{Tracker.table_name}.position, #{Issue.table_name}.id")
331 @issues_by_version[version] = issues
327 @issues_by_version[version] = issues
332 end
328 end
@@ -249,7 +249,7 class Project < ActiveRecord::Base
249 return @allowed_parents if @allowed_parents
249 return @allowed_parents if @allowed_parents
250 @allowed_parents = Project.find(:all, :conditions => Project.allowed_to_condition(User.current, :add_subprojects))
250 @allowed_parents = Project.find(:all, :conditions => Project.allowed_to_condition(User.current, :add_subprojects))
251 @allowed_parents = @allowed_parents - self_and_descendants
251 @allowed_parents = @allowed_parents - self_and_descendants
252 if User.current.allowed_to?(:add_project, nil, :global => true)
252 if User.current.allowed_to?(:add_project, nil, :global => true) || (!new_record? && parent.nil?)
253 @allowed_parents << nil
253 @allowed_parents << nil
254 end
254 end
255 unless parent.nil? || @allowed_parents.empty? || @allowed_parents.include?(parent)
255 unless parent.nil? || @allowed_parents.empty? || @allowed_parents.include?(parent)
@@ -159,11 +159,15 class Repository < ActiveRecord::Base
159 end
159 end
160 end
160 end
161
161
162 # fetch new changesets for all repositories
162 # Fetches new changesets for all repositories of active projects
163 # can be called periodically by an external script
163 # Can be called periodically by an external script
164 # eg. ruby script/runner "Repository.fetch_changesets"
164 # eg. ruby script/runner "Repository.fetch_changesets"
165 def self.fetch_changesets
165 def self.fetch_changesets
166 find(:all).each(&:fetch_changesets)
166 Project.active.has_module(:repository).find(:all, :include => :repository).each do |project|
167 if project.repository
168 project.repository.fetch_changesets
169 end
170 end
167 end
171 end
168
172
169 # scan changeset comments to find related and fixed issues for all repositories
173 # scan changeset comments to find related and fixed issues for all repositories
@@ -86,7 +86,6 top = headers_height + 8
86 <%= link_to_issue i %>
86 <%= link_to_issue i %>
87 <% else %>
87 <% else %>
88 <span class="icon icon-package">
88 <span class="icon icon-package">
89 <%= h("#{i.project} -") unless @project && @project == i.project %>
90 <%= link_to_version i %>
89 <%= link_to_version i %>
91 </span>
90 </span>
92 <% end %>
91 <% end %>
@@ -211,8 +210,7 top = headers_height + 10
211 %>
210 %>
212 <div style="top:<%= top %>px;left:<%= i_left %>px;width:15px;" class="task milestone">&nbsp;</div>
211 <div style="top:<%= top %>px;left:<%= i_left %>px;width:15px;" class="task milestone">&nbsp;</div>
213 <div style="top:<%= top %>px;left:<%= i_left + 12 %>px;background:#fff;" class="task">
212 <div style="top:<%= top %>px;left:<%= i_left + 12 %>px;background:#fff;" class="task">
214 <%= h("#{i.project} -") unless @project && @project == i.project %>
213 <strong><%= format_version_name i %></strong>
215 <strong><%=h i %></strong>
216 </div>
214 </div>
217 <% end %>
215 <% end %>
218 <% top = top + 20
216 <% top = top + 20
@@ -285,6 +285,48 class ProjectTest < ActiveSupport::TestCase
285 assert Project.new.allowed_parents.compact.empty?
285 assert Project.new.allowed_parents.compact.empty?
286 end
286 end
287
287
288 def test_allowed_parents_with_add_subprojects_permission
289 Role.find(1).remove_permission!(:add_project)
290 Role.find(1).add_permission!(:add_subprojects)
291 User.current = User.find(2)
292 # new project
293 assert !Project.new.allowed_parents.include?(nil)
294 assert Project.new.allowed_parents.include?(Project.find(1))
295 # existing root project
296 assert Project.find(1).allowed_parents.include?(nil)
297 # existing child
298 assert Project.find(3).allowed_parents.include?(Project.find(1))
299 assert !Project.find(3).allowed_parents.include?(nil)
300 end
301
302 def test_allowed_parents_with_add_project_permission
303 Role.find(1).add_permission!(:add_project)
304 Role.find(1).remove_permission!(:add_subprojects)
305 User.current = User.find(2)
306 # new project
307 assert Project.new.allowed_parents.include?(nil)
308 assert !Project.new.allowed_parents.include?(Project.find(1))
309 # existing root project
310 assert Project.find(1).allowed_parents.include?(nil)
311 # existing child
312 assert Project.find(3).allowed_parents.include?(Project.find(1))
313 assert Project.find(3).allowed_parents.include?(nil)
314 end
315
316 def test_allowed_parents_with_add_project_and_subprojects_permission
317 Role.find(1).add_permission!(:add_project)
318 Role.find(1).add_permission!(:add_subprojects)
319 User.current = User.find(2)
320 # new project
321 assert Project.new.allowed_parents.include?(nil)
322 assert Project.new.allowed_parents.include?(Project.find(1))
323 # existing root project
324 assert Project.find(1).allowed_parents.include?(nil)
325 # existing child
326 assert Project.find(3).allowed_parents.include?(Project.find(1))
327 assert Project.find(3).allowed_parents.include?(nil)
328 end
329
288 def test_users_by_role
330 def test_users_by_role
289 users_by_role = Project.find(1).users_by_role
331 users_by_role = Project.find(1).users_by_role
290 assert_kind_of Hash, users_by_role
332 assert_kind_of Hash, users_by_role
General Comments 0
You need to be logged in to leave comments. Login now