Let user choose an issue of another project when updating a time entry (#16338).
git-svn-id: http://svn.redmine.org/redmine/trunk@12990 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
parent
273aa42900
commit
dd70327ce4
|
@ -77,6 +77,16 @@ class TimeEntry < ActiveRecord::Base
|
|||
end
|
||||
end
|
||||
|
||||
def safe_attributes=(attrs, user=User.current)
|
||||
attrs = super
|
||||
if !new_record? && issue && issue.project_id != project_id
|
||||
if user.allowed_to?(:log_time, issue.project)
|
||||
self.project_id = issue.project_id
|
||||
end
|
||||
end
|
||||
attrs
|
||||
end
|
||||
|
||||
def set_project_if_nil
|
||||
self.project = issue.project if issue && project.nil?
|
||||
end
|
||||
|
|
|
@ -289,6 +289,28 @@ class TimelogControllerTest < ActionController::TestCase
|
|||
assert_equal 2, entry.user_id
|
||||
end
|
||||
|
||||
def test_update_should_allow_to_change_issue_to_another_project
|
||||
entry = TimeEntry.generate!(:issue_id => 1)
|
||||
|
||||
@request.session[:user_id] = 1
|
||||
put :update, :id => entry.id, :time_entry => {:issue_id => '5'}
|
||||
assert_response 302
|
||||
entry.reload
|
||||
|
||||
assert_equal 5, entry.issue_id
|
||||
assert_equal 3, entry.project_id
|
||||
end
|
||||
|
||||
def test_update_should_not_allow_to_change_issue_to_an_invalid_project
|
||||
entry = TimeEntry.generate!(:issue_id => 1)
|
||||
Project.find(3).disable_module!(:time_tracking)
|
||||
|
||||
@request.session[:user_id] = 1
|
||||
put :update, :id => entry.id, :time_entry => {:issue_id => '5'}
|
||||
assert_response 200
|
||||
assert_include "Issue is invalid", assigns(:time_entry).errors.full_messages
|
||||
end
|
||||
|
||||
def test_get_bulk_edit
|
||||
@request.session[:user_id] = 2
|
||||
get :bulk_edit, :ids => [1, 2]
|
||||
|
|
Loading…
Reference in New Issue