diff --git a/modules/bnporc/module.py b/modules/bnporc/module.py index bd5239ed..d60b7566 100644 --- a/modules/bnporc/module.py +++ b/modules/bnporc/module.py @@ -66,8 +66,14 @@ class BNPorcModule(Module, CapBank, CapMessages): def create_default_browser(self): b = {'ppold': BNPorc, 'ent': BNPEnterprise, 'ent2': BNPCompany, 'pp': BNPParibasBrowser} self.BROWSER = b[self.config['website'].get()] - return self.create_browser(self.config['login'].get(), - self.config['password'].get()) + try: + return self.create_browser(self.config['login'].get(), + self.config['password'].get()) + except BNPParibasBrowser.ProAccount: + self.logger.debug('Switching on old website because this is a pro account.') + self.BROWSER = BNPorc + return self.create_browser(self.config['login'].get(), + self.config['password'].get()) def iter_accounts(self): for account in self.browser.get_accounts_list(): diff --git a/modules/bnporc/pp/browser.py b/modules/bnporc/pp/browser.py index 364de533..c027bc67 100644 --- a/modules/bnporc/pp/browser.py +++ b/modules/bnporc/pp/browser.py @@ -74,6 +74,13 @@ class BNPParibasBrowser(CompatMixin, JsonBrowserMixin, LoginBrowser): history = URL('rop-wspl/rest/releveOp', HistoryPage) transfer_init = URL('virement-wspl/rest/initialisationVirement', TransferInitPage) + class ProAccount(Exception): + pass + + def __init__(self, *args, **kwargs): + super(BNPParibasBrowser, self).__init__(*args, **kwargs) + self.do_login() + def switch(self, subdomain): self.BASEURL = self.BASEURL_TEMPLATE % subdomain diff --git a/modules/bnporc/pp/pages.py b/modules/bnporc/pp/pages.py index 25fb1e86..109b2ed2 100644 --- a/modules/bnporc/pp/pages.py +++ b/modules/bnporc/pp/pages.py @@ -109,7 +109,9 @@ class LoginPage(JsonPage): # XXX useless ? csrf = self.generate_token() - self.browser.location(target, data={'AUTH': auth, 'CSRF': csrf}) + response = self.browser.location(target, data={'AUTH': auth, 'CSRF': csrf}) + if response.url.startswith('https://pro.mabanque.bnpparibas'): + raise self.browser.ProAccount() class BNPPage(LoggedPage, JsonPage):