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]