diff --git a/modules/banquepopulaire/browser.py b/modules/banquepopulaire/browser.py index 11261dd7f3935c1787c6b7ccee6399a3b40ac255..1c9e7835dbcf27ebb598b665fff409932096c536 100644 --- a/modules/banquepopulaire/browser.py +++ b/modules/banquepopulaire/browser.py @@ -187,10 +187,6 @@ 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() @@ -218,9 +214,17 @@ def do_login(self): if self.home_page.is_here(): return - self.is_password_only_digits = self.password.isdigit() + try: + self.page.login(self.username, self.password) + except BrowserUnavailable as ex: + # HACK: some accounts with legacy password fails (legacy means not only digits). + # The website crashes, even on a web browser. + # So, if we get a specific exception AND if we have a legacy password, + # we raise WrongPass instead of BrowserUnavailable. + if 'Cette page est indisponible' in ex.message and not self.password.isdigit(): + raise BrowserIncorrectPassword() + raise - self.page.login(self.username, self.password) if self.login_page.is_here(): raise BrowserIncorrectPassword() if 'internetRescuePortal' in self.url: diff --git a/modules/banquepopulaire/pages.py b/modules/banquepopulaire/pages.py index afa9ef4e52e9512bac76c5c0914f33c0396b0caa..9186fc040c65fe46b1c3fcb56ffc06bd9bcb6c87 100644 --- a/modules/banquepopulaire/pages.py +++ b/modules/banquepopulaire/pages.py @@ -271,10 +271,6 @@ 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):