From fca3ef45a14fb533f87aa0fc1b49db1c99326b1b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Wed, 27 Aug 2008 17:35:00 +0200 Subject: [PATCH] Add formatting fields --- currency.py | 64 ++++++++++++++++++++++++++++++++ currency.xml | 101 +++++++++++++++++++++++++++++++++++++++------------ 2 files changed, 142 insertions(+), 23 deletions(-) diff --git a/currency.py b/currency.py index 2d55fbcbe6..231c6724d7 100644 --- a/currency.py +++ b/currency.py @@ -20,11 +20,28 @@ class Currency(OSV): digits = fields.Integer('Diplay Digits') active = fields.Boolean('Active') + # monetary formatting + mon_grouping = fields.Char('mon_grouping', required=True) + mon_decimal_point = fields.Char('mon_decimal_point', required=True) + mon_thousands_sep = fields.Char('mon_thousands_sep') + p_sign_posn = fields.Integer('p_sign_posn') + n_sign_posn = fields.Integer('n_sign_posn') + negative_sign = fields.Char('negative_sign') + positive_sign = fields.Char('positive_sign') + p_cs_precedes = fields.Boolean('p_cs_precedes') + n_cs_precedes = fields.Boolean('n_cs_precedes') + p_sep_by_space = fields.Boolean('p_sep_by_space') + n_sep_by_space = fields.Boolean('n_sep_by_space') + def __init__(self): super(Currency, self).__init__() self._order.insert(0, ('code', 'ASC')) + self._constraints += [ + ('check_mon_grouping', 'invalid_mon_grouping'), + ] self._error_messages.update({ 'no_rate': 'No rate found for the currency: %s at the date: %s', + 'invalid_grouping': 'Invalid Grouping!', }) def default_active(self, cursor, user, context=None): @@ -36,6 +53,53 @@ class Currency(OSV): def default_digits(self, cursor, user, context=None): return 2 + def default_mon_grouping(self, cursor, user, context=None): + return '[]' + + def default_mon_thousands_sep(self, cursor, user, context=None): + return ',' + + def default_mon_decimal_point(self, cursor, user, context=None): + return '.' + + def default_p_sign_posn(self, cursor, user, context=None): + return 1 + + def default_n_sign_posn(self, cursor, user, context=None): + return 1 + + def default_negative_sign(self, cursor, user, context=None): + return '-' + + def default_positive_sign(self, cursor, user, context=None): + return '' + + def default_p_cs_precedes(self, cursor, user, context=None): + return True + + def default_n_cs_precedes(self, cursor, user, context=None): + return True + + def default_p_sep_by_space(self, cursor, user, context=None): + return False + + def default_n_sep_by_space(self, cursor, user, context=None): + return False + + def check_mon_grouping(self, cursor, user, ids): + ''' + Check if mon_grouping is list of numbers + ''' + for currency in self.browse(cursor, user, ids): + try: + grouping = eval(currency.mon_grouping) + for i in grouping: + if not isinstance(i, int): + return False + except: + return False + return True + def name_search(self, cursor, user, name, args=None, operator='ilike', context=None, limit=None): if args is None: diff --git a/currency.xml b/currency.xml index 011730f506..325b04a3c3 100644 --- a/currency.xml +++ b/currency.xml @@ -27,31 +27,64 @@