diff options
Diffstat (limited to 'openerp/tools/misc.py')
| -rw-r--r-- | openerp/tools/misc.py | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/openerp/tools/misc.py b/openerp/tools/misc.py index b924ccf17c7..15a47c7ba74 100644 --- a/openerp/tools/misc.py +++ b/openerp/tools/misc.py @@ -991,14 +991,15 @@ def dumpstacks(sig=None, frame=None): _logger.info("\n".join(code)) def freehash(arg): - if isinstance(arg, Mapping): - return hash(frozendict(arg)) - elif isinstance(arg, Iterable): - return hash(frozenset(arg)) - elif isinstance(arg, Hashable): + try: return hash(arg) - else: - return id(arg) + except Exception: + if isinstance(arg, Mapping): + return hash(frozendict(arg)) + elif isinstance(arg, Iterable): + return hash(frozenset(map(freehash, arg))) + else: + return id(arg) class frozendict(dict): """ An implementation of an immutable dictionary. """ @@ -1088,7 +1089,7 @@ def formatLang(env, value, digits=None, grouping=True, monetary=False, dp=False, lang = env.user.company_id.partner_id.lang or 'en_US' lang_objs = env['res.lang'].search([('code', '=', lang)]) if not lang_objs: - lang_objs = env['res.lang'].search([('code', '=', 'en_US')]) + lang_objs = env['res.lang'].search([], limit=1) lang_obj = lang_objs[0] res = lang_obj.format('%.' + str(digits) + 'f', value, grouping=grouping, monetary=monetary) |
