Fixed: parent project field doesn't include blank value when a member with 'add subproject' permission edits a child project (#4790).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@3405 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
parent
a8a49a26a1
commit
d02ddefff4
|
@ -249,7 +249,7 @@ class Project < ActiveRecord::Base
|
|||
return @allowed_parents if @allowed_parents
|
||||
@allowed_parents = Project.find(:all, :conditions => Project.allowed_to_condition(User.current, :add_subprojects))
|
||||
@allowed_parents = @allowed_parents - self_and_descendants
|
||||
if User.current.allowed_to?(:add_project, nil, :global => true)
|
||||
if User.current.allowed_to?(:add_project, nil, :global => true) || (!new_record? && parent.nil?)
|
||||
@allowed_parents << nil
|
||||
end
|
||||
unless parent.nil? || @allowed_parents.empty? || @allowed_parents.include?(parent)
|
||||
|
|
|
@ -285,6 +285,48 @@ class ProjectTest < ActiveSupport::TestCase
|
|||
assert Project.new.allowed_parents.compact.empty?
|
||||
end
|
||||
|
||||
def test_allowed_parents_with_add_subprojects_permission
|
||||
Role.find(1).remove_permission!(:add_project)
|
||||
Role.find(1).add_permission!(:add_subprojects)
|
||||
User.current = User.find(2)
|
||||
# new project
|
||||
assert !Project.new.allowed_parents.include?(nil)
|
||||
assert Project.new.allowed_parents.include?(Project.find(1))
|
||||
# existing root project
|
||||
assert Project.find(1).allowed_parents.include?(nil)
|
||||
# existing child
|
||||
assert Project.find(3).allowed_parents.include?(Project.find(1))
|
||||
assert !Project.find(3).allowed_parents.include?(nil)
|
||||
end
|
||||
|
||||
def test_allowed_parents_with_add_project_permission
|
||||
Role.find(1).add_permission!(:add_project)
|
||||
Role.find(1).remove_permission!(:add_subprojects)
|
||||
User.current = User.find(2)
|
||||
# new project
|
||||
assert Project.new.allowed_parents.include?(nil)
|
||||
assert !Project.new.allowed_parents.include?(Project.find(1))
|
||||
# existing root project
|
||||
assert Project.find(1).allowed_parents.include?(nil)
|
||||
# existing child
|
||||
assert Project.find(3).allowed_parents.include?(Project.find(1))
|
||||
assert Project.find(3).allowed_parents.include?(nil)
|
||||
end
|
||||
|
||||
def test_allowed_parents_with_add_project_and_subprojects_permission
|
||||
Role.find(1).add_permission!(:add_project)
|
||||
Role.find(1).add_permission!(:add_subprojects)
|
||||
User.current = User.find(2)
|
||||
# new project
|
||||
assert Project.new.allowed_parents.include?(nil)
|
||||
assert Project.new.allowed_parents.include?(Project.find(1))
|
||||
# existing root project
|
||||
assert Project.find(1).allowed_parents.include?(nil)
|
||||
# existing child
|
||||
assert Project.find(3).allowed_parents.include?(Project.find(1))
|
||||
assert Project.find(3).allowed_parents.include?(nil)
|
||||
end
|
||||
|
||||
def test_users_by_role
|
||||
users_by_role = Project.find(1).users_by_role
|
||||
assert_kind_of Hash, users_by_role
|
||||
|
|
Loading…
Reference in New Issue