[FIX] Don't raise unnecessarily

This commit is contained in:
Stefan Rijnhart
2014-02-28 13:37:39 +01:00
committed by Guewen Baconnier
3 changed files with 39 additions and 47 deletions

View File

@@ -681,14 +681,10 @@ class res_partner_bank(orm.Model):
if term[0].lower() == 'acc_number' and term[1] in ('=', '=='):
iban = sepa.IBAN(term[2])
if iban.valid:
# Some countries can't convert to BBAN
try:
bban = iban.localized_BBAN
# Prevent empty search filters
if bban:
extra_term = ('acc_number_domestic', term[1], bban)
except:
pass
bban = iban.localized_BBAN
# Prevent empty search filters
if bban:
extra_term = ('acc_number_domestic', term[1], bban)
if extra_term:
return ['|', term, extra_term]
return [term]
@@ -763,10 +759,7 @@ class res_partner_bank(orm.Model):
res[record.id] = False
else:
iban_acc = sepa.IBAN(record.acc_number)
try:
res[record.id] = iban_acc.localized_BBAN
except NotImplementedError:
res[record.id] = False
res[record.id] = iban_acc.localized_BBAN
return res
def onchange_acc_number(
@@ -854,43 +847,43 @@ class res_partner_bank(orm.Model):
cr, uid, country_ids[0], context=context)
values['country_id'] = country_ids[0]
if country and country.code in sepa.IBAN.countries:
try:
info = sepa.online.account_info(country.code, acc_number)
if info:
iban_acc = sepa.IBAN(info.iban)
if iban_acc.valid:
values['acc_number_domestic'] = iban_acc.localized_BBAN
values['acc_number'] = unicode(iban_acc)
values['state'] = 'iban'
bank_id, country_id = get_or_create_bank(
self.pool, cr, uid,
info.bic or iban_acc.BIC_searchkey,
name = info.bank
)
if country_id:
values['country_id'] = country_id
values['bank'] = bank_id or False
if info.bic:
values['bank_bic'] = info.bic
else:
info = None
if info is None:
result.update(warning(
info = sepa.online.account_info(country.code, acc_number)
if info:
iban_acc = sepa.IBAN(info.iban)
if iban_acc.valid:
values['acc_number_domestic'] = iban_acc.localized_BBAN
values['acc_number'] = unicode(iban_acc)
values['state'] = 'iban'
bank_id, country_id = get_or_create_bank(
self.pool, cr, uid,
info.bic or iban_acc.BIC_searchkey,
name = info.bank
)
if country_id:
values['country_id'] = country_id
values['bank'] = bank_id or False
if info.bic:
values['bank_bic'] = info.bic
else:
info = None
if info is None:
result.update(warning(
_('Invalid data'),
_('The account number appears to be invalid for %s')
% country.name
))
except NotImplementedError:
))
if info is False:
if country.code in sepa.IBAN.countries:
acc_number_fmt = sepa.BBAN(acc_number, country.code)
if acc_number_fmt.valid:
values['acc_number_domestic'] = str(acc_number_fmt)
else:
result.update(warning(
_('Invalid format'),
_('The account number has the wrong format for %s')
% country.name
))
_('Invalid format'),
_('The account number has the wrong format '
'for %(country)s')
% {'country': country.name}
))
return result
def onchange_iban(

View File

@@ -408,10 +408,9 @@ class IBAN(str):
Localized format of local or Basic Bank Account Number, aka BBAN
'''
if self.countrycode == 'TR':
raise NotImplementedError, (
'The Turkish BBAN requires information that is not in the '
'IBAN number.'
)
# The Turkish BBAN requires information that is not in the
# IBAN number.
return False
return self.BBAN_format.BBAN(self)
@property

View File

@@ -157,13 +157,13 @@ def account_info(iso, bank_acc):
'''
Consult the online database for this country to obtain its
corresponding IBAN/BIC number and other info available.
Raise NotImplemented when no information service could be found.
Returns None when a service was found but something went wrong.
Returns a dictionary (struct) of information when found.
Returns a dictionary (struct) of information when found, or
False when not implemented.
'''
if iso in _account_info:
return _account_info[iso](bank_acc)
raise NotImplementedError()
return False
bic_re = re.compile("[^']+'([^']*)'.*")
SWIFTlink = 'http://www.swift.com/bsl/freequery.do'