diff --git a/modules/myedenred/browser.py b/modules/myedenred/browser.py index 3267f375cf14b6154a6e2e868ff1c8714edbf0b5..363ff03ab189270ca1d4f7ff328117f4c988d6bd 100644 --- a/modules/myedenred/browser.py +++ b/modules/myedenred/browser.py @@ -19,11 +19,13 @@ from __future__ import unicode_literals +from datetime import timedelta + from weboob.browser import LoginBrowser, URL, need_login from weboob.exceptions import BrowserIncorrectPassword -from weboob.tools.capabilities.bank.transactions import merge_iterators -from .pages import LoginPage, AccountsPage, AccountDetailsPage, TransactionsPage +from weboob.tools.date import LinearDateGuesser +from .pages import LoginPage, AccountsPage, AccountDetailsPage, TransactionsPage class MyedenredBrowser(LoginBrowser): BASEURL = 'https://www.myedenred.fr' @@ -55,21 +57,17 @@ def iter_accounts(self): @need_login def iter_history(self, account): - def iter_transactions_by_type(type): - history = self.transactions.go(data={'command': 'Charger les 10 transactions suivantes', - 'ErfBenId': account._product_token, - 'ProductCode': account._product_type, - 'SortBy': 'DateOperation', - 'StartDate': '', - 'EndDate': '', - 'PageNum': 10, - 'OperationType': type, - 'failed': 'false', - 'X-Requested-With': 'XMLHttpRequest' - }) - return history.iter_transactions(subid=account.id) - - if account.id not in self.docs: - iterator = merge_iterators(iter_transactions_by_type(type='Debit'), iter_transactions_by_type(type='Credit')) - self.docs[account.id] = list(iterator) - return self.docs[account.id] + self.transactions.go(data={ + 'command': 'Charger les 10 transactions suivantes', + 'ErfBenId': account._product_token, + 'ProductCode': account._product_type, + 'SortBy': 'DateOperation', + 'StartDate': '', + 'EndDate': '', + 'PageNum': 10, + 'OperationType': 'Default', + 'failed': 'false', + 'X-Requested-With': 'XMLHttpRequest' + }) + for tr in self.page.iter_transactions(subid=account.id, date_guesser=LinearDateGuesser(date_max_bump=timedelta(45))): + yield tr diff --git a/modules/myedenred/pages.py b/modules/myedenred/pages.py index 1918103be307bc43e6f6ac22c62a77b436286cce..009845a1b3b60c7e8b57b106e0ea354621a7bcc4 100644 --- a/modules/myedenred/pages.py +++ b/modules/myedenred/pages.py @@ -19,17 +19,14 @@ from __future__ import unicode_literals - from weboob.browser.pages import HTMLPage, PartialHTMLPage, LoggedPage from weboob.browser.elements import ItemElement, method, ListElement from weboob.browser.filters.standard import ( CleanText, CleanDecimal, - Regexp, DateGuesser, Field + Regexp, DateGuesser, Field, Env ) from weboob.capabilities.bank import Account, Transaction from weboob.capabilities.base import NotAvailable -from weboob.tools.date import LinearDateGuesser -from datetime import timedelta def MyDecimal(*args, **kwargs): @@ -74,7 +71,10 @@ class iter_transactions(ListElement): class item(ItemElement): klass = Transaction - obj_date = DateGuesser(CleanText('.//span[contains(., "/")]'), LinearDateGuesser(date_max_bump=timedelta(45))) + def condition(self): + return CleanText('./td[@class="al-c"]/span')(self) not in ('transaction refusée', 'transaction en cours de traitement') + + obj_date = DateGuesser(CleanText('.//span[contains(., "/")]'), Env('date_guesser')) obj_label = CleanText('.//h3/strong') obj_raw = Field('label') obj_amount = MyDecimal('./td[@class="al-r"]/div/span[has-class("badge")]')