adding pagination support for lcl

This commit is contained in:
Vincent Paredes 2015-04-20 18:41:14 +02:00 committed by Romain Bignon
commit 4113d3406a

View file

@ -28,7 +28,7 @@ from cStringIO import StringIO
from weboob.capabilities.bank import Account 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, pagination
from weboob.browser.filters.html import Attr 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, AsyncLoad, Async CleanDecimal, Map, AsyncLoad, Async
@ -210,11 +210,18 @@ class Transaction(FrenchTransaction):
(re.compile('^(?P<text>(?P<category>TRAIT\..*?)\s*.*)'), FrenchTransaction.TYPE_BANK), (re.compile('^(?P<text>(?P<category>TRAIT\..*?)\s*.*)'), FrenchTransaction.TYPE_BANK),
(re.compile('^(?P<category>REM CHQ) (?P<text>.*)'), FrenchTransaction.TYPE_DEPOSIT), (re.compile('^(?P<category>REM CHQ) (?P<text>.*)'), FrenchTransaction.TYPE_DEPOSIT),
] ]
class Pagination(object):
def next_page(self):
links = self.page.doc.xpath('//div[@class="pagination"] /a')
if len(links) == 0:
return
for link in links:
if link.xpath('./span')[0].text == 'Page suivante':
return link.attrib.get('href')
return
class AccountHistoryPage(LoggedPage, HTMLPage): class AccountHistoryPage(LoggedPage, HTMLPage):
@method class _get_operations(Pagination, Transaction.TransactionsElement):
class _get_operations(Transaction.TransactionsElement):
item_xpath = '//table[has-class("tagTab") and (not(@style) or @style="")]/tr' item_xpath = '//table[has-class("tagTab") and (not(@style) or @style="")]/tr'
head_xpath = '//table[has-class("tagTab") and (not(@style) or @style="")]/tr/th' head_xpath = '//table[has-class("tagTab") and (not(@style) or @style="")]/tr/th'
@ -237,8 +244,9 @@ class AccountHistoryPage(LoggedPage, HTMLPage):
obj.raw = raw obj.raw = raw
return True return True
@pagination
def get_operations(self): def get_operations(self):
return self._get_operations() return self._get_operations(self)()
class CBHistoryPage(AccountHistoryPage): class CBHistoryPage(AccountHistoryPage):