diff options
| author | Xavier Morel <xmo@openerp.com> | 2012-08-14 16:29:33 +0200 |
|---|---|---|
| committer | Xavier Morel <xmo@openerp.com> | 2012-08-14 16:29:33 +0200 |
| commit | 34f9664377ae837a7080b88a24c87b6ed88f88d0 (patch) | |
| tree | 72930ffbcebe5436ea1a0219bac9e6c6e8b548fd /addons | |
| parent | 8fa23a95186edd2f5bf6f223337d34f3a4e55e70 (diff) | |
[FIX] no field selected for import by the user
bzr revid: xmo@openerp.com-20120814142933-myng67f2cily6vfg
Diffstat (limited to 'addons')
| -rw-r--r-- | addons/base_import/models.py | 14 | ||||
| -rw-r--r-- | addons/base_import/tests/test_cases.py | 32 |
2 files changed, 44 insertions, 2 deletions
diff --git a/addons/base_import/models.py b/addons/base_import/models.py index a464649758d..2e44c686fd7 100644 --- a/addons/base_import/models.py +++ b/addons/base_import/models.py @@ -252,9 +252,12 @@ class ir_import(orm.TransientModel): :param list(str|bool): fields :returns: (data, fields) :rtype: (list(list(str)), list(str)) + :raises ValueError: in case the import data could not be converted """ # Get indices for non-empty fields indices = [index for index, field in enumerate(fields) if field] + if not indices: + raise ValueError(_("You must configure at least one field to import")) # If only one index, itemgetter will return an atom rather # than a 1-tuple if len(indices) == 1: mapper = lambda row: [row[indices[0]]] @@ -298,8 +301,15 @@ class ir_import(orm.TransientModel): cr.execute('SAVEPOINT import') (record,) = self.browse(cr, uid, [id], context=context) - data, import_fields = self._convert_import_data( - record, fields, options, context=context) + try: + data, import_fields = self._convert_import_data( + record, fields, options, context=context) + except ValueError, e: + return [{ + 'type': 'error', + 'message': str(e), + 'record': False, + }] try: _logger.info('importing %d rows...', len(data)) diff --git a/addons/base_import/tests/test_cases.py b/addons/base_import/tests/test_cases.py index 00230f9a3c0..e2b61c1928b 100644 --- a/addons/base_import/tests/test_cases.py +++ b/addons/base_import/tests/test_cases.py @@ -311,3 +311,35 @@ class test_convert_import_data(TransactionCase): ('foo', '2'), ('', '6'), ]) + + def test_nofield(self): + Import = self.registry('base_import.import') + + id = Import.create(self.cr, self.uid, { + 'res_model': 'base_import.tests.models.preview', + 'file': base64.b64encode('name,Some Value,Counter\n' + 'foo,1,2\n') + }) + + record = Import.browse(self.cr, self.uid, id) + self.assertRaises( + ValueError, + Import._convert_import_data, + record, [], + {'quote': '"', 'separator': ',', 'headers': True,}) + + def test_falsefields(self): + Import = self.registry('base_import.import') + + id = Import.create(self.cr, self.uid, { + 'res_model': 'base_import.tests.models.preview', + 'file': base64.b64encode('name,Some Value,Counter\n' + 'foo,1,2\n') + }) + + record = Import.browse(self.cr, self.uid, id) + self.assertRaises( + ValueError, + Import._convert_import_data, + record, [False, False, False], + {'quote': '"', 'separator': ',', 'headers': True,}) |
