[IMP] return error messages

This commit is contained in:
unknown
2013-02-15 12:02:14 +01:00
parent 798e9cc38e
commit ee63c3e133
2 changed files with 53 additions and 13 deletions

View File

@@ -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):