From 0d7928187bd25ecc284753e6abd2b5215b53949e Mon Sep 17 00:00:00 2001 From: Fabien Pinckaers Date: Thu, 18 Dec 2008 20:41:14 +0100 Subject: [PATCH] improved_cache_system bzr revid: fp@tinyerp.com-20081218194114-luni7m4gly8zsrdb --- bin/addons/base/ir/ir_translation.py | 1 + bin/tools/misc.py | 51 ++++++++++++++++++++++------ 2 files changed, 42 insertions(+), 10 deletions(-) diff --git a/bin/addons/base/ir/ir_translation.py b/bin/addons/base/ir/ir_translation.py index 0e9e28ddeed..f5beb9475b5 100644 --- a/bin/addons/base/ir/ir_translation.py +++ b/bin/addons/base/ir/ir_translation.py @@ -79,6 +79,7 @@ class ir_translation(osv.osv): cr.execute('CREATE INDEX ir_translation_lts ON ir_translation (lang, type, src)') cr.commit() + @tools.cache(skiparg=3) def _get_ids(self, cr, uid, name, tt, lang, ids): translations = {} if ids: diff --git a/bin/tools/misc.py b/bin/tools/misc.py index ebf0606601d..7936db55c00 100644 --- a/bin/tools/misc.py +++ b/bin/tools/misc.py @@ -542,11 +542,20 @@ class cache(object): self.timeout = timeout self.skiparg = skiparg self.multi = multi + self.lasttime = time.time() self.cache = {} def __call__(self, fn): arg_names = inspect.getargspec(fn)[0][self.skiparg:] + def cached_result(self2, cr=None, *args, **kwargs): + if time.time()-self.timeout > self.lasttime: + self.lasttime = time.time() + t = time.time()-self.timeout + for key in self.cache: + if self.cache[key][1]