diff --git a/modules/bnppere/browser.py b/modules/bnppere/browser.py index b1c62a34c0c779c0dd11c4223b74a7a9539fce93..db3bfe14f859c326f53788f3debf006b08fba562 100644 --- a/modules/bnppere/browser.py +++ b/modules/bnppere/browser.py @@ -19,10 +19,12 @@ from __future__ import unicode_literals +import requests + from woob.browser import AbstractBrowser, LoginBrowser, URL, need_login from woob.capabilities.bank import Account from woob.capabilities.wealth import Per -from woob.exceptions import BrowserIncorrectPassword, ActionNeeded +from woob.exceptions import BrowserIncorrectPassword, ActionNeeded, BrowserUnavailable from .pages import ( LoginPage, LoginStep2Page, LoginErrorPage, ProfilePage, @@ -73,7 +75,18 @@ def do_login(self): raise AssertionError('Unknown error on LoginErrorPage: %s.' % message) assert self.login_second_step.is_here(), 'Should be on the page of the second step of login' - self.page.send_form() + + # for some users the website is unavailable + # we are in a redirection loop on '/Account/LogOff' + try: + max_redirects = self.session.max_redirects + self.session.max_redirects = 10 + self.page.send_form() + except requests.exceptions.TooManyRedirects: + raise BrowserUnavailable() + finally: + # set the redirection limit back to default + self.session.max_redirects = max_redirects if self.term_page.is_here(): raise ActionNeeded()