support Banque BCP which uses same website than caissedepargne

This commit is contained in:
Romain Bignon 2015-04-03 16:58:22 +02:00
commit 9a9f061beb
2 changed files with 19 additions and 11 deletions

View file

@ -33,16 +33,17 @@ __all__ = ['CaisseEpargne']
class CaisseEpargne(Browser): class CaisseEpargne(Browser):
DOMAIN = 'www.caisse-epargne.fr' DOMAIN = 'www.caisse-epargne.fr'
PROTOCOL = 'https' PROTOCOL = 'https'
CERTHASH = ['dfff27d6db1fcdf1cea3ab8e3c1ca4f97c971262e95be49f3385b40c97fe640c', '9894ab2088630f341de821a09f1286c525f854f62ac186bd442368b4692c5969'] CERTHASH = ['dfff27d6db1fcdf1cea3ab8e3c1ca4f97c971262e95be49f3385b40c97fe640c', '9894ab2088630f341de821a09f1286c525f854f62ac186bd442368b4692c5969', '0e0fa585a8901c206c4ebbc7ee33e00e17809d7086f224e1b226c46165a4b5ac']
PAGES = {'https://[^/]+.caisse-epargne.fr/particuliers/ind_pauthpopup.aspx.*': LoginPage, PAGES = {'https://[^/]+/particuliers/ind_pauthpopup.aspx.*': LoginPage,
'https://[^/]+.caisse-epargne.fr/Portail.aspx': IndexPage, 'https://[^/]+/Portail.aspx': IndexPage,
'https://[^/]+.caisse-epargne.fr/login.aspx': ErrorPage, 'https://[^/]+/login.aspx': ErrorPage,
'https://[^/]+.caisse-epargne.fr/Pages/logout.aspx.*': ErrorPage, 'https://[^/]+/Pages/logout.aspx.*': ErrorPage,
'https://[^/]+.caisse-epargne.fr/page_hs_dei_.*.aspx': UnavailablePage, 'https://[^/]+/page_hs_dei_.*.aspx': UnavailablePage,
} }
def __init__(self, nuser, *args, **kwargs): def __init__(self, nuser, *args, **kwargs):
self.nuser = nuser self.nuser = nuser
self.DOMAIN = kwargs.pop('domain', self.DOMAIN)
Browser.__init__(self, *args, **kwargs) Browser.__init__(self, *args, **kwargs)
def _certhash(self, domain, port=443): def _certhash(self, domain, port=443):
@ -72,7 +73,7 @@ class CaisseEpargne(Browser):
self._ua_handlers['_cookies'].cookiejar.clear() self._ua_handlers['_cookies'].cookiejar.clear()
if not self.is_on_page(LoginPage): if not self.is_on_page(LoginPage):
self.location('https://www.caisse-epargne.fr/particuliers/ind_pauthpopup.aspx?mar=101&reg=&fctpopup=auth&cv=0', no_login=True) self.location(self.buildurl('/particuliers/ind_pauthpopup.aspx?mar=101&reg=&fctpopup=auth&cv=0'), no_login=True)
self.page.login(self.username) self.page.login(self.username)
if not self.page.login2(self.nuser, self.password): if not self.page.login2(self.nuser, self.password):

View file

@ -21,6 +21,7 @@
from weboob.capabilities.bank import CapBank, AccountNotFound from weboob.capabilities.bank import CapBank, AccountNotFound
from weboob.tools.backend import Module, BackendConfig from weboob.tools.backend import Module, BackendConfig
from weboob.tools.value import Value, ValueBackendPassword from weboob.tools.value import Value, ValueBackendPassword
from weboob.tools.ordereddict import OrderedDict
from .browser import CaisseEpargne from .browser import CaisseEpargne
@ -35,15 +36,21 @@ class CaisseEpargneModule(Module, CapBank):
VERSION = '1.1' VERSION = '1.1'
DESCRIPTION = u'Caisse d\'Épargne' DESCRIPTION = u'Caisse d\'Épargne'
LICENSE = 'AGPLv3+' LICENSE = 'AGPLv3+'
CONFIG = BackendConfig(ValueBackendPassword('login', label='Identifiant client', masked=False), website_choices = OrderedDict([(k, u'%s (%s)' % (v, k)) for k, v in sorted({
'www.caisse-epargne.fr': u'Caisse d\'Épargne',
'www.banquebcp.fr': u'Banque BCP',
}.iteritems(), key=lambda k_v: (k_v[1], k_v[0]))])
CONFIG = BackendConfig(Value('website', label='Banque', choices=website_choices, default='www.caisse-epargne.fr'),
ValueBackendPassword('login', label='Identifiant client', masked=False),
ValueBackendPassword('password', label='Code personnel', regexp='\d+'), ValueBackendPassword('password', label='Code personnel', regexp='\d+'),
Value('nuser', label='User ID (optional)', default='')) Value('nuser', label='User ID (optional)', default=''))
BROWSER = CaisseEpargne BROWSER = CaisseEpargne
def create_default_browser(self): def create_default_browser(self):
return self.create_browser(self.config['nuser'].get(), return self.create_browser(nuser=self.config['nuser'].get(),
self.config['login'].get(), username=self.config['login'].get(),
self.config['password'].get()) password=self.config['password'].get(),
domain=self.config['website'].get())
def iter_accounts(self): def iter_accounts(self):
with self.browser: with self.browser: