From 6e7219bdced62600a3433e5d1102db634914015d Mon Sep 17 00:00:00 2001 From: Helmut Merz Date: Thu, 8 Mar 2012 15:30:01 +0100 Subject: [PATCH] provide decimal field with locale-dependent formatting --- expert/field.py | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/expert/field.py b/expert/field.py index 7c50b60..5664c54 100644 --- a/expert/field.py +++ b/expert/field.py @@ -39,6 +39,25 @@ class TextField(Field): return row.parent.context.view.renderText(value, self.format) +class DecimalField(Field): + + format = '###,###,##0.##' + + def getDisplayValue(self, row): + value = self.getRawValue(row) + if not value: + return u'' + if not isinstance(value, float): + value = float(value) + nv = row.parent.context.view.nodeView + langInfo = nv and getattr(nv, 'languageInfo', None) or None + if langInfo: + locale = locales.getLocale(langInfo.language) + fmt = locale.numbers.getFormatter('decimal') + return fmt.format(value) + return '%.2f' % value + + class DateField(Field): format = ('date', 'short')