configurable floats

bzr revid: fp@tinyerp.com-20100306205154-beaovrdjiykvl823
This commit is contained in:
Fabien Pinckaers
2010-03-06 21:51:54 +01:00
parent 81390b783d
commit 88eecd2f79
2 changed files with 11 additions and 6 deletions
+10 -5
View File
@@ -630,11 +630,9 @@ class function(_column):
if 'relation' in args:
self._obj = args['relation']
if 'digits' in args:
self.digits = args['digits']
else:
self.digits = (16,2)
self.digits = args.get('digits', (16,2))
self.digits_compute = args.get('digits_compute', None)
self._fnct_inv_arg = fnct_inv_arg
if not fnct_inv:
self.readonly = 1
@@ -656,6 +654,13 @@ class function(_column):
self._symbol_f = float._symbol_f
self._symbol_set = float._symbol_set
def digits_change(self, cr):
if self.digits_compute:
t = self.digits_compute(cr)
self._symbol_set=('%s', lambda x: ('%.'+str(t[1])+'f') % (__builtin__.float(x or 0.0),))
self.digits = t
def search(self, cr, uid, obj, name, args, context=None):
if not self._fnct_search:
#CHECKME: should raise an exception
+1 -1
View File
@@ -2296,7 +2296,7 @@ class orm(orm_template):
self._columns = self._columns.copy()
for store_field in self._columns:
f = self._columns[store_field]
if isinstance(f, fields.float):
if hasattr(f, 'digits_change'):
f.digits_change(cr)
if not isinstance(f, fields.function):
continue