Add the history for Livret A account (ing)
Signed-off-by: Florent <weboob@flo.fourcot.fr> Signed-off-by: Romain Bignon <romain@peerfuse.org>
This commit is contained in:
parent
15e6e19e16
commit
91cfedb247
3 changed files with 45 additions and 8 deletions
|
|
@ -32,7 +32,8 @@ class Ing(BaseBrowser):
|
||||||
PAGES = {'.*displayTRAccountSummary.*': pages.AccountsList,
|
PAGES = {'.*displayTRAccountSummary.*': pages.AccountsList,
|
||||||
'.*displayLogin.jsf': pages.LoginPage,
|
'.*displayLogin.jsf': pages.LoginPage,
|
||||||
'.*displayLogin.jsf.*': pages.LoginPage2,
|
'.*displayLogin.jsf.*': pages.LoginPage2,
|
||||||
'.*accountDetail.jsf.*': pages.AccountHistory
|
'.*accountDetail.jsf.*': pages.AccountHistoryCC,
|
||||||
|
'.*displayTRHistoriqueLA.*': pages.AccountHistoryLA
|
||||||
}
|
}
|
||||||
|
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
|
|
@ -78,8 +79,15 @@ class Ing(BaseBrowser):
|
||||||
return None
|
return None
|
||||||
|
|
||||||
def get_history(self, id):
|
def get_history(self, id):
|
||||||
# TODO: It works only with the Compte Courant, Livret A use an another page...
|
account = self.get_account(id)
|
||||||
self.location('https://secure.ingdirect.fr/protected/pages/cc/accountDetail.jsf')
|
# The first and the second letter of the label are the account type
|
||||||
|
if account.label[0:2] == "CC":
|
||||||
|
self.location('https://secure.ingdirect.fr/protected/pages/cc/accountDetail.jsf')
|
||||||
|
elif account.label[0:2] == "LA":
|
||||||
|
# we want "displayTRHistoriqueLA" but this fucking page is not directly available...
|
||||||
|
self.location('https://secure.ingdirect.fr/general?command=goToAccount&account=%d&zone=COMPTE' % int(id))
|
||||||
|
else:
|
||||||
|
raise NotImplementedError()
|
||||||
return self.page.get_operations()
|
return self.page.get_operations()
|
||||||
|
|
||||||
# TODO
|
# TODO
|
||||||
|
|
|
||||||
|
|
@ -19,10 +19,10 @@
|
||||||
|
|
||||||
|
|
||||||
from .accounts_list import AccountsList
|
from .accounts_list import AccountsList
|
||||||
from .account_history import AccountHistory
|
from .account_history import AccountHistoryCC, AccountHistoryLA
|
||||||
from .login import LoginPage, LoginPage2, ConfirmPage, MessagePage
|
from .login import LoginPage, LoginPage2, ConfirmPage, MessagePage
|
||||||
|
|
||||||
class AccountPrelevement(AccountsList): pass
|
class AccountPrelevement(AccountsList): pass
|
||||||
|
|
||||||
__all__ = ['AccountsList', 'AccountHistory', 'LoginPage', 'LoginPage2',
|
__all__ = ['AccountsList', 'AccountHistoryCC', 'AccountHistoryLA', 'LoginPage', 'LoginPage2',
|
||||||
'ConfirmPage', 'MessagePage', 'AccountPrelevement']
|
'ConfirmPage', 'MessagePage', 'AccountPrelevement']
|
||||||
|
|
|
||||||
|
|
@ -22,12 +22,12 @@ from datetime import date
|
||||||
|
|
||||||
from weboob.tools.browser import BasePage
|
from weboob.tools.browser import BasePage
|
||||||
from weboob.capabilities.bank import Operation
|
from weboob.capabilities.bank import Operation
|
||||||
|
from weboob.capabilities.base import NotAvailable
|
||||||
|
|
||||||
|
__all__ = ['AccountHistoryCC', 'AccountHistoryLA']
|
||||||
|
|
||||||
|
|
||||||
__all__ = ['AccountHistory']
|
class AccountHistoryCC(BasePage):
|
||||||
|
|
||||||
|
|
||||||
class AccountHistory(BasePage):
|
|
||||||
|
|
||||||
def on_loaded(self):
|
def on_loaded(self):
|
||||||
self.operations = []
|
self.operations = []
|
||||||
|
|
@ -49,3 +49,32 @@ class AccountHistory(BasePage):
|
||||||
|
|
||||||
def get_operations(self):
|
def get_operations(self):
|
||||||
return self.operations
|
return self.operations
|
||||||
|
|
||||||
|
class AccountHistoryLA(BasePage):
|
||||||
|
|
||||||
|
def on_loaded(self):
|
||||||
|
self.operations = []
|
||||||
|
i = 1
|
||||||
|
history = self.document.xpath('//tr[@align="center"]')
|
||||||
|
history.pop(0)
|
||||||
|
for tr in history:
|
||||||
|
id = i
|
||||||
|
texte = tr.text_content().strip().split('\n')
|
||||||
|
op = Operation(id)
|
||||||
|
# The size is not the same if there are two dates or only one
|
||||||
|
length = len(texte)
|
||||||
|
op.label = unicode(texte[length - 2].strip())
|
||||||
|
op.date = date(*reversed([int(x) for x in texte[0].split('/')]))
|
||||||
|
op.category = NotAvailable
|
||||||
|
|
||||||
|
amount = texte[length - 1].replace('\t','').strip().replace('.', '').replace(u'€', '').replace(',', '.').replace(u'\xa0', u'')
|
||||||
|
op.amount = float(amount)
|
||||||
|
|
||||||
|
|
||||||
|
self.operations.append(op)
|
||||||
|
i += 1
|
||||||
|
|
||||||
|
|
||||||
|
def get_operations(self):
|
||||||
|
return self.operations
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue