fetch detail of transactions and use it in Transaction.raw

This commit is contained in:
Romain Bignon 2015-03-16 15:43:53 +01:00
commit 406297ac9f
2 changed files with 12 additions and 4 deletions

View file

@ -47,7 +47,9 @@ class LCLBrowser(LoginBrowser):
'/outil/UAUT/Contract/selectContracts.*', '/outil/UAUT/Contract/selectContracts.*',
ContractsPage) ContractsPage)
accounts = URL('/outil/UWSP/Synthese', AccountsPage) accounts = URL('/outil/UWSP/Synthese', AccountsPage)
history = URL('/outil/UWLM/ListeMouvements.*/accesListeMouvements.*', AccountHistoryPage) history = URL('/outil/UWLM/ListeMouvements.*/accesListeMouvements.*',
'/outil/UWLM/DetailMouvement.*/accesDetailMouvement.*',
AccountHistoryPage)
cb_list = URL('/outil/UWCB/UWCBEncours.*/listeCBCompte.*', CBListPage) cb_list = URL('/outil/UWCB/UWCBEncours.*/listeCBCompte.*', CBListPage)
cb_history = URL('/outil/UWCB/UWCBEncours.*/listeOperations.*', CBHistoryPage) cb_history = URL('/outil/UWCB/UWCBEncours.*/listeOperations.*', CBHistoryPage)
skip = URL('/outil/UAUT/Contrat/selectionnerContrat.*', skip = URL('/outil/UAUT/Contrat/selectionnerContrat.*',

View file

@ -29,8 +29,9 @@ from weboob.capabilities.bank import Account
from weboob.browser.elements import method, ListElement, ItemElement, SkipItem from weboob.browser.elements import method, ListElement, ItemElement, SkipItem
from weboob.exceptions import ParseError from weboob.exceptions import ParseError
from weboob.browser.pages import LoggedPage, HTMLPage, FormNotFound from weboob.browser.pages import LoggedPage, HTMLPage, FormNotFound
from weboob.browser.filters.html import Attr
from weboob.browser.filters.standard import CleanText, Field, Regexp, Format, \ from weboob.browser.filters.standard import CleanText, Field, Regexp, Format, \
CleanDecimal, Map CleanDecimal, Map, AsyncLoad, Async
from weboob.exceptions import BrowserUnavailable from weboob.exceptions import BrowserUnavailable
from weboob.tools.capabilities.bank.transactions import FrenchTransaction from weboob.tools.capabilities.bank.transactions import FrenchTransaction
from weboob.tools.captcha.virtkeyboard import MappedVirtKeyboard, VirtKeyboardError from weboob.tools.captcha.virtkeyboard import MappedVirtKeyboard, VirtKeyboardError
@ -188,7 +189,7 @@ class AccountsPage(LoggedPage, HTMLPage):
class Transaction(FrenchTransaction): class Transaction(FrenchTransaction):
PATTERNS = [(re.compile('^(?P<category>CB) (?P<text>RETRAIT) DU (?P<dd>\d+)/(?P<mm>\d+)'), PATTERNS = [(re.compile('^(?P<category>CB) (?P<text>RETRAIT) DU (?P<dd>\d+)/(?P<mm>\d+)'),
FrenchTransaction.TYPE_WITHDRAWAL), FrenchTransaction.TYPE_WITHDRAWAL),
(re.compile('^(?P<category>(PRLV|PE)) (?P<text>.*)'), (re.compile('^(?P<category>(PRLV|PE)( SEPA)?) (?P<text>.*)'),
FrenchTransaction.TYPE_ORDER), FrenchTransaction.TYPE_ORDER),
(re.compile('^(?P<category>CHQ\.) (?P<text>.*)'), (re.compile('^(?P<category>CHQ\.) (?P<text>.*)'),
FrenchTransaction.TYPE_CHECK), FrenchTransaction.TYPE_CHECK),
@ -220,6 +221,7 @@ class AccountHistoryPage(LoggedPage, HTMLPage):
col_raw = [u'Vos opérations', u'Libellé'] col_raw = [u'Vos opérations', u'Libellé']
class item(Transaction.TransactionElement): class item(Transaction.TransactionElement):
load_details = Attr('.', 'href', default=None) & AsyncLoad
def condition(self): def condition(self):
return self.parent.get_colnum('date') is not None and \ return self.parent.get_colnum('date') is not None and \
len(self.el.findall('td')) >= 3 and \ len(self.el.findall('td')) >= 3 and \
@ -227,7 +229,11 @@ class AccountHistoryPage(LoggedPage, HTMLPage):
not 'tableTr' in self.el.get('class') not 'tableTr' in self.el.get('class')
def validate(self, obj): def validate(self, obj):
return obj.category != 'RELEVE CB' if obj.category == 'RELEVE CB':
return
obj.raw = Async('details', CleanText(u'//td[contains(text(), "Libellé")]/following-sibling::*[1]', default=obj.raw))(self)
return True
def get_operations(self): def get_operations(self):
return self._get_operations() return self._get_operations()