diff options
Diffstat (limited to 'openerp/tools')
| -rw-r--r-- | openerp/tools/mail.py | 2 | ||||
| -rw-r--r-- | openerp/tools/misc.py | 17 |
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) |
