Defect #21766 » 0002-Fix-CSV-import-does-not-keep-the-project-it-was-clic.patch
| app/controllers/imports_controller.rb | ||
|---|---|---|
| 36 | 36 |
@import = import_type.new |
| 37 | 37 |
@import.user = User.current |
| 38 | 38 |
@import.file = params[:file] |
| 39 |
@import.set_default_settings |
|
| 39 |
@import.set_default_settings(:project_id => params[:project_id])
|
|
| 40 | 40 | |
| 41 | 41 |
if @import.save |
| 42 | 42 |
redirect_to import_settings_path(@import) |
| app/models/import.rb | ||
|---|---|---|
| 62 | 62 |
Redmine::Utils.save_upload(arg, filepath) |
| 63 | 63 |
end |
| 64 | 64 | |
| 65 |
def set_default_settings |
|
| 65 |
def set_default_settings(options={})
|
|
| 66 | 66 |
separator = lu(user, :general_csv_separator) |
| 67 | 67 |
if file_exists? |
| 68 | 68 |
begin |
| ... | ... | |
| 84 | 84 |
'date_format' => date_format, |
| 85 | 85 |
'notifications' => '0' |
| 86 | 86 |
) |
| 87 | ||
| 88 |
if options.key?(:project_id) && !options[:project_id].blank? |
|
| 89 |
# Do not fail if project doesn't exist |
|
| 90 |
begin |
|
| 91 |
project = Project.find(options[:project_id]) |
|
| 92 |
self.settings.merge!('mapping' => {'project_id' => project.id})
|
|
| 93 |
rescue; end |
|
| 94 |
end |
|
| 87 | 95 |
end |
| 88 | 96 | |
| 89 | 97 |
def to_param |
| app/views/imports/new.html.erb | ||
|---|---|---|
| 2 | 2 | |
| 3 | 3 |
<%= form_tag(imports_path, :multipart => true) do %> |
| 4 | 4 |
<%= hidden_field_tag 'type', @import.type %> |
| 5 |
<%= hidden_field_tag 'project_id', params[:project_id] %> |
|
| 5 | 6 |
<fieldset class="box"> |
| 6 | 7 |
<legend><%= l(:label_select_file_to_import) %> (CSV)</legend> |
| 7 | 8 |
<p> |
| app/views/issues/index.html.erb | ||
|---|---|---|
| 11 | 11 |
<% end %> |
| 12 | 12 | |
| 13 | 13 |
<% if User.current.allowed_to?(:import_issues, @project, :global => true) %> |
| 14 |
<%= link_to l(:button_import), new_issues_import_path %> |
|
| 14 |
<%= link_to l(:button_import), new_issues_import_path(:project_id => @project) %>
|
|
| 15 | 15 |
<% end %> |
| 16 | 16 |
<% end %> |
| 17 | 17 |
</div> |
| app/views/timelog/index.html.erb | ||
|---|---|---|
| 7 | 7 |
:class => 'icon icon-settings' if User.current.allowed_to?(:manage_project_activities, @project) %> |
| 8 | 8 |
<%= actions_dropdown do %> |
| 9 | 9 |
<% if User.current.allowed_to?(:import_time_entries, @project, :global => true) %> |
| 10 |
<%= link_to l(:button_import), new_time_entries_import_path %> |
|
| 10 |
<%= link_to l(:button_import), new_time_entries_import_path(:project_id => @project) %>
|
|
| 11 | 11 |
<% end %> |
| 12 | 12 |
<% end %> |
| 13 | 13 |
</div> |
| test/functional/imports_controller_test.rb | ||
|---|---|---|
| 44 | 44 |
end |
| 45 | 45 | |
| 46 | 46 |
def test_new_should_display_the_upload_form |
| 47 |
get :new, :params => { :type => 'IssueImport' }
|
|
| 47 |
get :new, :params => { :type => 'IssueImport', :project_id => 'subproject1' }
|
|
| 48 | 48 |
assert_response :success |
| 49 | 49 |
assert_select 'input[name=?]', 'file' |
| 50 |
assert_select 'input[name=?][type=?][value=?]', 'project_id', 'hidden', 'subproject1' |
|
| 50 | 51 |
end |
| 51 | 52 | |
| 52 | 53 |
def test_create_should_save_the_file |
| test/unit/issue_import_test.rb | ||
|---|---|---|
| 266 | 266 |
issues = new_records(Issue, 3) { import.run }
|
| 267 | 267 |
assert [nil, 3, system_version.id], issues.map(&:fixed_version_id) |
| 268 | 268 |
end |
| 269 | ||
| 270 |
def test_set_default_settings_with_project_id |
|
| 271 |
import = Import.new |
|
| 272 |
import.set_default_settings(:project_id => 3) |
|
| 273 | ||
| 274 |
assert_equal 3, import.mapping['project_id'] |
|
| 275 |
end |
|
| 276 | ||
| 277 |
def test_set_default_settings_with_project_identifier |
|
| 278 |
import = Import.new |
|
| 279 |
import.set_default_settings(:project_id => 'ecookbook') |
|
| 280 | ||
| 281 |
assert_equal 1, import.mapping['project_id'] |
|
| 282 |
end |
|
| 283 | ||
| 284 |
def test_set_default_settings_without_project_id |
|
| 285 |
import = Import.new |
|
| 286 |
import.set_default_settings |
|
| 287 | ||
| 288 |
assert_empty import.mapping |
|
| 289 |
end |
|
| 290 | ||
| 291 |
def test_set_default_settings_with_invalid_project_should_not_fail |
|
| 292 |
import = Import.new |
|
| 293 |
import.set_default_settings(:project_id => 'abc') |
|
| 294 | ||
| 295 |
assert_empty import.mapping |
|
| 296 |
end |
|
| 269 | 297 |
end |