diff options
| author | Christophe Simonis <chs@openerp.com> | 2014-01-10 13:54:33 +0100 |
|---|---|---|
| committer | Christophe Simonis <chs@openerp.com> | 2014-01-10 13:54:33 +0100 |
| commit | 7dd16a558eab6f71db0f77bf6ff07170201ffaa7 (patch) | |
| tree | 6a85dd195e74fd2215815fa01ace9db02668bcaa /addons/decimal_precision/decimal_precision.py | |
| parent | 3ed5b49e7a51b96ad7df37e33a2cd5ff8363ae89 (diff) | |
[FIX] decimal_precision: signal workers to restart their registry when decimal precision change.
bzr revid: chs@openerp.com-20140110125433-soimmrpz2icvob60
Diffstat (limited to 'addons/decimal_precision/decimal_precision.py')
| -rw-r--r-- | addons/decimal_precision/decimal_precision.py | 20 |
1 files changed, 13 insertions, 7 deletions
diff --git a/addons/decimal_precision/decimal_precision.py b/addons/decimal_precision/decimal_precision.py index d4d3d29dce0..890a57a998b 100644 --- a/addons/decimal_precision/decimal_precision.py +++ b/addons/decimal_precision/decimal_precision.py @@ -22,6 +22,7 @@ from openerp import SUPERUSER_ID from openerp import pooler, tools from openerp.osv import osv, fields +from openerp.modules.registry import RegistryManager class decimal_precision(osv.osv): _name = 'decimal.precision' @@ -43,23 +44,28 @@ class decimal_precision(osv.osv): res = cr.fetchone() return res[0] if res else 2 + def clear_cache(self, cr): + """clear cache and update models. Notify other workers to restart their registry.""" + self.precision_get.clear_cache(self) + for obj in self.pool.obj_list(): + for colname, col in self.pool.get(obj)._columns.items(): + if isinstance(col, (fields.float, fields.function)): + col.digits_change(cr) + RegistryManager.signal_registry_change(cr.dbname) + def create(self, cr, uid, data, context=None): res = super(decimal_precision, self).create(cr, uid, data, context=context) - self.precision_get.clear_cache(self) + self.clear_cache(cr) return res def unlink(self, cr, uid, ids, context=None): res = super(decimal_precision, self).unlink(cr, uid, ids, context=context) - self.precision_get.clear_cache(self) + self.clear_cache(cr) return res def write(self, cr, uid, ids, data, *args, **argv): res = super(decimal_precision, self).write(cr, uid, ids, data, *args, **argv) - self.precision_get.clear_cache(self) - for obj in self.pool.obj_list(): - for colname, col in self.pool.get(obj)._columns.items(): - if isinstance(col, (fields.float, fields.function)): - col.digits_change(cr) + self.clear_cache(cr) return res decimal_precision() |
