mirror of
https://github.com/meineerde/redmine.git
synced 2026-01-31 19:47:14 +00:00
Auto-detection of field wrapper type when importing CSV file (#39511).
Patch by Go MAEDA. git-svn-id: https://svn.redmine.org/redmine/trunk@22440 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
parent
57ee20d92f
commit
fa7c481028
@ -65,12 +65,14 @@ class Import < ActiveRecord::Base
|
||||
|
||||
def set_default_settings(options={})
|
||||
separator = lu(user, :general_csv_separator)
|
||||
wrapper = '"'
|
||||
encoding = lu(user, :general_csv_encoding)
|
||||
if file_exists?
|
||||
begin
|
||||
content = File.read(filepath, 256)
|
||||
|
||||
separator = [',', ';'].max_by {|sep| content.count(sep)}
|
||||
wrapper = ['"', "'"].max_by {|quote_char| content.count(quote_char)}
|
||||
|
||||
guessed_encoding = Redmine::CodesetUtil.guess_encoding(content)
|
||||
encoding =
|
||||
@ -81,7 +83,6 @@ class Import < ActiveRecord::Base
|
||||
rescue => e
|
||||
end
|
||||
end
|
||||
wrapper = '"'
|
||||
|
||||
date_format = lu(user, "date.formats.default", :default => "foo")
|
||||
date_format = DATE_FORMATS.first unless DATE_FORMATS.include?(date_format)
|
||||
|
||||
@ -463,4 +463,19 @@ class IssueImportTest < ActiveSupport::TestCase
|
||||
assert_equal 'CP932', guessed_encoding
|
||||
end
|
||||
end
|
||||
|
||||
def test_set_default_settings_should_detect_field_wrapper
|
||||
to_test = {
|
||||
'import_issues.csv' => '"',
|
||||
'import_issues_single_quotation.csv' => "'",
|
||||
# Use '"' as a wrapper for CSV file with no wrappers
|
||||
'import_dates.csv' => '"',
|
||||
}
|
||||
|
||||
to_test.each do |file, expected|
|
||||
import = generate_import(file)
|
||||
import.set_default_settings
|
||||
assert_equal expected, import.settings['wrapper']
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user