From d3389faa8856ca3333782df38577380e415a35af Mon Sep 17 00:00:00 2001 From: Ilyas Semmaoui Date: Tue, 16 Mar 2021 12:42:47 +0100 Subject: [PATCH] [banquepopulaire] raise BrowserUnavailable for unavailable account history --- modules/banquepopulaire/browser.py | 8 +++++++- modules/banquepopulaire/pages.py | 5 +++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/modules/banquepopulaire/browser.py b/modules/banquepopulaire/browser.py index f744335e6e..c67926655d 100644 --- a/modules/banquepopulaire/browser.py +++ b/modules/banquepopulaire/browser.py @@ -48,7 +48,7 @@ LineboursePage, AlreadyLoginPage, InvestmentPage, NewLoginPage, JsFilePage, AuthorizePage, LoginTokensPage, VkImagePage, AuthenticationMethodPage, AuthenticationStepPage, CaissedepargneVirtKeyboard, - AccountsNextPage, GenericAccountsPage, InfoTokensPage, + AccountsNextPage, GenericAccountsPage, InfoTokensPage, NatixisUnavailablePage, ) from .document_pages import BasicTokenPage, SubscriberPage, SubscriptionsPage, DocumentsPage from .linebourse_browser import LinebourseAPIBrowser @@ -237,6 +237,10 @@ class BanquePopulaire(LoginBrowser): r'https://www.assurances.natixis.fr/etna-ihs-bp/#/equipement;codeEtab=.*\?windowId=.*', NatixisErrorPage ) + natixis_unavailable_page = URL( + r'https://www.assurances.natixis.fr/espaceinternet-bp/page500.xhtml', + NatixisUnavailablePage + ) natixis_invest = URL( r'https://www.assurances.natixis.fr/espaceinternet-bp/rest/v2/contratVie/load/(?P\w+)/(?P\w+)/(?P\w+)', NatixisInvestPage @@ -936,6 +940,8 @@ def get_invest_history(self, account): except ServerError: return else: + if self.natixis_unavailable_page.is_here(): + raise BrowserUnavailable(self.page.get_message()) history = list(self.page.get_history()) history.sort(reverse=True, key=lambda item: item.date) for tr in history: diff --git a/modules/banquepopulaire/pages.py b/modules/banquepopulaire/pages.py index 34a824213e..d6071058c4 100644 --- a/modules/banquepopulaire/pages.py +++ b/modules/banquepopulaire/pages.py @@ -1274,6 +1274,11 @@ class NatixisErrorPage(LoggedPage, HTMLPage): pass +class NatixisUnavailablePage(LoggedPage, HTMLPage): + def get_message(self): + return CleanText('//label')(self.doc) + + class IbanPage(LoggedPage, MyHTMLPage): def need_to_go(self): return len(self.doc.xpath('//div[@class="grid"]/div/span[contains(text(), "IBAN")]')) == 0 -- GitLab