From c450ffde06711b27ae8d087636687761576df1af Mon Sep 17 00:00:00 2001 From: Romain Bignon Date: Fri, 9 Sep 2011 09:53:28 +0200 Subject: [PATCH] parse special cases --- .../backends/bnporc/pages/account_history.py | 20 ++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/weboob/backends/bnporc/pages/account_history.py b/weboob/backends/bnporc/pages/account_history.py index 904be673..4774fb97 100644 --- a/weboob/backends/bnporc/pages/account_history.py +++ b/weboob/backends/bnporc/pages/account_history.py @@ -18,16 +18,20 @@ # along with weboob. If not, see . +import re from datetime import date from weboob.tools.browser import BasePage from weboob.capabilities.bank import Operation +from weboob.capabilities.base import NotAvailable __all__ = ['AccountHistory'] class AccountHistory(BasePage): + LABEL_PATTERNS = [(u'^CHEQUEN°(?P.*)', u'CHEQUE', u'N°%(no)s')] + def on_loaded(self): self.operations = [] @@ -44,11 +48,21 @@ class AccountHistory(BasePage): if child.text: label += child.text if child.tail: label += child.tail if tds[1].tail: label += tds[1].tail + label = label.strip() + category = NotAvailable + for pattern, _cat, _lab in self.LABEL_PATTERNS: + m = re.match(pattern, label) + if m: + category = _cat % m.groupdict() + label = _lab % m.groupdict() + break + else: + if ' ' in label: + category, useless, label = [part.strip() for part in label.partition(' ')] + amount = tds[2].text.replace('.', '').replace(',', '.') - (category, useless, label) = label.partition(' ') - category = category.strip() - label = label.strip() + # if we don't have exactly one '.', this is not a floatm try the next operation = Operation(len(self.operations)) if amount.count('.') != 1: