Defect #37635 » 0001-Consider-only-roles-with-either-add_issues-or-edit_i.patch
| app/models/issue.rb | ||
|---|---|---|
| 677 | 677 |
def workflow_rule_by_attribute(user=nil) |
| 678 | 678 |
return @workflow_rule_by_attribute if @workflow_rule_by_attribute && user.nil? |
| 679 | 679 | |
| 680 |
user_real = user || User.current |
|
| 681 |
roles = user_real.admin ? Role.all.to_a : user_real.roles_for_project(project) |
|
| 682 |
roles = roles.select(&:consider_workflow?) |
|
| 680 |
roles = roles_for_workflow(user || User.current) |
|
| 683 | 681 |
return {} if roles.empty?
|
| 684 | 682 | |
| 685 | 683 |
result = {}
|
| ... | ... | |
| 1066 | 1064 |
statuses = [] |
| 1067 | 1065 |
statuses += IssueStatus.new_statuses_allowed( |
| 1068 | 1066 |
initial_status, |
| 1069 |
user.admin ? Role.all.to_a : user.roles_for_project(project),
|
|
| 1067 |
roles_for_workflow(user),
|
|
| 1070 | 1068 |
tracker, |
| 1071 | 1069 |
author == user, |
| 1072 | 1070 |
assignee_transitions_allowed |
| ... | ... | |
| 2053 | 2051 |
Project |
| 2054 | 2052 |
end |
| 2055 | 2053 |
end |
| 2054 | ||
| 2055 |
def roles_for_workflow(user) |
|
| 2056 |
roles = user.admin ? Role.all.to_a : user.roles_for_project(project) |
|
| 2057 |
roles.select(&:consider_workflow?) |
|
| 2058 |
end |
|
| 2056 | 2059 |
end |
| test/unit/issue_test.rb | ||
|---|---|---|
| 859 | 859 |
assert_equal expected_statuses, issue.new_statuses_allowed_to(admin) |
| 860 | 860 |
end |
| 861 | 861 | |
| 862 |
def test_new_statuses_allowed_to_should_only_return_transitions_of_considered_workflows |
|
| 863 |
issue = Issue.find(9) |
|
| 864 | ||
| 865 |
WorkflowTransition.delete_all |
|
| 866 |
WorkflowTransition.create!(:role_id => 1, :tracker_id => 1, :old_status_id => 1, :new_status_id => 2) |
|
| 867 | ||
| 868 |
developer = Role.find(2) |
|
| 869 |
developer.remove_permission! :edit_issues |
|
| 870 |
developer.remove_permission! :add_issues |
|
| 871 |
assert !developer.consider_workflow? |
|
| 872 |
WorkflowTransition.create!(:role_id => 2, :tracker_id => 1, :old_status_id => 1, :new_status_id => 3) |
|
| 873 | ||
| 874 |
# status 3 is not displayed |
|
| 875 |
expected_statuses = IssueStatus.where(:id => [1, 2]) |
|
| 876 | ||
| 877 |
admin = User.find(1) |
|
| 878 |
assert_equal expected_statuses, issue.new_statuses_allowed_to(admin) |
|
| 879 | ||
| 880 |
author = User.find(8) |
|
| 881 |
assert_equal expected_statuses, issue.new_statuses_allowed_to(author) |
|
| 882 |
end |
|
| 883 | ||
| 862 | 884 |
def test_new_statuses_allowed_to_should_return_allowed_statuses_when_copying |
| 863 | 885 |
Tracker.find(1).generate_transitions! :role_id => 1, :clear => true, 0 => [1, 3] |
| 864 | 886 | |
- « Previous
- 1
- 2
- Next »