From 8d04e22703858fc23e6d64166c94f944d7fe0d0f Mon Sep 17 00:00:00 2001 From: Romain Bignon Date: Sat, 19 Oct 2013 12:07:10 +0200 Subject: [PATCH] support accounts with empty balance --- modules/banquepopulaire/browser.py | 3 +++ modules/banquepopulaire/pages.py | 18 +++++++++++------- 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/modules/banquepopulaire/browser.py b/modules/banquepopulaire/browser.py index ae41acf9..184e2b5c 100644 --- a/modules/banquepopulaire/browser.py +++ b/modules/banquepopulaire/browser.py @@ -112,6 +112,9 @@ class BanquePopulaire(BaseBrowser): if not self.is_on_page(AccountsPage): account = self.get_account(account.id) + if account._params is None: + return + self.location('/cyber/internet/ContinueTask.do', urllib.urlencode(account._params)) self.token = self.page.get_token() diff --git a/modules/banquepopulaire/pages.py b/modules/banquepopulaire/pages.py index 7800002e..9c2d2bcf 100644 --- a/modules/banquepopulaire/pages.py +++ b/modules/banquepopulaire/pages.py @@ -246,16 +246,20 @@ class AccountsPage(BasePage): account.label = u' '.join([u''.join([txt.strip() for txt in tds[1].itertext()]), u''.join([txt.strip() for txt in tds[2].itertext()])]).strip() account.type = account_type - balance = u''.join([txt.strip() for txt in tds[3].itertext()]) - if balance == u'': - balance = '0.0' - account.balance = Decimal(FrenchTransaction.clean_amount(balance)) + + balance = FrenchTransaction.clean_amount(u''.join([txt.strip() for txt in tds[3].itertext()])) + account.balance = Decimal(balance or '0.0') account.currency = account.get_currency(balance) if account.type == account.TYPE_LOAN: account.balance = - abs(account.balance) - account._params = params.copy() - account._params['dialogActionPerformed'] = 'SOLDE' - account._params['attribute($SEL_$%s)' % tr.attrib['id'].split('_')[0]] = tr.attrib['id'].split('_', 1)[1] + + if balance == u'': + # There is no detail + account._params = None + else: + account._params = params.copy() + account._params['dialogActionPerformed'] = 'SOLDE' + account._params['attribute($SEL_$%s)' % tr.attrib['id'].split('_')[0]] = tr.attrib['id'].split('_', 1)[1] yield account return