From 6225341737105a39562918a4b991b59cb6c435a8 Mon Sep 17 00:00:00 2001 From: Saurabh Choraria <sauc@odoo.com> Date: Mon, 7 Aug 2023 19:21:37 +0530 Subject: [PATCH] [FIX] base_import: raise ImportValidationError when invalid seperator selected When a user tries to import the CSV file with a different separator at that time, the values in mapper and rows_to_import are not correctly mapped. So the traceback will be generated. Steps to reproduce: 1. Click on import in the bank statement. 2. Select any CSV file for the bank statement line or can download and import this file https://drive.google.com/file/d/1lnScw4RN6T01pOkyNON8vvb3FQOPiy1O/view?usp=drive_link 3. Select any separator other than a comma. 4. Click on the test or Import button. 5. Error will occur. Error: IndexError: list index out of range. To solve this issue, a row's length is checked with the number of fields. sentry-4021250095 closes odoo/odoo#131153 Signed-off-by: Achraf Ben Azzouz (abz) <abz@odoo.com> --- addons/base_import/i18n/base_import.pot | 9 +++++++++ addons/base_import/models/base_import.py | 4 ++++ 2 files changed, 13 insertions(+) diff --git a/addons/base_import/i18n/base_import.pot b/addons/base_import/i18n/base_import.pot index 12537e2578df..f652a916dba7 100644 --- a/addons/base_import/i18n/base_import.pot +++ b/addons/base_import/i18n/base_import.pot @@ -293,6 +293,15 @@ msgstr "" msgid "Error Parsing Date [%s:L%d]: %s" msgstr "" +#. module: base_import +#: code:addons/base_import/models/base_import.py:0 +#, python-format +msgid "" +"Error while importing records: all rows should be of the same size, but the " +"title row has %d entries while the first row has %d. You may need to change " +"the separator character." +msgstr "" + #. module: base_import #. openerp-web #: code:addons/base_import/static/src/legacy/xml/base_import.xml:0 diff --git a/addons/base_import/models/base_import.py b/addons/base_import/models/base_import.py index b8a34b0ea609..5c3e26731f54 100644 --- a/addons/base_import/models/base_import.py +++ b/addons/base_import/models/base_import.py @@ -1039,6 +1039,10 @@ class Import(models.TransientModel): import_fields = [f for f in fields if f] _file_length, rows_to_import = self._read_file(options) + if len(rows_to_import[0]) != len(fields): + raise ImportValidationError( + _("Error while importing records: all rows should be of the same size, but the title row has %d entries while the first row has %d. You may need to change the separator character.", len(fields), len(rows_to_import[0])) + ) if options.get('has_headers'): rows_to_import = rows_to_import[1:] -- GitLab