use a local instance of LinearDateGuesser instead of global one

When giving LinearDateGuesser instance to DateGuesser at Page's
declaration, that'll be the SAME object for all the life-time of the
module. So when listing transactions of a second account, the first taken
date is the date of the oldest transaction of the first account!
This commit is contained in:
Romain Bignon 2015-01-13 16:59:13 +01:00
commit 87070bf05a
4 changed files with 15 additions and 13 deletions

View file

@ -24,6 +24,7 @@ from itertools import chain
from weboob.exceptions import BrowserHTTPError, BrowserIncorrectPassword
from weboob.browser import LoginBrowser, URL, need_login
from weboob.tools.date import LinearDateGuesser
from .pages import LoginPage, AccountsPage, HistoryPage
@ -71,4 +72,6 @@ class CmsoProBrowser(LoginBrowser):
first_page = self.page
rest_page = self.history.go(data=query)
return chain(first_page.iter_history(), rest_page.iter_history())
date_guesser = LinearDateGuesser()
return chain(first_page.iter_history(date_guesser=date_guesser), rest_page.iter_history(date_guesser=date_guesser))

View file

@ -22,10 +22,9 @@ import datetime
from weboob.browser.pages import HTMLPage, LoggedPage
from weboob.browser.elements import ListElement, ItemElement, method
from weboob.browser.filters.standard import CleanText, CleanDecimal, Regexp, DateGuesser
from weboob.browser.filters.standard import CleanText, CleanDecimal, Regexp, DateGuesser, Env
from weboob.browser.filters.html import Link
from weboob.capabilities.bank import Account
from weboob.tools.date import LinearDateGuesser
from ..transaction import Transaction
@ -71,10 +70,10 @@ class CmsoTransactionElement(ItemElement):
class HistoryPage(LoggedPage, HTMLPage):
def iter_history(self):
def iter_history(self, *args, **kwargs):
if self.doc.xpath('//a[@href="1-situationGlobaleProfessionnel.act"]'):
return self.iter_history_rest_page()
return self.iter_history_first_page()
return self.iter_history_rest_page(*args, **kwargs)
return self.iter_history_first_page(*args, **kwargs)
@method
class iter_history_first_page(CmsoListElement):
@ -83,7 +82,7 @@ class HistoryPage(LoggedPage, HTMLPage):
return obj.date >= datetime.date.today().replace(day=1)
def date(selector):
return DateGuesser(CleanText(selector), LinearDateGuesser()) | Transaction.Date(selector)
return DateGuesser(CleanText(selector), Env('date_guesser')) | Transaction.Date(selector)
obj_date = date('./td[1]')
obj_vdate = date('./td[2]')