Rescue ArgumentError and give user feedback

This commit is contained in:
Matt-Yorkley
2018-11-07 17:12:19 +00:00
parent b5c6ecb45a
commit 9011f5d9a2
3 changed files with 16 additions and 3 deletions

View File

@@ -16,8 +16,7 @@ module Admin
@original_filename = params[:file].try(:original_filename)
@non_updatable_fields = ProductImport::EntryValidator.non_updatable_fields
check_file_errors @importer
check_spreadsheet_has_data @importer
return if contains_errors? @importer
@ams_data = ams_data
end
@@ -63,15 +62,19 @@ module Admin
true
end
def check_file_errors(importer)
def contains_errors?(importer)
if importer.errors.present?
redirect_to '/admin/product_import', notice: @importer.errors.full_messages.to_sentence
return true
end
check_spreadsheet_has_data importer
end
def check_spreadsheet_has_data(importer)
unless importer.item_count
redirect_to '/admin/product_import', notice: I18n.t(:product_import_no_data_in_spreadsheet_notice)
true
end
end

View File

@@ -226,6 +226,14 @@ module ProductImport
(2..@sheet.last_row).map do |i|
@sheet.row(i)
end
rescue ArgumentError => e
if e.message.include? 'invalid byte sequence'
errors.add(:importer, I18n.t('admin.product_import.model.encoding_error'))
else
errors.add(:importer, I18n.t('admin.product_import.model.unexpected_error',
error_message: e.message))
end
[]
end
def build_entries_in_range

View File

@@ -524,6 +524,8 @@ en:
inventory_no_permission: you do not have permission to create inventory for this producer
none_saved: did not save any products successfully
line_number: "Line %{number}:"
encoding_error: "Please check the language setting of your source file and ensure it is saved with UTF-8 encoding"
unexpected_error: "Product Import encountered an unexpected error whilst opening the file: %{error_message}"
index:
select_file: Select a spreadsheet to upload
spreadsheet: Spreadsheet