1
0
mirror of https://github.com/meineerde/redmine.git synced 2026-02-04 08:03:23 +00:00

Reject CSV file without data row when importing (#35137).

Patch by Yuichi HARADA.


git-svn-id: http://svn.redmine.org/redmine/trunk@21041 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
Go MAEDA 2021-06-20 13:25:10 +00:00
parent ffc9101e23
commit 685bfdd8ff
4 changed files with 28 additions and 1 deletions

View File

@ -50,7 +50,11 @@ class ImportsController < ApplicationController
def settings
if request.post? && @import.parse_file
redirect_to import_mapping_path(@import)
if @import.total_items == 0
flash.now[:error] = l(:error_no_data_in_file)
else
redirect_to import_mapping_path(@import)
end
end
rescue CSV::MalformedCSVError, EncodingError => e

View File

@ -223,6 +223,7 @@ en:
error_invalid_file_encoding: "The file is not a valid %{encoding} encoded file"
error_invalid_csv_file_or_settings: "The file is not a CSV file or does not match the settings below (%{value})"
error_can_not_read_import_file: "An error occurred while reading the file to import"
error_no_data_in_file: "The file does not contain any data"
error_attachment_extension_not_allowed: "Attachment extension %{extension} is not allowed"
error_ldap_bind_credentials: "Invalid LDAP Account/Password"
error_no_tracker_allowed_for_new_issue_in_project: "The project doesn't have any trackers for which you can create an issue"

View File

@ -0,0 +1 @@
priority;Subject;start_date;parent;private;progress;custom;"target version";category;user;estimated_hours;tracker;status;database;cf_6;
1 priority Subject start_date parent private progress custom target version category user estimated_hours tracker status database cf_6

View File

@ -180,6 +180,27 @@ class ImportsControllerTest < Redmine::ControllerTest
assert_select 'div#flash_error', /The file is not a CSV file or does not match the settings below \([[:print:]]+\)/
end
def test_post_settings_with_no_data_row_should_display_error
import = generate_import('import_issues_no_data_row.csv')
post(
:settings,
:params => {
:id => import.to_param,
:import_settings => {
:separator => ';',
:wrapper => '"',
:encoding => 'ISO-8859-1'
}
}
)
assert_response 200
import.reload
assert_equal 0, import.total_items
assert_select 'div#flash_error', /The file does not contain any data/
end
def test_get_mapping_should_display_mapping_form
import = generate_import('import_iso8859-1.csv')
import.settings = {'separator' => ";", 'wrapper' => '"', 'encoding' => "ISO-8859-1"}