correctly handle 500 error during login

This commit is contained in:
Romain Bignon 2014-10-28 11:31:36 +01:00
commit 3ec1ca1eda
2 changed files with 9 additions and 7 deletions

View file

@ -22,6 +22,7 @@ import datetime
from dateutil.relativedelta import relativedelta from dateutil.relativedelta import relativedelta
from itertools import chain from itertools import chain
from weboob.exceptions import BrowserHTTPError, BrowserIncorrectPassword
from weboob.browser import LoginBrowser, URL, need_login from weboob.browser import LoginBrowser, URL, need_login
from .pages import LoginPage, AccountsPage, HistoryPage from .pages import LoginPage, AccountsPage, HistoryPage
@ -36,7 +37,14 @@ class CmsoProBrowser(LoginBrowser):
def do_login(self): def do_login(self):
self.login.stay_or_go() self.login.stay_or_go()
self.page.login(self.username, self.password) try:
self.page.login(self.username, self.password)
except BrowserHTTPError as e:
# Yes, I know... In the Wild Wild Web, nobody respects nothing
if e.response.status_code == 500:
raise BrowserIncorrectPassword()
else:
raise
@need_login @need_login
def get_accounts_list(self): def get_accounts_list(self):

View file

@ -21,7 +21,6 @@
import datetime import datetime
from weboob.browser.pages import HTMLPage, LoggedPage from weboob.browser.pages import HTMLPage, LoggedPage
from weboob.exceptions import BrowserIncorrectPassword
from weboob.browser.elements import ListElement, ItemElement, method from weboob.browser.elements import ListElement, ItemElement, method
from weboob.browser.filters.standard import CleanText, CleanDecimal, Regexp, DateGuesser from weboob.browser.filters.standard import CleanText, CleanDecimal, Regexp, DateGuesser
from weboob.browser.filters.html import Link from weboob.browser.filters.html import Link
@ -33,11 +32,6 @@ __all__ = ['LoginPage']
class LoginPage(HTMLPage): class LoginPage(HTMLPage):
def on_load(self):
# Yes, I know... In the Wild Wild Web, nobody respects nothing
if self.response.status_code == 500:
raise BrowserIncorrectPassword()
def login(self, username, password): def login(self, username, password):
form = self.get_form(name='formIdentification') form = self.get_form(name='formIdentification')