From d1a19387808f2e7defd2499aa10a0da05304885f Mon Sep 17 00:00:00 2001 From: Romain Bignon Date: Tue, 1 Jul 2014 20:38:09 +0200 Subject: [PATCH] fix sort of transactions It now sorts transactions on each page instead of doing it globally --- modules/oney/browser.py | 3 +-- modules/oney/pages.py | 16 +++++++++++++--- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/modules/oney/browser.py b/modules/oney/browser.py index 1850f42d39..430269f09b 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 8e39ae14fb..0d557f2367 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) - - -- GitLab