1
0
mirror of https://github.com/meineerde/redmine.git synced 2026-01-31 11:37:14 +00:00

Time Entry Import fails to import custom fields with "User" format (#38254).

Patch by Jens Krämer.


git-svn-id: https://svn.redmine.org/redmine/trunk@22112 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
Go MAEDA 2023-02-16 00:31:29 +00:00
parent dc50caf1be
commit a3ca8ba677
2 changed files with 35 additions and 0 deletions

View File

@ -116,8 +116,10 @@ class TimeEntryImport < Import
if issue_id = row_value(row, 'issue_id').presence
attributes[:issue_id] = issue_id
object.project = issue_project(issue_id)
else
attributes[:project_id] = project.id
object.project = project
end
attributes['custom_field_values'] = object.custom_field_values.inject({}) do |h, v|
@ -137,4 +139,10 @@ class TimeEntryImport < Import
object.send(:safe_attributes=, attributes, user)
object
end
def issue_project(issue_id)
if issue_project_id = Issue.where(id: issue_id).limit(1).pick(:project_id)
(@projects_cache ||= {})[issue_project_id] ||= allowed_target_projects.find_by_id(issue_project_id)
end
end
end

View File

@ -187,6 +187,33 @@ class TimeEntryImportTest < ActiveSupport::TestCase
assert_equal 1, fourth.project_id
end
def test_imports_custom_field_with_user_format
cf = TimeEntryCustomField.create! name: 'User Field', field_format: 'user'
import = generate_import
import.settings = {
'separator' => ';', 'wrapper' => '"', 'encoding' => 'UTF-8',
'mapping' => {
'project_id' => '1',
'activity' => 'value:10',
'issue_id' => '1',
'spent_on' => '2',
'hours' => '3',
'comments' => '4',
'user' => '7',
"cf_#{cf.id}" => '7'
}
}
import.save!
first, second, third, fourth = new_records(TimeEntry, 4) {import.run}
jsmith = User.find_by_login 'jsmith'
dlopper = User.find_by_login 'dlopper'
assert_equal dlopper.id, third.custom_values.where(custom_field: cf.id).first.value.to_i
assert_equal jsmith.id, fourth.custom_values.where(custom_field: cf.id).first.value.to_i
assert_equal jsmith.id, first.custom_values.where(custom_field: cf.id).first.value.to_i
assert_equal jsmith.id, second.custom_values.where(custom_field: cf.id).first.value.to_i
end
protected
def generate_import(fixture_name='import_time_entries.csv')