diff --git a/modules/oney/browser.py b/modules/oney/browser.py index 1850f42d395b8472f6f5a8bb6904b2b88c222395..430269f09b201473de41ff57fcd04c53d922141f 100644 --- a/modules/oney/browser.py +++ b/modules/oney/browser.py @@ -62,5 +62,4 @@ def iter_history(self, account): post = {'task': 'Synthese', 'process': 'SyntheseCompte', 'taskid':'Releve'} self.operations.go(data=post) - return sorted(self.page.iter_transactions(), key=lambda tr: tr.rdate, reverse=True) - + return self.page.iter_transactions(seen=set()) diff --git a/modules/oney/pages.py b/modules/oney/pages.py index 8e39ae14fbd91c31caf618aba159795b3e87538d..0d557f2367f92bcd00d41e42e048e13354963134 100644 --- a/modules/oney/pages.py +++ b/modules/oney/pages.py @@ -120,7 +120,19 @@ class OperationsPage(LoggedPage, HTMLPage): @pagination @method class iter_transactions(ListElement): - item_xpath = '//div[@id = "releve-reserve-credit"]//table/tbody/tr' + item_xpath = '//table[@class="tableau-releve"]/tbody/tr[not(node()//span[@class="solde-initial"])]' + flush_at_end = True + + def flush(self): + # As transactions are unordered on the page, we flush only at end + # the sorted list of them. + return sorted(self.objects.itervalues(), key=lambda tr: tr.rdate, reverse=True) + + def store(self, obj): + # It stores only objects with an ID. To be sure it works, use the + # uid of transaction as object ID. + obj.id = obj.unique_id(seen=self.env['seen']) + return ListElement.store(self, obj) class credit(ItemElement): klass = Transaction @@ -150,5 +162,3 @@ def next_page(self): if options: data = {'numReleve':options[0].values(),'task':'Releve','process':'Releve','eventid':'select','taskid':'','hrefid':'','hrefext':''} return requests.Request("POST", self.page.url, data=data) - -