mirror of
				https://github.com/redmine/redmine.git
				synced 2025-10-31 18:36:07 +01:00 
			
		
		
		
	When updating an issue, allow adding time entry on an issue that was visible for the previous assignee (#34856).
git-svn-id: http://svn.redmine.org/redmine/trunk@21081 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
		| @@ -119,6 +119,13 @@ class TimeEntry < ActiveRecord::Base | |||||||
|             self.project_id = issue.project_id |             self.project_id = issue.project_id | ||||||
|           end |           end | ||||||
|           @invalid_issue_id = nil |           @invalid_issue_id = nil | ||||||
|  |         elsif user.allowed_to?(:log_time, issue.project) && issue.assigned_to_id_changed? && issue.previous_assignee == User.current | ||||||
|  |           current_assignee = issue.assigned_to | ||||||
|  |           issue.assigned_to = issue.previous_assignee | ||||||
|  |           unless issue.visible?(user) | ||||||
|  |             @invalid_issue_id = issue_id | ||||||
|  |           end | ||||||
|  |           issue.assigned_to = current_assignee | ||||||
|         else |         else | ||||||
|           @invalid_issue_id = issue_id |           @invalid_issue_id = issue_id | ||||||
|         end |         end | ||||||
|   | |||||||
| @@ -6510,6 +6510,29 @@ class IssuesControllerTest < Redmine::ControllerTest | |||||||
|     assert_select 'input[name=?][value=?]', 'time_entry[comments]', 'this is my comment' |     assert_select 'input[name=?][value=?]', 'time_entry[comments]', 'this is my comment' | ||||||
|   end |   end | ||||||
|  |  | ||||||
|  |   def test_put_with_spent_time_when_assigned_to_of_private_issue_is_update_at_the_same_time | ||||||
|  |     @request.session[:user_id] = 3 | ||||||
|  |     Role.find(2).update! :issues_visibility => 'own' | ||||||
|  |     private_issue = Issue.find(3) | ||||||
|  |  | ||||||
|  |     assert_difference('TimeEntry.count', 1) do | ||||||
|  |       put( | ||||||
|  |         :update, | ||||||
|  |         params: { | ||||||
|  |           id: private_issue.id, | ||||||
|  |           issue: { assigned_to_id: nil }, | ||||||
|  |           time_entry: { | ||||||
|  |             comments: "add spent time", activity_id: TimeEntryActivity.first.id, hours: 1 | ||||||
|  |           } | ||||||
|  |         } | ||||||
|  |       ) | ||||||
|  |     end | ||||||
|  |     assert_select '#errorExplanation', {text: /Log time is invalid/, count: 0} | ||||||
|  |     assert_select '#errorExplanation', {text: /Issue is invalid/, count: 0} | ||||||
|  |     assert_redirected_to action: 'show', id: private_issue.id | ||||||
|  |     assert_not private_issue.reload.visible? | ||||||
|  |   end | ||||||
|  |  | ||||||
|   def test_put_update_should_allow_fixed_version_to_be_set_to_a_subproject |   def test_put_update_should_allow_fixed_version_to_be_set_to_a_subproject | ||||||
|     issue = Issue.find(2) |     issue = Issue.find(2) | ||||||
|     @request.session[:user_id] = 2 |     @request.session[:user_id] = 2 | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user