mirror of
https://github.com/redmine/redmine.git
synced 2025-11-09 14:56:01 +01:00
CSV import does not keep the project it was clicked from (#21766).
Patch by Marius BALTEANU. git-svn-id: http://svn.redmine.org/redmine/trunk@19381 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
@@ -36,7 +36,7 @@ class ImportsController < ApplicationController
|
|||||||
@import = import_type.new
|
@import = import_type.new
|
||||||
@import.user = User.current
|
@import.user = User.current
|
||||||
@import.file = params[:file]
|
@import.file = params[:file]
|
||||||
@import.set_default_settings
|
@import.set_default_settings(:project_id => params[:project_id])
|
||||||
|
|
||||||
if @import.save
|
if @import.save
|
||||||
redirect_to import_settings_path(@import)
|
redirect_to import_settings_path(@import)
|
||||||
|
|||||||
@@ -62,7 +62,7 @@ class Import < ActiveRecord::Base
|
|||||||
Redmine::Utils.save_upload(arg, filepath)
|
Redmine::Utils.save_upload(arg, filepath)
|
||||||
end
|
end
|
||||||
|
|
||||||
def set_default_settings
|
def set_default_settings(options={})
|
||||||
separator = lu(user, :general_csv_separator)
|
separator = lu(user, :general_csv_separator)
|
||||||
if file_exists?
|
if file_exists?
|
||||||
begin
|
begin
|
||||||
@@ -84,6 +84,14 @@ class Import < ActiveRecord::Base
|
|||||||
'date_format' => date_format,
|
'date_format' => date_format,
|
||||||
'notifications' => '0'
|
'notifications' => '0'
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if options.key?(:project_id) && !options[:project_id].blank?
|
||||||
|
# Do not fail if project doesn't exist
|
||||||
|
begin
|
||||||
|
project = Project.find(options[:project_id])
|
||||||
|
self.settings.merge!('mapping' => {'project_id' => project.id})
|
||||||
|
rescue; end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def to_param
|
def to_param
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
<%= form_tag(imports_path, :multipart => true) do %>
|
<%= form_tag(imports_path, :multipart => true) do %>
|
||||||
<%= hidden_field_tag 'type', @import.type %>
|
<%= hidden_field_tag 'type', @import.type %>
|
||||||
|
<%= hidden_field_tag 'project_id', params[:project_id] %>
|
||||||
<fieldset class="box">
|
<fieldset class="box">
|
||||||
<legend><%= l(:label_select_file_to_import) %> (CSV)</legend>
|
<legend><%= l(:label_select_file_to_import) %> (CSV)</legend>
|
||||||
<p>
|
<p>
|
||||||
|
|||||||
@@ -11,7 +11,7 @@
|
|||||||
<% end %>
|
<% end %>
|
||||||
|
|
||||||
<% if User.current.allowed_to?(:import_issues, @project, :global => true) %>
|
<% if User.current.allowed_to?(:import_issues, @project, :global => true) %>
|
||||||
<%= link_to l(:button_import), new_issues_import_path %>
|
<%= link_to l(:button_import), new_issues_import_path(:project_id => @project) %>
|
||||||
<% end %>
|
<% end %>
|
||||||
<% end %>
|
<% end %>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
:class => 'icon icon-settings' if User.current.allowed_to?(:manage_project_activities, @project) %>
|
:class => 'icon icon-settings' if User.current.allowed_to?(:manage_project_activities, @project) %>
|
||||||
<%= actions_dropdown do %>
|
<%= actions_dropdown do %>
|
||||||
<% if User.current.allowed_to?(:import_time_entries, @project, :global => true) %>
|
<% if User.current.allowed_to?(:import_time_entries, @project, :global => true) %>
|
||||||
<%= link_to l(:button_import), new_time_entries_import_path %>
|
<%= link_to l(:button_import), new_time_entries_import_path(:project_id => @project) %>
|
||||||
<% end %>
|
<% end %>
|
||||||
<% end %>
|
<% end %>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -44,9 +44,10 @@ class ImportsControllerTest < Redmine::ControllerTest
|
|||||||
end
|
end
|
||||||
|
|
||||||
def test_new_should_display_the_upload_form
|
def test_new_should_display_the_upload_form
|
||||||
get :new, :params => { :type => 'IssueImport' }
|
get :new, :params => { :type => 'IssueImport', :project_id => 'subproject1' }
|
||||||
assert_response :success
|
assert_response :success
|
||||||
assert_select 'input[name=?]', 'file'
|
assert_select 'input[name=?]', 'file'
|
||||||
|
assert_select 'input[name=?][type=?][value=?]', 'project_id', 'hidden', 'subproject1'
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_create_should_save_the_file
|
def test_create_should_save_the_file
|
||||||
|
|||||||
@@ -266,4 +266,32 @@ class IssueImportTest < ActiveSupport::TestCase
|
|||||||
issues = new_records(Issue, 3) { import.run }
|
issues = new_records(Issue, 3) { import.run }
|
||||||
assert [nil, 3, system_version.id], issues.map(&:fixed_version_id)
|
assert [nil, 3, system_version.id], issues.map(&:fixed_version_id)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def test_set_default_settings_with_project_id
|
||||||
|
import = Import.new
|
||||||
|
import.set_default_settings(:project_id => 3)
|
||||||
|
|
||||||
|
assert_equal 3, import.mapping['project_id']
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_set_default_settings_with_project_identifier
|
||||||
|
import = Import.new
|
||||||
|
import.set_default_settings(:project_id => 'ecookbook')
|
||||||
|
|
||||||
|
assert_equal 1, import.mapping['project_id']
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_set_default_settings_without_project_id
|
||||||
|
import = Import.new
|
||||||
|
import.set_default_settings
|
||||||
|
|
||||||
|
assert_empty import.mapping
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_set_default_settings_with_invalid_project_should_not_fail
|
||||||
|
import = Import.new
|
||||||
|
import.set_default_settings(:project_id => 'abc')
|
||||||
|
|
||||||
|
assert_empty import.mapping
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
Reference in New Issue
Block a user