mirror of
https://github.com/OCA/account-reconcile.git
synced 2025-01-20 12:27:39 +02:00
[IMP] return error messages
This commit is contained in:
@@ -17,8 +17,8 @@
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
from openerp.tools.translate import _
|
||||
from openerp.osv.osv import except_osv
|
||||
import tempfile
|
||||
import datetime
|
||||
from parser import BankStatementImportParser
|
||||
@@ -34,7 +34,8 @@ class FileParser(BankStatementImportParser):
|
||||
Generic abstract class for defining parser for .csv or .xls file format.
|
||||
"""
|
||||
|
||||
def __init__(self, parse_name, keys_to_validate=[], ftype='csv', convertion_dict=None, header=None, *args, **kwargs):
|
||||
def __init__(self, parse_name, keys_to_validate=[], ftype='csv', convertion_dict=None,
|
||||
header=None, *args, **kwargs):
|
||||
"""
|
||||
:param char: parse_name : The name of the parser
|
||||
:param list: keys_to_validate : contain the key that need to be present in the file
|
||||
@@ -54,7 +55,8 @@ class FileParser(BankStatementImportParser):
|
||||
if ftype in ('csv', 'xls'):
|
||||
self.ftype = ftype
|
||||
else:
|
||||
raise Exception(_('Invalide file type %s. please use csv or xls') % (ftype))
|
||||
raise except_osv(_('User Error'),
|
||||
_('Invalide file type %s. please use csv or xls') % (ftype))
|
||||
self.keys_to_validate = keys_to_validate
|
||||
self.convertion_dict = convertion_dict
|
||||
self.fieldnames = header
|
||||
@@ -99,7 +101,8 @@ class FileParser(BankStatementImportParser):
|
||||
parsed_cols = self.result_row_list[0].keys()
|
||||
for col in self.keys_to_validate:
|
||||
if col not in parsed_cols:
|
||||
raise Exception(_('Column %s not present in file') % (col))
|
||||
raise except_osv(_('Invalid data'),
|
||||
_('Column %s not present in file') % (col))
|
||||
return True
|
||||
|
||||
def _post(self, *args, **kwargs):
|
||||
@@ -149,11 +152,27 @@ class FileParser(BankStatementImportParser):
|
||||
for line in result_set:
|
||||
for rule in conversion_rules:
|
||||
if conversion_rules[rule] == datetime.datetime:
|
||||
date_string = line[rule].split(' ')[0]
|
||||
line[rule] = datetime.datetime.strptime(date_string,
|
||||
'%Y-%m-%d')
|
||||
try:
|
||||
date_string = line[rule].split(' ')[0]
|
||||
line[rule] = datetime.datetime.strptime(date_string,
|
||||
'%Y-%m-%d')
|
||||
except ValueError, err:
|
||||
raise except_osv(_('Invalid data'),
|
||||
_("Date format is not valid."
|
||||
" It should be YYYY-MM-DD for column: %s"
|
||||
" value: %s"
|
||||
" \n line: %s \n Detail: %s") % (rule, line[rule],
|
||||
line, repr(err)))
|
||||
else:
|
||||
line[rule] = conversion_rules[rule](line[rule])
|
||||
try:
|
||||
line[rule] = conversion_rules[rule](line[rule])
|
||||
except Exception, err:
|
||||
raise except_osv(_('Invalid data'),
|
||||
_("Value %s of column % is not valid."
|
||||
"\n line: %s "
|
||||
"\n Detail: %s") % (line[rule], rule,
|
||||
line, repr(err)))
|
||||
|
||||
return result_set
|
||||
|
||||
def _from_xls(self, result_set, conversion_rules):
|
||||
@@ -164,10 +183,26 @@ class FileParser(BankStatementImportParser):
|
||||
for line in result_set:
|
||||
for rule in conversion_rules:
|
||||
if conversion_rules[rule] == datetime.datetime:
|
||||
t_tuple = xlrd.xldate_as_tuple(line[rule], self._datemode)
|
||||
line[rule] = datetime.datetime(*t_tuple)
|
||||
try:
|
||||
t_tuple = xlrd.xldate_as_tuple(line[rule], self._datemode)
|
||||
line[rule] = datetime.datetime(*t_tuple)
|
||||
except Exception, err:
|
||||
raise except_osv(_('Invalid data'),
|
||||
_("Date format is not valid. You should modify the cell formatting"
|
||||
" of your column to be of type date."
|
||||
" For column: %s"
|
||||
" value: %s"
|
||||
" \n line: %s \n Detail: %s") % (rule, line[rule],
|
||||
line, repr(err)))
|
||||
else:
|
||||
line[rule] = conversion_rules[rule](line[rule])
|
||||
try:
|
||||
line[rule] = conversion_rules[rule](line[rule])
|
||||
except Exception, err:
|
||||
raise except_osv(_('Invalid data'),
|
||||
_("Value %s of column % is not valid."
|
||||
"\n line: %s "
|
||||
"\n Detail: %s") % (line[rule], rule,
|
||||
line, repr(err)))
|
||||
return result_set
|
||||
|
||||
def _cast_rows(self, *args, **kwargs):
|
||||
|
||||
Reference in New Issue
Block a user