summaryrefslogtreecommitdiff
path: root/openerp/tools/misc.py
diff options
context:
space:
mode:
Diffstat (limited to 'openerp/tools/misc.py')
-rw-r--r--openerp/tools/misc.py17
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)