From e1ff565a318d7c1f9580b98e175e69b0a0c5718e Mon Sep 17 00:00:00 2001 From: Jerome Berthier Date: Thu, 4 Jul 2019 14:55:04 +0200 Subject: [PATCH] [banquepopulaire] do not raise BrowserIncorrectPassword with legacy passwords It still works for some people, so instead of raising an error, we wait for the website to crash then we raise a BrowserIncorrectPassword if it uses a legacy password. --- modules/banquepopulaire/browser.py | 7 +++++++ modules/banquepopulaire/pages.py | 4 ++++ 2 files changed, 11 insertions(+) diff --git a/modules/banquepopulaire/browser.py b/modules/banquepopulaire/browser.py index dd93b64742..11261dd7f3 100644 --- a/modules/banquepopulaire/browser.py +++ b/modules/banquepopulaire/browser.py @@ -187,6 +187,10 @@ def __init__(self, website, *args, **kwargs): self.investments = {} + # HACK, the website may crash with legacy passwords (legacy means not only digits) + # If the website crashes and if we have a legacy password, we raise WrongPass instead of BrowserUnavailable + self.is_password_only_digits = None + def deinit(self): super(BanquePopulaire, self).deinit() self.linebourse.deinit() @@ -213,6 +217,9 @@ def do_login(self): # avoids trying to relog in while it's already on home page if self.home_page.is_here(): return + + self.is_password_only_digits = self.password.isdigit() + self.page.login(self.username, self.password) if self.login_page.is_here(): raise BrowserIncorrectPassword() diff --git a/modules/banquepopulaire/pages.py b/modules/banquepopulaire/pages.py index 9186fc040c..afa9ef4e52 100644 --- a/modules/banquepopulaire/pages.py +++ b/modules/banquepopulaire/pages.py @@ -271,6 +271,10 @@ def on_load(self): class ErrorPage(LoggedPage, MyHTMLPage): def on_load(self): + # HACK: some accounts with legacy password fails, people needs to update it + if not self.browser.is_password_only_digits: + raise BrowserIncorrectPassword() + if CleanText('//script[contains(text(), "momentanément indisponible")]')(self.doc): raise BrowserUnavailable(u"Le service est momentanément indisponible") elif CleanText('//h1[contains(text(), "Cette page est indisponible")]')(self.doc): -- GitLab