Feature #31206 » RM_31206_tracker_change_avoid_to_set_blocked_status_for_user_changing_issues_SVN.diff
| app/models/issue.rb | ||
|---|---|---|
| 347 | 347 |
if tracker != tracker_was |
| 348 | 348 |
if status == tracker_was.try(:default_status) |
| 349 | 349 |
self.status = nil |
| 350 |
elsif status && tracker && !tracker.issue_status_ids.include?(status.id) |
|
| 350 |
elsif status && tracker && !tracker.issue_status_ids_for_roles(User.current.roles_for_project(project)).include?(status.id)
|
|
| 351 | 351 |
self.status = nil |
| 352 | 352 |
end |
| 353 | 353 |
reassign_custom_field_values |
| ... | ... | |
| 977 | 977 |
elsif tracker_id_changed? |
| 978 | 978 |
if Tracker.where(:id => tracker_id_was, :default_status_id => status_id_was).any? |
| 979 | 979 |
initial_status = default_status |
| 980 |
elsif tracker.issue_status_ids.include?(status_id_was) |
|
| 980 |
elsif tracker.issue_status_ids_for_roles(user.roles_for_project(project)).include?(status_id_was)
|
|
| 981 | 981 |
initial_status = IssueStatus.find_by_id(status_id_was) |
| 982 | 982 |
else |
| 983 | 983 |
initial_status = default_status |
| app/models/tracker.rb | ||
|---|---|---|
| 91 | 91 |
end |
| 92 | 92 |
end |
| 93 | 93 | |
| 94 |
def issue_status_ids_for_roles(roles) |
|
| 95 |
if roles.present? |
|
| 96 |
scope = IssueStatus. |
|
| 97 |
joins(:workflow_transitions_as_new_status). |
|
| 98 |
where(:workflows => {:role_id => roles.map(&:id), :tracker_id => self.id})
|
|
| 99 | ||
| 100 |
scope.distinct.pluck(:id).sort |
|
| 101 |
else |
|
| 102 |
[] |
|
| 103 |
end |
|
| 104 |
end |
|
| 105 | ||
| 94 | 106 |
def disabled_core_fields |
| 95 | 107 |
i = -1 |
| 96 | 108 |
@disabled_core_fields ||= CORE_FIELDS.select { i += 1; (fields_bits || 0) & (2 ** i) != 0}
|