From 4d5b84a2a83f0a217ca77fcf0ab63002153e26ac Mon Sep 17 00:00:00 2001 From: Florent Date: Tue, 30 Jul 2013 10:35:25 +0200 Subject: [PATCH] Move Currency from ICapBank to ICapBase --- modules/ing/pages/accounts_list.py | 3 +- weboob/capabilities/bank.py | 50 +----------------------------- weboob/capabilities/base.py | 49 +++++++++++++++++++++++++++++ 3 files changed, 52 insertions(+), 50 deletions(-) diff --git a/modules/ing/pages/accounts_list.py b/modules/ing/pages/accounts_list.py index 225cdfb0..1aa66d01 100644 --- a/modules/ing/pages/accounts_list.py +++ b/modules/ing/pages/accounts_list.py @@ -23,7 +23,8 @@ from datetime import date, timedelta import re import hashlib -from weboob.capabilities.bank import Account, Currency, Transaction +from weboob.capabilities.base import Currency +from weboob.capabilities.bank import Account, Transaction from weboob.capabilities.base import NotAvailable from weboob.tools.browser import BasePage from weboob.tools.capabilities.bank.transactions import FrenchTransaction diff --git a/weboob/capabilities/bank.py b/weboob/capabilities/bank.py index 37904b5d..e144f3a9 100644 --- a/weboob/capabilities/bank.py +++ b/weboob/capabilities/bank.py @@ -24,7 +24,7 @@ from binascii import crc32 from weboob.tools.ordereddict import OrderedDict -from .base import CapBaseObject, Field, StringField, DateField, DecimalField, IntField, UserError +from .base import CapBaseObject, Field, StringField, DateField, DecimalField, IntField, UserError, Currency from .collection import ICapCollection @@ -46,54 +46,6 @@ class TransferError(UserError): """ -class Currency(object): - CUR_UNKNOWN = 0 - CUR_EUR = 1 - CUR_CHF = 2 - CUR_USD = 3 - - TXT2CUR = OrderedDict(((u'€', CUR_EUR), - (u'EUR', CUR_EUR), - (u'CHF', CUR_CHF), - (u'$', CUR_USD), - (u'USD', CUR_USD), - )) - - EXTRACTOR = re.compile(r'[\d\s,\.\-]', re.UNICODE) - - @classmethod - def get_currency(klass, text): - u""" - >>> Currency.get_currency(u'42') - 0 - >>> Currency.get_currency(u'42 €') - 1 - >>> Currency.get_currency(u'$42') - 3 - >>> Currency.get_currency(u'42.000,00€') - 1 - >>> Currency.get_currency(u'$42 USD') - 3 - >>> Currency.get_currency(u'%42 USD') - 3 - >>> Currency.get_currency(u'US1D') - 0 - """ - curtexts = klass.EXTRACTOR.sub(' ', text.upper()).split() - for curtext in curtexts: - cur = klass.TXT2CUR.get(curtext) - if cur is not None: - return cur - return klass.CUR_UNKNOWN - - @classmethod - def currency2txt(klass, currency): - for txt, value in klass.TXT2CUR.iteritems(): - if value == currency: - return txt - return u'' - - class Recipient(CapBaseObject): """ Recipient of a transfer. diff --git a/weboob/capabilities/base.py b/weboob/capabilities/base.py index a1f2024f..1683f112 100644 --- a/weboob/capabilities/base.py +++ b/weboob/capabilities/base.py @@ -20,6 +20,7 @@ import warnings import datetime +import re from decimal import Decimal from copy import deepcopy, copy @@ -424,3 +425,51 @@ class CapBaseObject(object): fields_iterator = self.iter_fields() return OrderedDict(iter_decorate(fields_iterator)) + + +class Currency(object): + CUR_UNKNOWN = 0 + CUR_EUR = 1 + CUR_CHF = 2 + CUR_USD = 3 + + TXT2CUR = OrderedDict(((u'€', CUR_EUR), + (u'EUR', CUR_EUR), + (u'CHF', CUR_CHF), + (u'$', CUR_USD), + (u'USD', CUR_USD), + )) + + EXTRACTOR = re.compile(r'[\d\s,\.\-]', re.UNICODE) + + @classmethod + def get_currency(klass, text): + u""" + >>> Currency.get_currency(u'42') + 0 + >>> Currency.get_currency(u'42 €') + 1 + >>> Currency.get_currency(u'$42') + 3 + >>> Currency.get_currency(u'42.000,00€') + 1 + >>> Currency.get_currency(u'$42 USD') + 3 + >>> Currency.get_currency(u'%42 USD') + 3 + >>> Currency.get_currency(u'US1D') + 0 + """ + curtexts = klass.EXTRACTOR.sub(' ', text.upper()).split() + for curtext in curtexts: + cur = klass.TXT2CUR.get(curtext) + if cur is not None: + return cur + return klass.CUR_UNKNOWN + + @classmethod + def currency2txt(klass, currency): + for txt, value in klass.TXT2CUR.iteritems(): + if value == currency: + return txt + return u''