summaryrefslogtreecommitdiff
path: root/openerp/tools
diff options
context:
space:
mode:
authorChristophe Simonis <chs@odoo.com>2015-12-10 13:05:58 +0100
committerChristophe Simonis <chs@odoo.com>2015-12-10 13:05:58 +0100
commit82a495eed52a9f42e5b88caa52c20a85f8d81ce3 (patch)
tree6c5e8cc0247d5fe08d24e9abae38fe353fbebc56 /openerp/tools
parent0bc2ddae784bf80c4c809d8b7f6d642d576f92a1 (diff)
parent4022493c0b85f966e499b6c03ac7cce5556f15e6 (diff)
[MERGE] forward port of branch saas-7 up to 4022493
Diffstat (limited to 'openerp/tools')
-rw-r--r--openerp/tools/mail.py2
-rw-r--r--openerp/tools/misc.py17
2 files changed, 10 insertions, 9 deletions
diff --git a/openerp/tools/mail.py b/openerp/tools/mail.py
index 9b02076627e..5f82df93af9 100644
--- a/openerp/tools/mail.py
+++ b/openerp/tools/mail.py
@@ -316,7 +316,7 @@ def html_email_clean(html, remove=False, shorten=False, max_length=300, expand_o
root = lxml.html.fromstring(inner_html)
quote_tags = re.compile(r'(\n(>)+[^\n\r]*)')
- signature = re.compile(r'([-]{2,}[\s]?[\r\n]{1,2}[\s\S]+)')
+ signature = re.compile(r'(^[-]{2,}[\s]?[\r\n]{1,2}[\s\S]+)', re.M)
for node in root.iter():
# remove all tails and replace them by a span element, because managing text and tails can be a pain in the ass
if node.tail:
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)