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:
parent
920583eae7
commit
87070bf05a
4 changed files with 15 additions and 13 deletions
|
|
@ -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))
|
||||
|
|
|
|||
|
|
@ -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]')
|
||||
|
|
|
|||
|
|
@ -20,6 +20,7 @@
|
|||
|
||||
from weboob.browser import LoginBrowser, URL, need_login
|
||||
from weboob.exceptions import BrowserIncorrectPassword
|
||||
from weboob.tools.date import LinearDateGuesser
|
||||
|
||||
from .pages import LoginPage, LoginErrorPage, AvoirPage, OperationsTraiteesPage, OperationsFuturesPage
|
||||
|
||||
|
|
@ -50,12 +51,12 @@ class GroupamaesBrowser(LoginBrowser):
|
|||
|
||||
@need_login
|
||||
def get_history(self):
|
||||
transactions = list(self.operations_traitees.go().get_history())
|
||||
transactions = list(self.operations_traitees.go().get_history(date_guesser=LinearDateGuesser()))
|
||||
transactions.sort(key=lambda tr: tr.rdate, reverse=True)
|
||||
return transactions
|
||||
|
||||
@need_login
|
||||
def get_coming(self):
|
||||
transactions = list(self.operations_futures.go().get_list())
|
||||
transactions = list(self.operations_futures.go().get_list(date_guesser=LinearDateGuesser()))
|
||||
transactions.sort(key=lambda tr: tr.rdate, reverse=True)
|
||||
return transactions
|
||||
|
|
|
|||
|
|
@ -20,9 +20,8 @@
|
|||
|
||||
from weboob.browser.pages import HTMLPage, LoggedPage
|
||||
from weboob.browser.elements import TableElement, ItemElement, method
|
||||
from weboob.browser.filters.standard import CleanText, CleanDecimal, TableCell, Date
|
||||
from weboob.browser.filters.standard import CleanText, CleanDecimal, TableCell, Date, Env
|
||||
from weboob.capabilities.bank import Account, Transaction
|
||||
from weboob.tools.date import LinearDateGuesser
|
||||
|
||||
|
||||
class LoginPage(HTMLPage):
|
||||
|
|
@ -74,7 +73,7 @@ class OperationsFuturesPage(LoggedPage, HTMLPage):
|
|||
def condition(self):
|
||||
return u'Aucune opération en attente' not in CleanText(TableCell('date'))(self)
|
||||
|
||||
obj_date = Date(CleanText(TableCell('date')), LinearDateGuesser())
|
||||
obj_date = Date(CleanText(TableCell('date')), Env('date_guesser'))
|
||||
obj_type = Transaction.TYPE_UNKNOWN
|
||||
obj_label = CleanText(TableCell('operation'))
|
||||
obj_amount = CleanDecimal(TableCell('montant'), replace_dots=True)
|
||||
|
|
@ -96,7 +95,7 @@ class OperationsTraiteesPage(LoggedPage, HTMLPage):
|
|||
def condition(self):
|
||||
return u'Aucune opération' not in CleanText(TableCell('date'))(self)
|
||||
|
||||
obj_date = Date(CleanText(TableCell('date')), LinearDateGuesser())
|
||||
obj_date = Date(CleanText(TableCell('date')), Env('date_guesser'))
|
||||
obj_type = Transaction.TYPE_UNKNOWN
|
||||
obj_label = CleanText(TableCell('operation'))
|
||||
obj_amount = CleanDecimal(TableCell('montant'), replace_dots=True)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue