From e52c6d6b18cde6fea994c0ded7715a1804573a20 Mon Sep 17 00:00:00 2001 From: Romain Bignon Date: Sat, 10 Nov 2012 12:51:43 +0100 Subject: [PATCH] handle login errors --- modules/caissedepargne/browser.py | 5 ++++- modules/caissedepargne/pages.py | 9 ++++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/modules/caissedepargne/browser.py b/modules/caissedepargne/browser.py index 109f6dd3..58d56f83 100644 --- a/modules/caissedepargne/browser.py +++ b/modules/caissedepargne/browser.py @@ -22,7 +22,7 @@ from urlparse import urlsplit from weboob.tools.browser import BaseBrowser, BrowserIncorrectPassword -from .pages import LoginPage, IndexPage +from .pages import LoginPage, IndexPage, ErrorPage __all__ = ['CaisseEpargne'] @@ -34,6 +34,7 @@ class CaisseEpargne(BaseBrowser): CERTHASH = '165faeb5bd1bad22bf52029e3c09bf540199402a1fa70aa19e9d5f92d562ff69' PAGES = {'https://[^/]+.caisse-epargne.fr/particuliers/ind_pauthpopup.aspx.*': LoginPage, 'https://[^/]+.caisse-epargne.fr/Portail.aspx': IndexPage, + 'https://[^/]+.caisse-epargne.fr/login.aspx': ErrorPage, } def is_logged(self): @@ -62,6 +63,8 @@ class CaisseEpargne(BaseBrowser): if not self.is_logged(): raise BrowserIncorrectPassword() + if self.is_on_page(ErrorPage): + raise BrowserIncorrectPassword(self.page.get_error()) v = urlsplit(self.page.url) self.DOMAIN = v.netloc diff --git a/modules/caissedepargne/pages.py b/modules/caissedepargne/pages.py index 93ad5079..5a3e9686 100644 --- a/modules/caissedepargne/pages.py +++ b/modules/caissedepargne/pages.py @@ -27,7 +27,7 @@ from weboob.capabilities.bank import Account from weboob.tools.capabilities.bank.transactions import FrenchTransaction -__all__ = ['LoginPage', 'IndexPage'] +__all__ = ['LoginPage', 'ErrorPage', 'IndexPage'] class LoginPage(BasePage): @@ -54,6 +54,13 @@ class LoginPage(BasePage): self.browser.form.action = m.group(1) self.browser.submit(nologin=True) +class ErrorPage(BasePage): + def get_error(self): + try: + return self.parser.select(self.document.getroot(), 'div.messErreur', 1).text.strip() + except BrokenPageError: + return None + class Transaction(FrenchTransaction): PATTERNS = [(re.compile('^CB (?P.*?) FACT (?P
\d{2})(?P\d{2})(?P\d{2})'), FrenchTransaction.TYPE_CARD),