load ISIN code from details page if not available in the list

This commit is contained in:
Romain Bignon 2015-09-06 12:08:21 +02:00
commit ba02773ce1
3 changed files with 13 additions and 6 deletions

View file

@ -26,7 +26,7 @@ from weboob.capabilities.bank import Account, TransferError, AccountNotFound
from weboob.capabilities.base import find_object from weboob.capabilities.base import find_object
from .pages import AccountsList, LoginPage, NetissimaPage, TitrePage, TitreHistory,\ from .pages import AccountsList, LoginPage, NetissimaPage, TitrePage, TitreHistory,\
TransferPage, TransferConfirmPage, BillsPage, StopPage, TitreDetails TransferPage, TransferConfirmPage, BillsPage, StopPage, TitreDetails, TitreValuePage
__all__ = ['IngBrowser'] __all__ = ['IngBrowser']
@ -61,6 +61,7 @@ class IngBrowser(LoginBrowser):
titrepage = URL('https://bourse.ingdirect.fr/priv/portefeuille-TR.php', TitrePage) titrepage = URL('https://bourse.ingdirect.fr/priv/portefeuille-TR.php', TitrePage)
titrehistory = URL('https://bourse.ingdirect.fr/priv/compte.php\?ong=3', TitreHistory) titrehistory = URL('https://bourse.ingdirect.fr/priv/compte.php\?ong=3', TitreHistory)
titrerealtime = URL('https://bourse.ingdirect.fr/streaming/compteTempsReelCK.php', TitrePage) titrerealtime = URL('https://bourse.ingdirect.fr/streaming/compteTempsReelCK.php', TitrePage)
titrevalue = URL('https://bourse.ingdirect.fr/priv/fiche-valeur.php\?val=(?P<val>.*)&popup=1', TitreValuePage)
# CapBill # CapBill
billpage = URL('/protected/pages/common/estatement/eStatement.jsf', BillsPage) billpage = URL('/protected/pages/common/estatement/eStatement.jsf', BillsPage)

View file

@ -22,7 +22,7 @@ from .accounts_list import AccountsList, TitreDetails
from .login import LoginPage, StopPage from .login import LoginPage, StopPage
from .transfer import TransferPage, TransferConfirmPage from .transfer import TransferPage, TransferConfirmPage
from .bills import BillsPage from .bills import BillsPage
from .titre import NetissimaPage, TitrePage, TitreHistory from .titre import NetissimaPage, TitrePage, TitreHistory, TitreValuePage
class AccountPrelevement(AccountsList): class AccountPrelevement(AccountsList):
@ -30,4 +30,5 @@ class AccountPrelevement(AccountsList):
__all__ = ['AccountsList', 'LoginPage', 'NetissimaPage','TitreDetails', __all__ = ['AccountsList', 'LoginPage', 'NetissimaPage','TitreDetails',
'AccountPrelevement', 'TransferPage', 'TransferConfirmPage', 'AccountPrelevement', 'TransferPage', 'TransferConfirmPage',
'BillsPage', 'StopPage', 'TitrePage', 'TitreHistory'] 'BillsPage', 'StopPage', 'TitrePage', 'TitreHistory',
'TitreValuePage']

View file

@ -35,6 +35,11 @@ class Transaction(FrenchTransaction):
pass pass
class TitreValuePage(LoggedPage, HTMLPage):
def get_isin(self):
return self.doc.xpath('//div[@id="headFiche"]//span[@id="test3"]/text()')[0].split(' - ')[0].strip()
class TitrePage(LoggedPage, RawPage): class TitrePage(LoggedPage, RawPage):
def iter_investments(self): def iter_investments(self):
# We did not get some html, but something like that (XX is a quantity, YY a price): # We did not get some html, but something like that (XX is a quantity, YY a price):
@ -49,9 +54,9 @@ class TitrePage(LoggedPage, RawPage):
_id = columns[0].split('{')[2] _id = columns[0].split('{')[2]
invest = Investment(_id) invest = Investment(_id)
invest.label = unicode(columns[0].split('{')[-1]) invest.label = unicode(columns[0].split('{')[-1])
invest.code = _id.split(':')[0] invest.code = unicode(_id)
if ':' in _id: if ':' in invest.code:
invest.description = unicode(_id.split(':')[1]) invest.code = self.browser.titrevalue.open(val=invest.code).get_isin()
quantity = FrenchTransaction.clean_amount(columns[1]) quantity = FrenchTransaction.clean_amount(columns[1])
if quantity != '': if quantity != '':
invest.quantity = Decimal(quantity) invest.quantity = Decimal(quantity)