瀏覽代碼

Additional status transitions for assignees do not work if assigned to a group (#14447).

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12056 e93f8b46-1217-0410-a6f0-8f06a7374b81
tags/2.4.0
Jean-Philippe Lang 11 年之前
父節點
當前提交
474453d2b0
共有 2 個文件被更改,包括 29 次插入5 次删除
  1. 6
    2
      app/models/issue.rb
  2. 23
    3
      test/unit/issue_test.rb

+ 6
- 2
app/models/issue.rb 查看文件

@@ -756,12 +756,16 @@ class Issue < ActiveRecord::Base
initial_status = IssueStatus.find_by_id(status_id_was)
end
initial_status ||= status

initial_assigned_to_id = assigned_to_id_changed? ? assigned_to_id_was : assigned_to_id
assignee_transitions_allowed = initial_assigned_to_id.present? &&
(user.id == initial_assigned_to_id || user.group_ids.include?(initial_assigned_to_id))

statuses = initial_status.find_new_statuses_allowed_to(
user.admin ? Role.all : user.roles_for_project(project),
tracker,
author == user,
assigned_to_id_changed? ? assigned_to_id_was == user.id : assigned_to_id == user.id
assignee_transitions_allowed
)
statuses << initial_status unless statuses.empty?
statuses << IssueStatus.default if include_default

+ 23
- 3
test/unit/issue_test.rb 查看文件

@@ -509,9 +509,9 @@ class IssueTest < ActiveSupport::TestCase
WorkflowTransition.create!(:role_id => 1, :tracker_id => 1,
:old_status_id => 1, :new_status_id => 3,
:author => true, :assignee => false)
WorkflowTransition.create!(:role_id => 1, :tracker_id => 1, :old_status_id => 1,
:new_status_id => 4, :author => false,
:assignee => true)
WorkflowTransition.create!(:role_id => 1, :tracker_id => 1,
:old_status_id => 1, :new_status_id => 4,
:author => false, :assignee => true)
WorkflowTransition.create!(:role_id => 1, :tracker_id => 1,
:old_status_id => 1, :new_status_id => 5,
:author => true, :assignee => true)
@@ -537,6 +537,26 @@ class IssueTest < ActiveSupport::TestCase
:project_id => 1, :author => user,
:assigned_to => user)
assert_equal [1, 2, 3, 4, 5], issue.new_statuses_allowed_to(user).map(&:id)

group = Group.generate!
group.users << user
issue = Issue.generate!(:tracker => tracker, :status => status,
:project_id => 1, :author => user,
:assigned_to => group)
assert_equal [1, 2, 3, 4, 5], issue.new_statuses_allowed_to(user).map(&:id)
end

def test_new_statuses_allowed_to_should_consider_group_assignment
WorkflowTransition.delete_all
WorkflowTransition.create!(:role_id => 1, :tracker_id => 1,
:old_status_id => 1, :new_status_id => 4,
:author => false, :assignee => true)
user = User.find(2)
group = Group.generate!
group.users << user
issue = Issue.generate!(:author_id => 1, :assigned_to => group)
assert_include 4, issue.new_statuses_allowed_to(user).map(&:id)
end

def test_new_statuses_allowed_to_should_return_all_transitions_for_admin

Loading…
取消
儲存